基于UE4的VR项目基础环境配置和Motion Controller控制配置
本文使用的VR硬件是HTC VIVE,本文分成两个部分,第一部分介绍了使用蓝图在UE4中进行基础环境配置时需要注意的渲染优化、后期处理、环境比例、HMD帧率优化设置等。第二部分是如何使用UE4蓝图对HTC VIVE的手柄进行配置的流程。适合刚学习VR的同学进行参考。
UE4项目设置
新建 VR 项目时,推荐使用 移动设备 / 平板电脑、可缩放 3D 或 2D 和 没有初学者内容 选项,以保证项目从开始便在框架上运行。
VR .INI 设置
以下设置是基于UE4 VR demo Showdown 测试得出的优化设置,建议按照项目需求进行修改。
(SystemSettings 下的项目 Config\ DefaultEngine.INI )
[SystemSettings]
r.VolumeMultiplier=1.0 体积乘数
r.screenpercentage=130 屏幕比例设置
r.SeparateTranslucency=0 修复半透明情况下景深的问题
r.HZBOcclusion=0 HZB环境光遮蔽
r.FinishCurrentFrame=1 完成当前帧
r.MotionBlurQuality=0 运动模糊质量
r.PostProcessAAQuality=3 后期特效质量
r.BloomQuality=1 光溢出质量
r.EyeAdaptationQuality=0 模拟眼睛自适应光效质量
r.AmbientOcclusionLevels=0 环境遮蔽质量级别
r.SSR.Quality=1 屏幕空间反射质量
r.DepthOfFieldQuality=0 景深质量
r.SceneColorFormat=2 能够选用不同的 SceneColor 格式
r.SSSSS=0
r.TranslucencyVolumeBlur=0 半透明体积模糊
r.TranslucencyLightingVolumeDim=4 半透明灯光体积范围
r.MaxAnisotropy=8
r.LensFlareQuality=0 镜头光晕质量
r.SceneColorFringeQuality=0 场景颜色边缘质量(紫边效果)
r.FastBlurThreshold=0 模糊阀值
showflag.decals=0 贴花选项开关
r.SSR.MaxRoughness=0.1 屏幕空间反射粗糙度最大值
r.rhicmdbypass=0
r.TiledReflectionEnvironmentMinimumCount=10 **反射环境最小值
sg.EffectsQuality=2 特效质量
sg.PostProcessQuality=0 发布质量
VR 实例化立体渲染
实例化立体渲染(Instanced Stereo Rendering),可以减轻 UE4 中的 VR 性能影响。
即时立体渲染是一个优化,能够让引擎更有效率的为 VR 设备渲染具有立体感的画面。
在以前版本的VR渲染中,引擎渲染立体画面时,先为左眼渲染所有的东西,然后再渲染右眼画面。在即时立体渲染的特性下,双眼的画面同时进行渲染运算,这么做能大量降低 CPU 的开销,并改进 GPU 的利用率。
实例化立体渲染(Instanced Stereo Rendering)
编辑 -> 项目设置 -> Rendering -> VR ->Instanced Stereo
这个设置后引擎会提醒你重新启动引擎
VR 后期处理设置
在关卡中添加一个后期处理PostProcessVolume体积域。
PostProcessVolume(F4为快捷键,设置应包括整个关卡)设置应用Unbound
PostProcessVolume 设置里禁用LensFlares
一般情况下,不需点击每个部分并将所有属性设为 0。
可以先禁用开销较大的功能,比如
镜头光晕(Lens Flares)、
屏幕空间反射(Screen Space reflections)、
临时抗锯齿(Temporal AA)、
屏幕空间环境遮挡(SSAO)、
光晕(Bloom)
和其他可能对性能产生影响的功能等等。
VR 世界场景比例
VR场景物体和玩家摄像机之间的距离 0.75米 到 3.5 米 能获得最佳的VR体验
1 虚幻单位(UU)长度为 1 厘米(CM)
距离 | Unreal单位距离(UU) |
1厘米 | 1 UU |
1米 | 100 UU |
1千米 | 100,000 UU |
世界属性-> VR->World to Meters 100
** World To Meters=10 世界场景显示较大
** World To Meters =1000,世界场景显示较小
HMD 帧率
HMD头显设备 | 目标帧率 |
DK2 | 75 FPS |
RIFT CV1 | 90 FPS |
VIVE | 90 FPS |
VR 摄像机设置
*UE4 中设置 VR 摄像机的方法取决于 VR 体验为坐立状态或站立状态。
*在坐立体验中,需要将摄像机原点升高到角色站立时的高度。
*在站立体验中,必须将摄像机原点设为 0,0,0,处于地面之上。
*可将摄像机组件以角色为基础(地平面)附着在场景组件上,或将眼睛高度(Eye Heigh)设为角色碰撞胶囊体圆柱体高度的一半。
VR 角色设置
角色高度和宽度
属性 | UE4默认值 | 推荐VR 设置 |
高度 | 192 CM | 176 CM |
宽度 | 84 CM | 68 CM |
移动速度
移动速度约为正常速度的 1/4
属性 | UE4默认值 | 推荐VR设置 |
移动速度 | 60 M/S | 24 M/S |
相机位置
VR 摄像机的位置应比基本眼睛高度稍低
属性 | UE4默认值 | 推荐VR设置 |
基本眼睛高度 | 180 CM | 160 CM |
设置UE4 启用STEAM VR 插件
设置->Virtual Reality ->SimpleHMD
后重起引擎
1.在 Content Browser 中创建 Pawn 蓝图类。
2.蓝图打开后,前往 视口 标签,在 组件部分点击 添加组件 按钮显示可添加到此蓝图的组件。
3.使用单词 Motion 搜索 运动控制器。 找到运动控制器组件后,点击将其添加至组件列表。把名子改成MotionController_L
4.添加运动控制器后,点击将其选中,然后在 Details 面板的 MotionController 部分下将 Hand 设为 Left。
5.在世界场景中添加运动控制器手柄:在 组件 面板 中选中 MotionController_L,然后点击 添加组件按钮添加一个StaticMesh组件。 将静态网格体组件拖至运动控制器上(成为其父项), 然后在 细节 面板中为新组件的静态网格体属性添加一个静态网格体资源。(自己导入或引用引擎的模型)
6.重复2-4操作再添加一个MotionController_R,并将其设为 RightHand。给它填加一个StaticMesh组件,并将右手的网格体应用到其上。
设置项目时,将两个StaticMesh组件的坐标位置设为 0,0,0,使其重叠放置。
使用运动控制器(Motion Controller)
蓝图编辑器的 控制 面板中包含运动控制器专有的输入功能键。(窗口->控制板)在蓝图编辑器的 控制 面板中用 “MotionController” 搜索,将显示运动控制器可用的全部按钮和功能键。
L/R 代表 左 或 右 运动控制器使用。到此为止,手柄的配置结束。
下面是一个应用控制器的一个测试
设置运动控制器
测试想要的效果:按下 右手柄扳机键后场景中将生成一个包含模型的蓝图,按下 左手柄扳机键后将从世界场景中移除模型。
1.在 浏览器 中新建一个名为 BP_Sphere 的Actor蓝图,然后双击打开。
2.前往 视图 标签,新添加一个 静态网格体组件。
3.将静态网格体组件移到 DefaultScreen Root 上,将静态网格体设为使用 ArcadeEditorSphere,然后编译并保存蓝图。
(如没找到 ArcadeEditorSphere,打开 视图选项,点击 Engine Content 文件夹使其显示在 Content Browser 中。)
关闭 BP_Sphere 蓝图,打开 VR_Pawn 蓝图。
4.前往 我的蓝图 面板中的 事件图表 标签,新建一个名为 Objects、变量类型 为阵列的 Actor 变量。
5.在事件图表中添加并连接以下蓝图节点
6.选择 SpawnActor 节点,并将步骤 1 中创建的 BP_Sphere 蓝图指定到 Class 输入。
7.蓝图的此部分可用于移除放置在世界场景中的物体。添加并连接以下蓝图节点即可添加此功能。完成后的效果与下图相似。
(F键添加物体;E键移除物体 便于快速测试 也可以不用键盘设置)
8.编译 并 保存 变更至 Pawn 蓝图,然后按下 Play 按钮。
9.关卡载入后,按下右手手柄的扳机键即可在世界场景中添加物体。
(结束)
......
近期热文