无论是虚拟现实还是混合现实,要为任何一个“现实”开发内容,你需要的不仅仅只是一个优秀的开发平台。对于熟悉开发传统屏幕3D环境的开发者而言,VR和MR在性能,用户体验,热量和续航管理,以及调试方面提出了独特的挑战。在今天这篇高通博文中,我们将探讨这一系列的挑战,从而帮助你步入沉浸式虚拟现实的开发世界。以下是映维网的具体整理:
1. 渲染与性能
如果在VR设备上渲染虚拟世界听起来令人生畏,你可以放心,因为你可以充分利用现有的大部分3D渲染知识。几何图像和对象剔除,网格简化,以及通过深度缓冲和模板缓冲等机制避免过度绘制,这只是可以应用于VR的部分基本3D渲染技术而已。
VR和3D渲染的主要区别在于设备本身。例如,VR头显需要承担比传统平面屏幕更多的责任。它需要检测用户的运动(以及实现眼动追踪),执行渲染,并且协调两者以提供逼真的虚拟视图,同时反映出如同真实世界般的细节与响应水平。
VR设备基本上是围绕用户眼睛创建一个视口,其视图相对较小,在正确的位置能提供合适的细节级别。
这最好是通过为眼睛的不同部分渲染不同级别的细节来实现,这一过程称为“注视点渲染”。注视点渲染可以是静态,其中注视点每个区域的细节水平保持固定;注视点渲染同样可以是动态,其中细节水平会出现变化。
在某些系统上,这种优化可以令渲染性能提高20%,而对于某些API,这一切只需对几行代码进行调整。
2. UX设计
高质量的沉浸式VR对用户和系统都可以是十分“高强度”。一般而言,你应该瞄准“一口大小”的简短体验,有部分开发者就认为5分钟是理想的时间长度。对性能要求苛刻的情景通常需要你高负荷运行,而要求较低的场景则允许设备和用户稍稍放松。为了适应这种情况,游戏/应用设计师应该围绕较小持续时间的体验来规划内容,故事情节和虚拟环境。
另一个主要考量因素是将大型虚拟空间映射至可用的物理空间。当前的VR要求用户在可能小于虚拟空间的物理空间内移动,而系统主要是通过各种运动传感器和动捕装置捕捉用户运动。对于涵盖旋转和平移的六自由度运动,建议你首先在游戏或应用程序中预先警告用户有关这类物理空间限制的信息。
处理映射还有很多选项,但一种简单的方法是计算可用的物理空间,然后在用户在导航期间接近边界时淡入黑色。你同时可以显示说明用户已到达边界的屏幕元素(如消息)。
最后的考虑涉及晕动症,当渲染视图与用户动作不同步时,用户可能会遭遇晕动症的影响。所以为了确保用户的舒适度,渲染性能在VR开发中必不可少,同时建议你将渲染性能提升至90FPS或以上。围绕上面提到的“一口大小”体验进行开发也会有所帮助。
3. 设备发热与电量管理
电量消耗,以及因渲染和计算操作产生的热量是所有移动和可穿戴设备都需要面对的问题,特别是对于佩戴在用户面部的VR头显。因此,在游戏/应用程序的整个开发周期中监控这一方面至关重要。你可以使用各种工具来分析热数据和其他资源,如GPU和CPU功率频率。
4. 调试
在VR头显等设备上调试游戏/应用程序可能会影响你查看PC屏幕,以及通过键盘调用调试命令。要克服问题,你需要在项目的早期进行一定的创意规划,下面的想法或许能给你提供一定的灵感:
将调试信息添加到视口中。但请注意,VR头显的“屏幕空间”很少,因此叠加层难以阅读。但是,像FPS计数器和温度这样的简单指标应该没有什么问题。
使用Snapdragon Profiler的实时捕捉功能可支持你在游戏/应用程序中记录指标。
请咨询设备的第三方/OEM厂商,了解他们为调试提供的工具。
建立替代的移动机制,例如在开发过程中使用游戏手柄。
构建可在PC上查看的游戏/应用附加视口(近似于头显视图)。然后,你可以使用替代游戏机制,又或者是请求其他开发者使用头显,而你则专注于调试。
将远程传送等“作弊方法”添加到另一个虚拟空间,这样你在开发过程中就能快速导航至环境的不同部分。
来源:yivian