VR游戏制作的规格分析
由于UE4的演示资源更为丰富,我对UE4具有代表性的演示进行了全面测试,同时通过Rift确认效果以及其中资源的制作方式。
一、整体总结
UE4是基于物理渲染的引擎,其渲染效果更偏向图像真实,使用的材质和贴图细节也更为丰富。在PC上,UE4的品质优于Unity,但性能消耗也相对较大,因此非常适合作为VR产品质量和效率的参考标准。
以下是我针对PC高品质制作的总结,后续将结合每个演示进行具体分析:
- 渲染风格:VR既可以实现基于物理渲染(PBR)的效果,前提是贴图和光照需遵循物理法则,也可以采用偏卡通风格。
- 材质使用:VR可运用PBR的金属度/镜面颜色、法线贴图、粗糙值等。在Unity 5中,需在金属度/镜面颜色的工作流中选择其一;为提高效率,UE4也建议选择其中一种,而非同时使用。
- 粒子制作:若粒子需与视觉交互,应采用基于Mesh的粒子,而非基于Billboard生成的粒子。
- 凹凸效果:在VR中,Normal Map仍能呈现凹凸感,并非如文档所述毫无作用。在PC上,使用POM(视差映射贴图)和Tessellation(表面细分)技术可实现比Normal Map更高的细节。
- 高光抗锯齿:VR会放大PBR的Specular Aliasing问题,需采用支持Specular Anti - Aliasing的技术(如Temporal AA)。
- 分辨率与锯齿:鉴于VR分辨率较小,为减少锯齿感,应尽量避免使用alpha test制作的效果。
- UI与互动:UI和互动的制作至关重要,但Unity和UE4在这方面的实例较为缺乏。
- 调试工具:UE4自带的命令行工具对性能分析十分有帮助,而Unity缺乏如此全面的分析工具,需要自行实现和改造。
- 性能优化:为保证良好的体验,最好将帧率维持在75FPS。
二、具体问题阐述
(一)渲染风格:基于物理(PBR)或者卡通风格
在我翻译和分享的资料中,对PBR已有较多介绍,此处仅作简要说明。PBR大致可分为材质着色(Material Shading)、光照(Lighting)、后处理特效(Camera Effect)三部分。UE4和Unity都支持PBR材质着色,但光照和后处理部分在VR实现中,性能和效果方面的压力较大。现阶段的PBR主要依赖基于微平面的BRDF以及IBL,并通过粗糙度增强效果。考虑到VR性能,应尽量减少使用动态光源和物理镜头。
以《Order 1886》为例,只有材质采用了PBR。在近期展示的VR项目中,真正采用PBR的项目较少,大多为卡通风格或着色模型简单的项目。若要在品质上有所突破,PBR是一个值得尝试的方向。
(二)VR的美术制作管线
在美术管线方面,VR与普通项目并无显著差异。卡通风格可沿用传统的制作方式;对于PBR风格,美术人员在制作时需具备一定的PBR管线意识。除绘制粗糙度贴图外,还需了解金属和非金属的颜色特性。从节省资源和提高效率的角度考虑,可在Metallic或Specular的制作流程中选择其一。
与Specular美术管线相比,Metal美术管线的贴图占用空间更小,对美术师而言更为直观和简单。颜色均绘制在base color上,只需使用Metallic贴图标识出金属和非金属,着色模型即可自动确定Diffuse和Specular的颜色。
(三)凹凸细节的制作
UE4官网提到,由于VR需要分别为左右眼渲染,依赖视觉的贴图效果(如Normal Map)在VR中会被“平坦化”。但从UE4的一些演示来看,Normal Map仍能呈现一定的凹凸感,只是效果不如普通PC明显。在PC上,使用POM(视差映射贴图)和Tessellation(表面细分)技术可实现比Normal Map更高的细节,这种技术在Crytek的一些游戏和演示中较为常见。
POM通常用于制作墙面和地板等平面的凹凸效果,制作相对简单,使用类似Bitmap2Material的工具也能获得不错的效果;Tessellation则可利用DirectX 11的TS对各种模型进行表面细分。
(四)粒子特效
传统的Billboard粒子通过一个或多个板型多边形朝向玩家视点的方向来模拟效果。但在VR中,由于双眼视觉的影响,Billboard粒子容易出现偏差;当玩家在粒子附近晃动头盔浏览时,Billboard粒子的破绽也会更加明显。
例如,在Showdown中的导弹火焰轨迹和爆破碎片,由于轨迹和破片会穿插在玩家视点的前进路线上,玩家可从正面、低头或回头等不同角度观看,因此这些粒子特效采用了基于Mesh的制作方式。
(五)Specular Aliasing的问题
Specular Aliasing是指PBR的Specular高频部分在较远处因采样问题,导致物体边缘的高光会随视角移动而出现“晃动”现象。
对比关闭和打开Specular AA的效果可以发现,关闭时Specular Aliasing在物体运动时更为明显。因此,需要采用支持(subpixel reconstruction AA)的后处理技术,如SMAA或Temporal AA,但这会增加GPU的消耗。
(六)Alpha Test AA
Unity的VR双眼生成采用后处理方式,可节省大量的Draw Call,但后处理生成左右眼容易产生抖动问题,在BlackSmtih这一Demo中,抖动现象尤为明显。
原因之一是Unity默认的FXAA仅对几何体的锯齿有效果,无法有效解决像素走样问题。在VR中,由于分辨率较小,使用贴图和alpha test制作植物边缘时产生的锯齿感会被放大。
(七)UI和互动的制作
在UI方面,U3D和UE4自带的3D UI在表现力上与Scaleform存在较大差距。若要制作出科技感强的界面,需要手动定制一些功能。
(八)调试和性能分析
Unity的性能分析主要依靠Profile,调试时需要取下头戴设备,在Editor中进行调整后,再使用设备进行确认。
UE4除了具备分析工具外,还可直接在游戏中使用命令行工具显示各种性能参数以及各种显示特性的参数设置,便于判断性能瓶颈。而Unity则需要在编辑器中自行设置,或修改和扩展自己的设置插件。
(九)性能问题
为避免玩家产生眩晕感并保证游戏流畅度,UE4建议在Rift DK2上维持75FPS的帧率,最低硬件配置为GTX960。在我的GTX660上,UE4的VR专用演示帧率约为45FPS,其他演示约为30FPS。这一方面与UE4本身的优化不足有关,另一方面也因为UE4演示中使用了高品质的材质和特效。UE4的性能和制作规格对Unity开发具有一定的参考价值。
三、UE4自带VR专用演示的特性
以下是UE4自带的两个VR专用演示(Showdown和CouchKnights)的一些特性:
(一)Draw Call和多边形数
场景的平均Draw Call为600。静态物体对象的多边形数为50w - 70w,骨骼动画的多边形数全屏约为30w - 50w。在VR模式下,UE4的Draw Call和绘制的多边形数量都会翻倍,这与Unity的实现方式不同。
(二)静态场景
大部分静态场景中,近处的房屋和地面等采用标准PBR材质,带有Roughness和Normal Map;远景的房屋未使用Normal Map,地面使用bump offset模拟POM效果。同时,配合Local Cubemap(UE4里叫ReflectionCapture)实现地面上水洼的反射效果。
(三)动态物体
除玩家外,场景中仅有士兵和敌方Boss两种角色,面数分别为6w和10w,每个角色有7 - 8种材质。
(四)光影
场景未使用任何动态光源,采用预先烘培的光照贴图(Lightmap)和Light Probe(UE4里叫Lightmass)。角色的动态阴影通过脚底下的贴片进行模拟。
(五)粒子特效
车的爆炸特效通过在高细分(tesselated)的球体上加入世界空间的噪声实现;导弹的轨迹对几何体进行了细分,并沿着样条曲线运动。