最近在学习VR Vive,今天研究了一下一些狙击的小游戏,发现现在普遍的狙击类的游戏都是通过鼠标或者键盘点击来获取瞄准镜,这个思路和VR是不符的。在VR中,应当和现实一样,通过狙击枪的望远镜进行瞄准。于是,我进行了一些研究。
我在网上查了不少Unity放大镜、望远镜等等的制作方法,发现都是通过改变摄像机的位置或者改变Camera中Projection下的参数来改变屏幕的视野。但是这些在VR中实现都有各种各样的缺点,会改变整个屏幕的视野而不是我们想要的区域的放大,或者可能产生穿透物体的情况。
这里我采用双摄像机的做法。
首先在望远镜前段Create一个新的Camera,用于获取放大后的区域的视野,改小Field of View的值,减小视野范围,屏幕大小不变,得到放大物体、“望远”的效果。
然后新建一个RenderTexture,用于获取上面Camera的的图像,得到放大后的画面。方法是将RenderTexture拖到Camera的Target Texture中。

最后将RenderTexture制作成一个材质球,在望远镜前端Create一个Plane,并使用该材质球作为材质,改变Plane的大小和方向,使之与望远镜更切合。


至此,VR望远镜就制作成功了,在VR游戏运行过程中,还可以通过修改Field of View的值来改变放大倍数。关于瞄准精度,可以通过在Plane上增加额外的贴纸,或者使用射线方法制作红外线瞄准等方法解决。
我在网上查了不少Unity放大镜、望远镜等等的制作方法,发现都是通过改变摄像机的位置或者改变Camera中Projection下的参数来改变屏幕的视野。但是这些在VR中实现都有各种各样的缺点,会改变整个屏幕的视野而不是我们想要的区域的放大,或者可能产生穿透物体的情况。
这里我采用双摄像机的做法。
首先在望远镜前段Create一个新的Camera,用于获取放大后的区域的视野,改小Field of View的值,减小视野范围,屏幕大小不变,得到放大物体、“望远”的效果。

然后新建一个RenderTexture,用于获取上面Camera的的图像,得到放大后的画面。方法是将RenderTexture拖到Camera的Target Texture中。


最后将RenderTexture制作成一个材质球,在望远镜前端Create一个Plane,并使用该材质球作为材质,改变Plane的大小和方向,使之与望远镜更切合。


至此,VR望远镜就制作成功了,在VR游戏运行过程中,还可以通过修改Field of View的值来改变放大倍数。关于瞄准精度,可以通过在Plane上增加额外的贴纸,或者使用射线方法制作红外线瞄准等方法解决。
本文介绍了一种适用于VR游戏中的望远镜制作方法,通过设置双摄像机实现目标放大效果,具体步骤包括创建缩小视野的前置Camera、利用RenderTexture获取图像并将其显示在虚拟望远镜前端的平面上。
&spm=1001.2101.3001.5002&articleId=72853165&d=1&t=3&u=3a037fe3d3ad448d9229fce15fe2eb32)
2390

被折叠的 条评论
为什么被折叠?



