旋转VR相机不头晕:一个反直觉的发现

目前为止,对所有VR开发者来说一个明确建议:你可以使用传统游戏手柄移动VR相机位置,但是任何水平方向上旋转(鼠标视角或摇杆旋转)都会引起玩家不适。

如上所说,我找到一个方法,当平滑旋转时,玩家不会有任何不适。

适用场景

玩家在太空中漂浮,在他前面有个很大的行星在旋转。在行星表面有成千上万的对象(树,建筑物)。如你所想,当行星旋转,在行星表面的对象跟着它旋转。

这会产生一个工程问题。行星表面的每个对象都会导致一次绘制调用——这非常消耗性能的。静态批处理可以减少行星表面数百个对象为一个整体网格,只需一次绘制调用。但静态批处理只在对象不运动情况下可执行。因为行星是旋转的,行星上所有的对象很明显都在转换。理想情况是行星及其表面对象是静态的,不旋转的。

解决方案

让玩家绕着行星旋转,而不是旋转行星及其的表面对象。

因为玩家在太空中的一个固定位置,所以也需要旋转天空盒(我用的是一个星云立体贴图)。使用此办法,玩家不会感觉到任何旋转或移动。而是,看起来像行星在旋转,玩家是静止的。然而,对游戏引擎来说,静态批处理大量对象,性能会有极大提升。

我们可做进一步处理。使用行星原点(不是玩家原点)作为旋转中心轴,玩家可以使用手柄来控制绕着行星旋转。当玩家旋转摇杆,对引擎来说,玩家改变了他自己绕着行星原点的位置。但是,对玩家来说,看起来就是他控制行星,手动转动它,他不用做物理移动就可以看到行星的任何地方。

有趣的是,位置跟踪允许玩家站立在行星上行走,坐着的玩家只需要“旋转”行星来代替。

这样的结果是:行星上成千上万对象的渲染——作为静态对象而旋转玩家,不会引起不适。

重点导读

摇杆的偏航旋转令人头晕,但是绕着不同的原点旋转在固定帧率下感觉不错。这个方法可行,多亏了旋转天空盒和玩家对行星旋转的直觉感受。大脑分不清天空盒和玩家绕着行星旋转。对大脑来说,最合逻辑的感觉是我们希望是:行星旋转。

【译者说明:本方法目前只适用于星球之类的游戏。再说,星球游戏大家需要在不同速度旋转的话,也不太好使用。若只可以使用一个基本的旋转,其他的都相对其旋转,这样不知道,会不会减弱眩晕。故此,意思就是要减少场景中动态的对象,减到最少。个人理解,仅供参考】

联系方式:0755-81699111

课程网址: http://www.vrkuo.com/course/vr.html

你可能感兴趣的:(旋转VR相机不头晕:一个反直觉的发现)