文档章节

入门VR游戏开发者在Unreal Engine 4上开始VR设计所需要知道的

robslove
 robslove
发布于 2016/08/11 15:06
字数 2459
阅读 81
收藏 1

入门VR游戏开发者在Unreal Engine 4上开始VR设计所需要知道的

首先,不要被标题吓到,这其实是一篇面向游戏开发者的入门科普文章,对于有致于开发VR游戏的初学者来说,这是一篇不错的UE 4入门体验的文章。用最快的速度了解UE4 引擎在VR游戏中可以实现什么效果和一些基本的性能调试方法。

 

如今,人们对于VR的讨论越来越多,但是,每天却有越来越多人参与到VR的发展中来。这一指南适用于那些专为Unreal Engine 4开发VR的人使用,并且可以提供各种不同的资料,包括Epic Games的官方文档,以及涵盖了蓝图和C++的内容。

 

 

请注意,VR仍然是全新的课题,每个新版本都会扩充VR的内容。所以,如果有可能,我们强力推荐使用最新版本。官方Oculus论坛、官方VR文档页面和Unreal Engine VR分论坛都是查看你版本的好去处。

 

如果你正在寻找让你马上着手开始设计的VR模板,请访问GitHub Repository: https://github.com/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 (https://answers.unrealengine.com/questions/296531/vive-locked-at-60-fps.html)上寻找。下一次在使用Vive时不会出现这样情况了,因为他们成为显示屏的直接模块。

 

 

 

2.启动VR预览版

 

测试你的VR设置非常简单,只需在播放下拉按钮,选择“VR预览”。默认情况下,头部跟踪会立即生效,而无需改变现有项目或模板。我将讲诉更多如何添加额外功能的细节,如运动控制器设置和重置来源。该指南后面都有讲诉。

 

 

3.最佳VR实践

 

VR仍然是未全部开发的领域,随着每天的发展,我们不断学习新的东西。

Oculus (https://developer.oculus.com/documentation/intro-vr/latest/concepts/bp_intro/)和Epic Games(https://docs.unrealengine.com/latest/INT/Platforms/VR/ContentSetup/index.html) 都设置了最佳VR实践指南。我推荐你们仔细阅读,并在发开VR游戏是,常常反思。

 

4.在Blueprint上使用VR

在蓝图使用VR是非常简单,你不需要太多设置,然后才开始工作。

 

您将需要一个摄像头组件和可选的一个或两个运动控制器组件。默认情况下,你的相机已经设置为HMD支持,如果您希望禁用的HMD旋转的变化,你可以组件的属性中选择“Lock to HMD”。想要得到更多关于运动控制器的信息,你可以游览该指南或者流浪官方文件页,了解怎么设置运动控制器(https://docs.unrealengine.com/latest/INT/Platforms/VR/MotionController/index.html)。

 

下面是蓝图可用的节点。

 

重置你头盔的位置或方向

 

选择合适的功能,能检测你头盔是否能工作

 

4.1 SteamVR Chaperone

 

Chaperone组件是SteamVR专属,可以方便连接软边界。软边界呈现为以HMD为原点(0,0,0)的向量阵列。所述载体的Z分量始终为零。你可以从下列看到,你添加这些组件,就像添加ActorComponent到Blueprint一样。

 

 

4.2 设置运动控制器

 

官方的文件对于运动控制器设置(https://docs.unrealengine.com/latest/INT/Platforms/VR/MotionController/index.html)以及输入处理的讲诉很清楚,如果你的VR支持运动控制器,那么我推荐你根据下列文件步骤走。根据这一实例,在GitHub上检查我的VR模板(https://github.com/tomlooman/VRTemplates)。

 

如果您无法用相机对准你的运动控制器,只需把SceneComponent当做“VR原点”即可。当你的根组件在CharacterBlueprint上产生像CapsuleComponent一样的问题,那么这种方法特别好用。

 

 

5.在C++上使用VR

 

由于4.11并不是所有的功能都适用于Blueprint,如果你正在努力实现高级定制,那么你需要深入了解C++,来进行一些设置。检查头戴式显示器是否可用。添加某些像SteamVRChaperone 的组件,但需要具体到某一设备。

 

5.1 必选模块和内容

 

如果你想通过C++接入头戴式显示器,那么你需要在ProjectName.Build.cs 文件内装入“HeadMountedDisplay”模块,在里面你可以找到Visual Studio解决方法。下面就有一个从VR第一视角建立项目的案例。https://github.com/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的文章(https://www.unrealengine.com/zh-CN/blog/how-to-improve-game-thread-cpu-performance),这是一个很好的开端。

 

6.2 GPU性能分析

为了捕捉GPU时序的单个帧,可以按Ctrl+ Shift +,或在控制台输入“profilegpu”。该命令可以准确测量GPU时序,在使用VR时,你会发现某些处理过程对帧速率压力很大(Ambient Occlusion就是一个例子)。

 

 

GPU性能分析(https://docs.unrealengine.com/latest/INT/Engine/Performance/GPU/)和性能以及分析文档(https://docs.unrealengine.com/latest/INT/Engine/Performance/index.html)是了解分析你的游戏的好方法

 

虽然分析你可能会栽倒在取决于你的场景和项目等昂贵的特征上面。比如Translucent Lighting Volume,你虽然不需要,但是在你场景上加了一个固态成本,可以浏览Daniel Wright写的AnswerHub post(https://answers.unrealengine.com/questions/91994/how-to-disable-translucency-volumelighting.html)以解决怎么禁用此功能。你所做的就是测量和检测,没有一个配置适合所有项目。

 

开发商想出一系列方案(http://fatedblog.com/2015/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吧。

本文转载自:

上一篇: UE4 框架
robslove

robslove

粉丝 5
博文 197
码字总数 83957
作品 0
成都
程序员
私信 提问
2018 Unreal Open Day开幕:我们在这里看到了游戏行业的未来

5月23日,“2018 Unreal Open Day虚幻引擎技术开放日”在上海宝华万豪酒店开幕。作为Unreal引擎开发者年度盛典,本次活动将持续两天,来自Epic Games的资深制作人和技术专家向与会者们无私分...

shenshen211
2018/05/25
0
0
VR这么火,你选UE4还是Unity 3D?

在虚拟现实大热的今天,开发者界也出现了“甜豆花”与“咸豆花”之争。在游戏开发者制作游戏时,面对都是免费、都支持各大平台的UE4和Unity 3D,选择何种游戏引擎,似乎有点难以抉择,左手U...

1405048499729402
02/21
0
0
从零开始学虚幻4游戏开发系列01

开始前的废话 本教程适用对象: 1.对使用虚幻4引擎开发AR/VR游戏感兴趣的童鞋; 2.此前几乎没有过任何平台的开发经验,当然,如果有任何平台的游戏或应用开发经验就更好不过。 本教程将包含的...

王寒
2017/12/16
0
0
恶心想吐咋玩VR 这家公司给了解决方案

专家们普遍认为,目前VR技术不管是在软件还是硬件方面,都仍然处于相对早期的发展阶段,在用户体验方面做的还有很大的提升空间。目前,韩国GameCrew创意工作室准备推出两款产品,希望能改善这...

杨昊睿
2017/12/04
0
0
虚幻引擎(Unreal Engine)4.13 版正式发布

开发商Epic Games正式发布了最新的4.13版虚幻引擎(Unreal Engine),增加了许多渲染功能和新特性:模型贴花(Mesh Decals),渲染目标蓝图绘制、GPU变形目标处理、折射改进、高质量优化的材质...

开源中国股侠
2016/09/03
3.6K
6

没有更多内容

加载失败,请刷新页面

加载更多

学习记录(day05-标签操作、属性绑定、语句控制、数据绑定、事件绑定、案例用户登录)

[TOC] 1.1.1标签操作v-text&v-html v-text:会把data中绑定的数据值原样输出。 v-html:会把data中值输出,且会自动解析html代码 <!--可以将指定的内容显示到标签体中--><标签 v-text=""></......

庭前云落
26分钟前
3
0
支撑微博亿级社交平台,小白也能玩转Redis集群(实战篇)

上篇文章《支撑微博亿级社交平台,小白也能玩转Redis集群(原理篇)》介绍了Redis集群相关原理,这篇文章将介绍Redis Cluster集群的搭建、配置,运维、扩容等具体操作 集群搭建 2018年10月 Re...

分布式系统架构
27分钟前
5
0
JVM -- 垃圾回收算法及分代垃圾收集器

Hello,今天记录下 Java虚拟机中的其中一个重点知识 --> 垃圾回收算法及分代垃圾收集器。 一起学习,一起进步。继续沉淀,慢慢强大。希望这文章对您有帮助。若有写的不好的地方,欢迎评论给建...

猫狗熊
41分钟前
3
0
ERC-777以太坊新代币标准解读

ERC777是一个新的高级代币标准,可以视为ERC20的升级版本,因此它解决了ERC20以及ERC223存在的一些问题,开发者可以根据自己的具体需求进行选型。 1、使用ERC820进行合约注册 有别于ERC20的自...

汇智网教程
今天
8
0
代理模式之JDK动态代理 — “JDK Dynamic Proxy“

动态代理的原理是什么? 所谓的动态代理,他是一个代理机制,代理机制可以看作是对调用目标的一个包装,这样我们对目标代码的调用不是直接发生的,而是通过代理完成,通过代理可以有效的让调...

code-ortaerc
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部