Skip to main content

VRC(以及几乎所有类似游戏)的镜子是如何工作的

光线追踪?

咱们的电脑/头显/手机(所有能够运行vrc的设备)肯定没高端到能够使用光线追踪如此精确的反射物体的样子,当你透过镜子观察其他物体时你会发现其他物体的分辨率就和自己所看到的游戏画面一样清晰,二话不说先排除光线追踪科技。

image.png

反射探针?

反射探针基本都是预烘焙好的,这意味着反射探针存储的画面不会是动态的,所以不可能是静态反射探针。诚然,使用动态的反射探针可以做到反射大致的动态物体,但反射探针的作用是给周围场景截个图,再将其作用到能够反射物体的材质上,让反射探针的截图如此的高清且高帧率将耗费十分亏贼的性能,我们的设备又不是开不起镜子,所以镜子的实现也不是这个方法。

image.png

摄像机!!

猜对啦,用的就是 摄像机魔术,让我们开动脑子回忆在初中阶段学习过的光线反射知识,再结合一张让人秒懂的图就可以非常粗略的解释镜子的实现方式,这也可以解释为什么打开镜子会导致你的性能受到不小的打击,因为你在镜子中看到的所有画面是被摄像机二次渲染出来的。

image.png

 

再详细一点?

在你的视角(玩家摄像头)和镜子之间画一个相对于镜子的垂直线,并按照你与镜子的距离向后同等距离延伸,克隆一个摄像头,效果如图。

92cb24b5954af6bf9dcc2e36471efce7.png

现在,克隆摄像头所看到的所有画面都是你在镜子中应该看到的内容。

画板 255.png

接下来再将摄像头看到的画面根据镜子大小做适当裁切,再翻转一下印在镜子的位置上,一个上好的镜子就做好了。

画板 257.png