unity3d VR___________通过移动和旋转父物体,来使子物体始终在指定的位置上并且保持指定的角度

开发过VR的朋友想必都遇到过(尤其是Htc-Vive),明明自己在VR游戏内将玩家控制器放到了一个默认的特定视角,但真正运行游戏的时候,位置总是跑偏。尤其是环境周围有其他物体或墙壁的话,甚至有可能把玩家视角一运行就卡在里面。造成这个现象的原因和简单,是因为玩家带着头盔会在现实空间中乱跑乱转向,导致出现的位置偏差。

开发VR软件时,SDK会自带有一个预制体,这个预制体有一个根节点父物体,下面有相机子物体。相机子物体是被硬件传感器控制的,用代码是不可能修改其位置和旋转的。所以一般设置默认视角,都是把父物体拖到特定位置的。而这个父物体是和VR定位空间的中心点对应的;子物体相机相对于父物体的偏移,对应的是你现实空间中VR头盔和定位空间中心点的偏移。只有保证头盔始终在定位空间中心点并且正前方朝向一致时,才能在每一次启动游戏时达到你在游戏中给设置的默认视角。

但现在问题来了,你在现实中启动游戏时,不可能让玩家郑重其事的找到中心点来启动。所以我们必须解决这个问题。思路就是,通过对根节点父物体的旋转、位移,来让VR相机那个子物体可以无视现实空间偏移量,总是保持默认视角。

表达能力不行,下面直接上代码吧。我想真的有人碰到过这个问题的话,应该能领会到我想表达的意思。

 

来源:纪纯

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年5月7日
下一篇 2020年5月7日

相关推荐