基于Unreal Engine的VR视觉构造方法研究
2017-11-02文乙钢李丹丹高学民
文乙钢++李丹丹++高学民
摘要:在过去的实时渲染及VR视觉构建中,常采用Lambert和Phong的光照模型,物体材质的表现和渲染结果主要依靠艺术家们的直觉和艺术感知能力,而研究基于物理的着色与材质(Physicallybased Shading and Material)方法,以光线传播的真实过程、物体透明介质和次表面、微表面以及菲涅尔反射等为代表,通过真实的物理学参数模拟各种材质反射和散射光线的属性,进而更加真实地模拟光线与物体表面交互的自然行为和实际情况,最终使VR的视觉构建结果极度真实。基于Unreal Engine的VR视觉构造为虚拟现实技术使用人群提供了一种更新更易操作的实践方法,极大丰富了VR虚拟现实的表现手法与设计思路。
关键词:虚拟现实;Unreal Engine;视觉构造
DOIDOI:10.11907/rjdk.171778
中圖分类号:TP301文献标识码:A文章编号:16727800(2017)010000804
0引言
传统的定帧景观漫游动画或者宣传片已为观看者预设好了摄像机路径,通过传统的预渲染方式制作出较为固定死板的视频媒体。而基于Unreal Engine的VR景观展现方式革新了以往的景观虚拟仿真表现手法与设计思路,通过基于特定算法的实时渲染、光照技术、基于物理的材质、GPU粒子模拟等技术手段构建出一个庞大而真实的虚拟交互世界,体验者在该空间内可以通过自己的想法和移动路径控制视角摄像机,对景观世界中的每一个角落、每一座建筑甚至是每一颗植被进行自由实时的观览体验,在头戴式显示器、陀螺仪、交互传感设备的辅助下“真实地”走进虚拟景观世界,体验现实空间内发生的行为和看不到的景色,感受自然世界的昼夜交替、云卷云舒,从而产生强大的视觉沉浸效果与交互体验。
1视觉构造手段
Unreal Engine 4(UE4,虚幻4引擎)是一款全球顶级的三维游戏开发引擎和虚拟现实引擎,是Epic Game公司以及来自全球数百上千位计算机工程师、设计师以及艺术家们的心血之作。Unreal Engine 4具有先进的实时渲染管线,高效完整的开发设计工具以及大量模块化系统,给整个虚拟现实开发提供了理想的解决方案和视觉构造手段。在VR视觉构建中主要有以下五大关键方法:
(1)延迟着色。不同于前向着色,延迟着色仅对最终显示的图像片段进行着色,对于材质的渲染过程而言,材质将其属性写入GBuffers,包括位置、面法线、基础颜色、粗糙度、金属度等,在光照阶段则读取材质每个像素的属性,并对它们执行光照处理[2],在保证性能的情况下实现大量多重动态光源。
(2)基于物理的材质。在以往的材质工作流程中,普遍使用Lambert和Phong两种光照模型,材质艺术家们往往凭直觉和艺术感知能力调和材质参数,以模拟现实材质让人们感觉真实。但基于物理的着色与材质模型,通过真实的物理学参数,能够更加真实地模拟光线传播时与物体表面交互的自然行为和实际情况。
(3)Lightmass全局照明。全局照明的真实模拟在很大程度上决定了整体画面的真实感和质感,而实现完全的实时全局照明一直是一项巨大挑战。Lightmass通过烘培光照,创建出光照贴图,该光照贴图含有间接漫反射和区域阴影等复杂的光照交互数据,从而实现对一部分静态光源和固定光照效果的预计算[2],最终达到模拟真实全局照明效果的目的。
(4)GPU粒子模拟。在以往的粒子工作流程中,先由CPU进行粒子的模拟和物理运算,再交由GPU渲染成像素。但由于CPU通常要进行大量的其它计算,这样的粒子生成过程不仅占耗了CPU资源,并且在进行数据传递时增加了时延。因此,将粒子的物理运算和模拟过程转移到GPU上,优化的算法使得GPU粒子的生成异常高效,并且可由GPU生成矢量场,对场内的粒子运动产生影响,从而在VR实时图像中产生强大而高效的视觉特效。
(5)视觉后期处理。大量图像后期处理、全局环境效果、电影化效果和电影级镜头效果的设计与应用是保证VR视觉与交互体验的重要过程,也会直接影响VR视觉画面表现的真实性和沉浸感,包括Gamma调节与画面调色、后期全局照明、环境光遮蔽、屏幕空间反射、反锯齿、自动曝光、镜头光晕、矢量景深等。
2核心原理与关键算法
五大关键方法中延迟着色与视觉后期处理主要倚靠艺术理论的提升,在此不做详细描述,本文将对其它3种视觉构建方法进行深入研究。
最早的基于物理的渲染(PhysicallyBased Rendering)模型由迪士尼公司在2012年的Siggraph图形学大会上提出,名为Principled BRDF[1],主要应用在影视预渲染图像上。而在过去的实时渲染与VR视觉构建中,往往采用Lambert和Phong的光照模型[3],物体材质的表现和渲染结果依靠艺术家们的直觉和艺术感知能力。目前基于物理的着色与材质方法是基于数学模型和物理模型的,真实的物理学参数模拟各种材质反射和散射光线的属性,进而更加真实地模拟光线与物体表面交互的自然行为和实际情况,最终使VR的视觉构建结果极度真实。
2.1次表面散射
在真实的自然世界中,光线与物体表面材质的交互过程可分为两种情况:发生反射或者发生散射。
(镜面)反射是指当光线到达表面边界时,光线被反射出去,方向是在法线另一边相反方向。该光线行为就如同是向着地面或者墙面扔出一个球体,球会以一个相反的角度反射出去,而不会被地面或墙面吸进去,一个光滑的表面如同一个镜面。然而并不是所有的光线都会被反射出去,往往有一部分光线会发生散射。此时,物体表面的情况又可以分为两种,即存在或不存在透明介质,当介质透明时视为存在次表面,当介质不透明时视为表面和次表面的距离差值极小而为0的情况,则进行表面漫反射。endprint
当物体表面存在透明介质时,一部分光线会进入物体表面之下,发生折射,折射后的光线被吸收转化为热能,或者发生离散,如皮肤、翡翠、牛奶、蜡烛等,其表面和次表面有较大的距离差值,也就存在较大的光线散射距离,此时会发生次表面散射情况。这也是基于物理的着色和材质中重要的一个模拟特性,图1给出了两种光线行为的示意图。
图1光线的反射与散射
次表面散射现象比一般表面反射或散射现象的模拟要复杂许多,光线不仅仅会在物体表面发生散射,而是折射到物体的内部,在物体内部的半透明介质中发生若干次散射,直至从物体表面的某一点再次出射。因此,对于存在次表面散射性质的物体,光线的出射位置和入射位置不同,上文提及的BSDF模型即双向散射分布函数仅能用于描述物体表面某一点的散射性质,而无法描述次表面散射现象。BSSRDF(Bidirectional Surface Scattering Reflectance Distribution Function)從方向和面积上同时进行积分求解,描述各方向上入射到物体表面光线的反射强度按反射方向分布的情形,如图2所示。
图2次表面散射
对于BRDF而言,每一次反射光线的计算是在光线交点的法线半球上的球面积分;而对于BSSRDF而言,每一次反射在物体表面上每一个位置的光线都要做一次半球面积分,成为一个嵌套积分:
Lo(po,ωo)=∫A∫ξ(n)S(po,ωo,pi,ωi)Li(pi,ωi)cosθidωidA
其中,BSSRDF的定义是:
S(po,ωo,pi,ωi)=1πFt(ηo,ωo)Rd(‖pi-po‖)Ft(ηi,ωi)
式中包括光线入射和出射物体表面材质时的折射菲涅尔项Ft,一个归一化的1π项,以及一个漫反射项Rd。其中,Rd只接受一个标量参数,此参数的意义是光线入射位置和初始位置的曼哈顿距离。BSSRDF将光线在物体半透明表面介质中多次散射后剩余的能量用一个基于入射点和出射点之间距离的函数近似表达,实时模拟基于物理的次表面散射效果。
2.2微表面
基于物理的着色和材质中的高光项是基于微表面理论的,微表面是物体表面细微的不规则面,它所影响的是“粗糙度(Roughness)”这个参数。在真实的物理世界中,大多数物质表面都存在非常小而细微的不规则形状,比如凹槽、凸块、缺口、裂痕等,这些都太小以至于眼睛无法看到,并且使用正常解析率的法线贴图也无法表现,但是这些小的微表面依旧会影响反射和散射,如图3所示。
微表面细节对光线的影响在反射中很容易被观察到,平行的入射光照射到粗糙的表面时,反射出来的光线发生了交叉,因为每一条光线遇到的微表面方向不同,就如同将球抛向墙面,如果墙面不是平整的,球会任意反弹,反弹的方向是不可预测的,同理光线反射后的角度也不一样,且有的地方光线被挡住,有的地方会产生阴影,视觉上会产生模糊的反射。因此物体表面越粗糙,反射光线越交叉,看上去就会越模糊,这种微表面细节(粗糙度)对于任何材质而言都非常重要,因为真实世界中的各种物体都会有微表面特征。
在UE4引擎的明暗着色器计算中引入微表面函数模型,将基于物理的着色中的高光项表示为:
fμfacet(l,v)=F(l,h)G(l,v,h)D(h)4(n·l)(n·v)
其中,向量l和v分别表示入射光和视角方向,向量h表示l和v之间的半角向量,F是h处的菲涅尔反射,G是与视角V朝向一致的微表面比例,D是微表面的分布函数,分母是对被遮蔽光线的修正。
2.3菲涅尔反射
菲涅尔反射描述的是材质的反射率和光线入射角的对应关系,也即在物体表面出现不同角度上反射率不同的情况,光线入射角越大,反射率也会越强。因此,当光线以一个擦着物体表面的角度入射比光线垂射到同一物体表面反射效果更加强烈,这就意味着表现了理想的菲涅尔效果的物体,在其边缘将会有更加明亮的反射。基于物理的着色与材质中,对传统计算机图形学中的菲涅尔方程进行了一些修正,如图4所示,其表现了从金属材质到非金属材质反射率随光线入射角变化的关系曲线,入射角接近90°时,材质反射率会迅速增大到1,故对于任何材质的物体表面,在光线擦着表面极限入射时,材质将具有完全的反射率。因此,在观察一个平滑物体的边缘时,应该是一个完美的镜面,任何物体以一个特定角度去观察时都可以呈现一个完美的镜面,在物理上的确如此。
图4入射角变化曲线
3Lightmass全局照明
在基于Unreal Engine的VR视觉构建中,全局照明(GI)模拟采用Lightmass烘培光照贴图的方法进行,通过预计算一部分静态和固定光源的间接照明效果和区域阴影等复杂的光照交互数据生成光照贴图,此过程将代替完全实时的GI计算,以达到全局优化效果。
间接漫反射是GI中最主要也是最重要的表现部分,光线在运动过程中,物体表面材质的漫反射因素将会影响各方向上漫射光线数量及光线颜色,间接漫反射是在所有方向上均匀地漫射入射光线,观察方位和角度的不同对于观察效果没有影响。Lightmass同时会预计算详细的间接阴影,以环境遮蔽为代表,环境遮蔽是从具有均匀光照的半球上获得的间接阴影,被应用到直接及间接光照上,同样被烘培到光照贴图中。
4GPU粒子模拟
通常在粒子的模拟生成流程中,先由中央处理器CPU进行粒子的模拟及物理学运算,再将计算结果传递给显卡GPU渲染成粒子像素。在实时渲染中影响和制约粒子系统效能的因素主要有两个:粒子填充率即每帧可以生成的粒子数量,以及CPU和GPU之间的数据传输负载当需求的粒子数目巨大,计算时间以及CPU和GPU之间的传输时间将变得很大,无法满足实时渲染的帧率要求。
因此,在VR的视觉构造方法中采用GPU进行粒子的完全模拟与生成,即第一步利用GPU对粒子进行动力学模拟运算,将计算结果保存到纹理中,顶点着色器会计算纹理坐标,将纹理坐标传入片元着色器进行纹理采样,片元着色器同时对粒子参数进行动力学运算,计算结果作为下一步渲染到纹理的输入,第二步以常规渲染管线渲染,将第一步的渲染结果渲染到默认帧缓冲区中,完成粒子的绘制。GPU粒子的运作过程大大地提高了粒子系统的生成效率,传统的CPU计算体系在一帧内能完成数以千计的粒子,而在GPU上可以让数以十万计的粒子被计算并得到有效渲染,同时让CPU能更好地去处理其它物理和动力学运算以及AI人工智能等工作,从而提高整体效能。endprint
5结语
本文对基于UE4引擎的VR视觉构造关键方法的原理与核心算法模型进行了研究,以基于物理的着色与材质为主,包括Lightmass全局照明、GPU粒子模拟和视觉后期处理等一系列图像技术与表现手段在很大程度上影响着VR视觉构造的效果和效率。每一个关键方法都不是绝对完美和理想的,而是在快速的技术发展中不断更迭,以满足VR视觉表现中对实时渲染系统的更高要求。
参考文献参考文献:
[1]BRENT BURLEY.Physicallybased shading at disney[R].ACM SIGGRAPH Course Notes,2012.
[2]BRIAN KARIS.Real shading in unreal engine 4[R].ACM SIGGRAPH Presentations Notes,2013.
[3]MATT PHARR,WENZEL JAKOB,GREG HUMPHREYS.Physically based rendering:from theory to implementation[M].2nd Edition.San Francisco:Morgan Kaufmann,2010.
[4]HW JENSEN,SR MARSCHNER,MARC L,PAT H.A practical model for subsurface light transport[J].Computer Graphics,2001:511518.
[5]ALAN K,CHRISTOPHER K,ALEJANDRO C,MARCOS F.BSSRDF importance sampling[R].ACM SIGGRAPHTalks,2013.
[6]BRUCE W,STEPHEN RM,HONGSONG L,et al.Microfacet models for refraction through rough surfaces[J].Eurographics Symposium on Rendering Techniques,2007:195206.
[7]JR FRISVAD,T HACHISUKA,TK KJELDSEN.Directional dipole model for subsurface scattering[J].Acm Transactions on Graphics,2014,34(1):112.
責任编辑(责任编辑:孙娟)endprint