入门VR游戏开发者在Unreal Engine 4上开始VR设计所需要知道的
游戏开发者
VR2048(vr2048) · -01-12 18:38
首先,不要被标题吓到,这其实是一篇面向游戏开发者的入门科普文章,对于有致于开发VR游戏的初学者来说,这是一篇不错的UE 4入门体验的文章。用最快的速度了解UE4 引擎在VR游戏中可以实现什么效果和一些基本的性能调试方法。
如今,人们对于VR的讨论越来越多,但是,每天却有越来越多人参与到VR的发展中来。这一指南适用于那些专为Unreal Engine 4开发VR的人使用,并且可以提供各种不同的资料,包括Epic Games的官方文档,以及涵盖了蓝图和C++的内容。
请注意,VR仍然是全新的课题,每个新版本都会扩充VR的内容。所以,如果有可能,我们强力推荐使用最新版本。官方Oculus论坛、官方VR文档页面和Unreal Engine VR分论坛都是查看你版本的好去处。
如果你正在寻找让你马上着手开始设计的VR模板,请访问GitHub Repository: /tomlooman/VRTemplates。那些模板目前适用于拥有各种摄像以及移动控制功能的C++ 和Blueprint,后来可以转化为了可编辑内置的模板。
1.设置你的VR设备
根据该指南,我会假设你已经成功安装了头戴式可选择的显示器。本文是以HTC VIVE作为例子,Oculus其实也是一样的。
Unreal Engine 4支持各种主流设备,所以你没必要多此一举,设置你的VR项目。你只需在Edit > Plugins下,确保你的头戴显示器插件是否加载成功。
在启动编辑器之前,确保你的VR软件是否运行,如果是Vive,将会是SteamVR应用。
Vive具体情况:一旦你启动编辑器,SteamVR或许会显示“Not Ready”,这表示有设备冲突的情况,有东西阻碍编辑器分辨率达到60FPS,导致了抖动和晕车。关于这个问题的更多信息解决方法请在AnswerHub Thread (/questions/296531/vive-locked-at-60-fps.html)上寻找。下一次在使用Vive时不会出现这样情况了,因为他们成为显示屏的直接模块。
2.启动VR预览版
测试你的VR设置非常简单,只需在播放下拉按钮,选择“VR预览”。默认情况下,头部跟踪会立即生效,而无需改变现有项目或模板。我将讲诉更多如何添加额外功能的细节,如运动控制器设置和重置来源。该指南后面都有讲诉。
3.最佳VR实践
VR仍然是未全部开发的领域,随着每天的发展,我们不断学习新的东西。
Oculus (/documentation/intro-vr/latest/concepts/bp_intro/)和Epic Games(/latest/INT/Platforms/VR/ContentSetup/index.html) 都设置了最佳VR实践指南。我推荐你们仔细阅读,并在发开VR游戏是,常常反思。
4.在Blueprint上使用VR
在蓝图使用VR是非常简单,你不需要太多设置,然后才开始工作。
您将需要一个摄像头组件和可选的一个或两个运动控制器组件。默认情况下,你的相机已经设置为HMD支持,如果您希望禁用的HMD旋转的变化,你可以组件的属性中选择“Lock to HMD”。想要得到更多关于运动控制器的信息,你可以游览该指南或者流浪官方文件页,了解怎么设置运动控制器(/latest/INT/Platforms/VR/MotionController/index.html)。
下面是蓝图可用的节点。
重置你头盔的位置或方向
选择合适的功能,能检测你头盔是否能工作
4.1 SteamVR Chaperone
Chaperone组件是SteamVR专属,可以方便连接软边界。软边界呈现为以HMD为原点(0,0,0)的向量阵列。所述载体的Z分量始终为零。你可以从下列看到,你添加这些组件,就像添加ActorComponent到Blueprint一样。
4.2 设置运动控制器
官方的文件对于运动控制器设置(/latest/INT/Platforms/VR/MotionController/index.html)以及输入处理的讲诉很清楚,如果你的VR支持运动控制器,那么我推荐你根据下列文件步骤走。根据这一实例,在GitHub上检查我的VR模板(/tomlooman/VRTemplates)。
如果您无法用相机对准你的运动控制器,只需把SceneComponent当做“VR原点”即可。当你的根组件在CharacterBlueprint上产生像CapsuleComponent一样的问题,那么这种方法特别好用。
5.在C++上使用VR
由于4.11并不是所有的功能都适用于Blueprint,如果你正在努力实现高级定制,那么你需要深入了解C++,来进行一些设置。检查头戴式显示器是否可用。添加某些像SteamVRChaperone 的组件,但需要具体到某一设备。
5.1 必选模块和内容
如果你想通过C++接入头戴式显示器,那么你需要在ProjectName.Build.cs 文件内装入“HeadMountedDisplay”模块,在里面你可以找到Visual Studio解决方法。下面就有一个从VR第一视角建立项目的案例。/tomlooman/VRTemplates/tree/master/VRFirstPerson
如果需要使用HMD额外的功能,或者动作控制组建,请确保加入一下头文件。
6.性能注意事项
为了让你体验舒适VR,你的游戏需要在75赫兹(Oculus DK2)或甚至90赫兹运行。这都(HTC VIVE和Oculus CV1)取决您的设备。要在运行游戏的时候可以在控制台的“STAT FPS”或“统计单位”(更详细的分解)去了解您当前的帧速率类型。
6.1 CPU性能分析
您的游戏可能会收到CPU或GPU的约束,找出你需要测量的东西(一种快速的方法是使用“统计单位”)。由于gen游戏以及引擎的复杂性,几乎不可能去很好预测你CPU性能瓶颈,所以选择合适的工具把!鲍勃•特列斯在博客上写了一篇关于CPU性能分析与虚幻引擎4的文章(/zh-CN/blog/how-to-improve-game-thread-cpu-performance),这是一个很好的开端。
6.2 GPU性能分析
为了捕捉GPU时序的单个帧,可以按Ctrl+ Shift +,或在控制台输入“profilegpu”。该命令可以准确测量GPU时序,在使用VR时,你会发现某些处理过程对帧速率压力很大(Ambient Occlusion就是一个例子)。
GPU性能分析(/latest/INT/Engine/Performance/GPU/)和性能以及分析文档(/latest/INT/Engine/Performance/index.html)是了解分析你的游戏的好方法
虽然分析你可能会栽倒在取决于你的场景和项目等昂贵的特征上面。比如Translucent Lighting Volume,你虽然不需要,但是在你场景上加了一个固态成本,可以浏览Daniel Wright写的AnswerHub post(/questions/91994/how-to-disable-translucency-volumelighting.html)以解决怎么禁用此功能。你所做的就是测量和检测,没有一个配置适合所有项目。
开发商想出一系列方案(//05/28/fated-and-the-quest-for-optimized-vr/),以满足优化VR需求。比如,他们准备禁用 HZB Occlusion Culling(r.HZBOcclusion 0)、Motion Blur (r.DefaultFeature.MotionBlur=False)以及Lens Flares (r.DefaultFeature.LensFlare=False)。该命令不通过多会话仍然存在,所以你应该增加(或搜索和替换),它们在你的/Config/DefaultEngine.ini配置文件,虽然大多数这些设置都可以通过编辑>项目设置...>渲染来完成。
另一个优化就是去考虑实例化的立体渲染。我们在下面会提到。
6.3 实例化的立体渲染
最新发布的4.11介绍了实例化的立体渲染,浏览下面视频,比较其如何工作。
Ryan Vance说:“基本上,我们可以利用硬件实例化通过单一绘制来以及渲染循环来同时画眼睛。这明显减少了CPU渲染线程时间,提升了CPU性能。在渲染线程上,Bullet Train可以实现CPU〜15-20%的提升,GPU有7 – 10%的提升。”
要启用此功能在4.11以上版本,会进入项目设置功能以及寻找“渲染类别”下的渲染实体化。
6.4 禁止需要大量计算的“后处理器”
某些后期处理的VR效果计算成本很高。AmbientOcclusion 和 TemporalAA.就是案例
要在项目层面禁用某些后期处理功能,可以按照编辑>项目设置>渲染。你可以在后处理卷中做同样的事情。请记住,后处理量可以覆盖以下指定的项目范围的设置
6.5 减少场景的复杂性
如果目前硬件无法让你达到FPS90的目标,您可能需要重新检查以前的设置限制,并查看在像动态阴影,大气烟雾效果和网格polycount场景的复杂性。
重要的是要尽量减少透支,以维持性能最大。许多半透明表面和/或粒子效果很容易使你的帧速率出故障。为了形象化当前着色器复杂度/透支可以按Alt+8的视口(按Alt+4,返回到默认视图)。从Elemental Demo底部图片可以了解大气对你帧率影响多少(绿色=好,红=坏,白热化=极坏像素约2000着色器指令)
动态阴影和灯光对性能有很大的影响了。用可能多的光线Bake,你可以可能降低每帧的成本。
希望这有助于你开始在Unreal Engine 4项目使用VR吧。
原文地址:/p/115kUPX.html
如果觉得《入门VR游戏开发者在Unreal Engine 4上开始VR设计所需要知道的》对你有帮助,请点赞、收藏,并留下你的观点哦!