旋转VR相机不头晕:一个反直觉的发现
来源:互联网 发布:咖啡游戏源码 编辑:程序博客网 时间:2024/04/29 04:43
旋转VR相机不头晕:一个反直觉的发现
本文章由cartzhang编写,转载请注明出处。 所有权利保留。
文章链接:http://blog.csdn.net/cartzhang/article/details/50547422
作者:cartzhang
目前为止,对所有VR开发者来说一个明确建议:你可以使用传统游戏杆移动VR相机位置,但是任何水平方向上旋转(鼠标视角或摇杆旋转)都会引起玩家不适。
如上所说,我找到一个方法,当平滑旋转时,玩家不会有任何不适。
一、适用场景
玩家在太空中漂浮,在他前面有个很大的行星在旋转。在行星表面有成千上万的对象(树,建筑物)。如你所想,当行星旋转,在行星表面的对象跟着它旋转。
这会产生一个工程问题。行星表面的每个对象一次绘制调用——这非常消耗性能的。静态批处理可以减少行星表面数百个对象为一个整体网格,一次绘制调用。但是静态批量只在对象不运动情况下可执行。因为行星上旋转的,行星上所有的对象很明显都在转换。理想情况,行星及其表面对象是静态的,不旋转的。
二、解决方案
让玩家绕着行星旋转,而不是旋转行星及其的表面对象。
因为玩家在太空中的一个固定的地方,你也需要旋转天空盒(我使用一个星云立体贴图)。使用此法,玩家不会感觉到任何旋转或移动。而是,看起来像行星在旋转,玩家是静止的。然而,对游戏引擎来说,成千的对象可被静态批处理,性能会有极大提升。
我们可做进一步处理。使用行星原点(不是玩家原点)作为旋转中心轴,玩家可以使用摇杆来控制绕着行星旋转。当玩家旋转摇杆,对引擎来说,玩家改变了他自己绕着行星原点的位置。但是,对玩家来说,看起来就是他控制行星,手动转动它,他不用做物理移动就可以看到行星的任何地方。
有趣的是,位置跟踪允许玩家站立在行星上行走,坐着的玩家只需要“旋转”行星来代替。
这样的结果:行星上成千上万对象的渲染——作为静态对象而旋转玩家,不会引起不适。
三、重点导读
摇杆的偏航旋转令人头晕,但是绕着不同的原点旋转在固定帧率下感觉不错。这个方法可行,多亏了旋转天空盒和玩家对行星旋转的直觉感受。大脑分不清天空盒和玩家绕着行星旋转。对大脑来说,最合逻辑的感觉是我们希望是:行星旋转。
四、译者说明
【译者说明:本方法目前只适用于星球之类的游戏。再说,星球游戏大家需要在不同速度旋转的话,也不太好使用。若只可以使用一个基本的旋转,其他的都相对其旋转,这样不知道,会不会减弱眩晕。故此,意思就是要减少场景中动态的对象,减到最少。个人理解,仅供参考】
原帖地址:http://dshankar.svbtle.com/vr-camera-rotation-without-nausea-a-counterintuitive-discovery
若有问题,请随时联系!
非常感谢!!
- 旋转VR相机不头晕:一个反直觉的发现
- 一个反直觉数学题的程序验证
- 辛普森悖论:一个反直觉的统计现象
- 二十世纪最“反直觉”的伟大生物学发现:化学渗透(chemiosmosis)
- 10大反直觉的数学结论
- 用c语言做的简易的动态显示直方图和一个有趣的反直觉财富分配实验
- 科学中的直觉和反直觉
- Linux 发现了一个好玩的东西, 反引号``
- 让你头晕的VR头显,背后发生了什么?
- 一个旋转立方体和以立方体为目标的旋转相机
- 最近做java做得有点头晕,发现一种更好的技术CGI
- Android-四元数-控制VR设备的旋转
- 2017-07-17 DBA日记,凭直觉发现CRSDG的磁盘问题及处理
- 令人头晕的jdbc~
- 发现一个不知道是不是VS2005的bug?
- 学习c++其实有点反直觉
- VR开发中,一个游戏对象绕着某目标旋转
- 头晕
- hihocoder #1185 : 连通性·三
- ios推送证书制作
- 冒泡排序bubbleSort
- 【Ogre引擎架构】 第十二讲 粒子系统-飘雪之国
- Excel事件触发VBA配置 - 名称管理器下拉菜单选项事件
- 旋转VR相机不头晕:一个反直觉的发现
- java.util.regex
- iOS-App提交App Store上线被拒原因--审核指南中文版
- 前端知识
- android Ubuntu adb: cannot execute binary file: 可执行文件格式错误
- 2016-1-20(document.createEvent事件模拟)
- Android Material Design之Toolbar与Palette实践
- ios 处理图片拉伸
- Key有序的Map