云裂变营销网

标题: 体渲染探秘:在元宇宙实现体积光与体积雾 [打印本页]

作者: 匿名    时间: 2023-4-6 16:35
标题: 体渲染探秘:在元宇宙实现体积光与体积雾
文章引自元象XVERSE公众号:元来是你13|构建元宇宙光之世界,3D体积光雾渲染技术
自然环境中,当光线穿过潮湿或含有杂质的空气时会发生散射效应,这些散射光线进入人眼,会产生一种光线被停在空气中,或被某种介质拦住的错觉,被称为体积光。



散射光线呈光束形状被称为体积光,无特定形状则叫体积雾,两者都是空气中“杂质”被照亮的结果。

在3D虚拟世界中,这些是极为常见的光照特效,既能真实表现出光照射在物体上产生的遮挡效果,又是场景设计师爱用的氛围烘托工具,通过光雾呈现阳光明媚、神秘诡异、梦幻浪漫感,使场景具备层次、深度和立体感,让用户沉浸于不同氛围和情感色彩中。

体渲染探秘:在元宇宙实现体积光与体积雾-2.jpg

《森林之子》游戏中不同的光效

元象XVERSE自研的“端云协同”3D互动技术,希望在手机上就能呈现出庞大丰富、逼真材质、真实光影的元宇宙“美感”,因此渲染仿真是我们的长期研发课题。

本文聚焦颇具挑战性的“体积光/雾”渲染技术,介绍:
1. 影视游戏行业光效的不同路线
2. 三大主流技术方案及其优劣势
3. 元象自研“端云协同”渲染方案
全文2500字,预计阅读8分钟。
离线 vs 实时

影视和游戏行业的不同路线

影视行业通常追求极致的画面表现,因此愿意花大量时间和计算资源模拟真实的光线运动和效果。比如使用Houdini进行物理模拟仿真生成体积雾,通过设定灰尘浓度、湿度、风力等环境参数,在场景中生成“体积场”来描述环境中漂浮的烟雾粒子,这些粒子也会吸收和散射部分光线,呈现出体积光/雾效果,可作为光照计算的场景元素。之后,通过光线追踪技术模拟光线在场景中的传播和反射,准确计算场景中雾效的光照关系,最后生成真实细腻的光效。



影视行业的体积光效果展示

游戏行业看重实时交互,受手机等硬件设备的计算性能限制,会优先考虑性能消耗问题。常见做法是把不同光效进行分类,比如肉眼直视太阳产生LightShaft效果、光照进清晨的树林产生的Godray效果、光照亮雾产生的光雾混合效果等,再使用不同技术分别实现,用渲染技巧“伪装”光效,骗过玩家眼睛。
下面就介绍几种主流做法。此外,目前部分高端显卡已具备实时光线追踪能力,随着硬件性能不断提升,有机会在手机呈现更炫酷光效。

体渲染探秘:在元宇宙实现体积光与体积雾-4.jpg

游戏中的体积雾示例

实时光效常见方案

Billboard面片光

实时光效模拟中,Billboard面片光可以说是扛起了半边天,它通过在场景中放置永远朝向摄像机的半透明面片,用贴图面片制作出光/雾效果。

体渲染探秘:在元宇宙实现体积光与体积雾-5.jpg

Billboard面片光的光/雾效果

这种方法画面效果好,性能消耗低,缺点也显而易见,只适用于中远景。因为面片没有体积,只要走近或看光的侧面,就会穿帮,需要用淡入淡出方法,在近处面片光淡出画面来缓解。但瑕不掩瑜,它被影视游戏行业广泛应用。

LightShaft后处理光

远景中的另一个常见光效,是看向太阳时,光被场景遮挡产生的LightShaft效果——观众会看到太阳光从遮挡物或物体边缘溢出,照耀在周围物体,产生一种神圣、神秘感。通过调整光源强度和位置,能营造出不同的视觉和氛围效果。其难点在于随着镜头移动,光被遮挡的形状也不断变化,不能用面片光,而需后处理来仿真该效果。



光被场景遮挡产生的LightShaft效果

后处理是场景渲染完成后,再对画面做一次整体处理,通常为了校正颜色、抗锯齿、添加光效等。LightShaft后处理主要是三步:首先是提取光源像素,被场景遮挡后不一定能提取出光源本来的形状,其中遮挡让光源产生了场景交互光线,所以非常重要。第二步是该像素的径向模糊(Radial Blur),它是在图像中模糊一定区域,使其呈现向外辐射状的模糊效果,用在提取像素上,得到一帧画面的光线传播模拟图。第三步会将该模拟效果混回原图像,得出一个视线遮挡导致光效形状变化的光效。

体渲染探秘:在元宇宙实现体积光与体积雾-7.jpg

LightShaft后处理步骤

体素渲染体积光

复杂光效只靠面片和后处理是远远不够的,能生产体积光/雾的体素渲染方案因此也被广泛应用。它可以使用Houdini这样的影视软件制作体积场,将其以3D纹理形式保存,再导入3D引擎中,通过制作体积雾材质,在场景中以雾效方式渲染出来。



以雾效方式渲染体积雾材质

它也可以用UE4自带的体积雾(Volumetric Fog)方案制作,用高度构建体积场,雾效浓度随高度上升,或逐步减弱。在光照计算上,它不会像影视行业一样使用实时光线追踪进行大量计算,而是将视锥体体素化成Froxel Volume,将每个Froxel视为一个采样点,对体积场中的雾浓度和光照强度进行分别采样,再结合吸收率、散射系数、相函数参数、自发光系数等介质属性,得出没有影视行业那么极致的画面效果,但在电脑上能实时计算的方案,在“好效果”与“普及性”中取得平衡。

体渲染探秘:在元宇宙实现体积光与体积雾-9.jpg

UE4中的指数高度雾

元象方案

元象希望能在手机、PC到VR等不同终端上都呈现出真实光影的元宇宙“美感”,因此技术重点放在了自研“端云协同”web端方案上,因为它跨平台、易用、能触达大量用户,最有应用前景,但受硬件性能等诸多限制,技术上也最具挑战
比如在图形API上,WebGL计算特性有限,要比手游花费更多精力优化性能热点;在轻量化上,不能将资产打包成app,而是按需调用资产,让用户实时加载,即开即玩,对包体大小控制提出了极高要求。



元象体积雾效果

元象自研的“端云协同”3D互动方案,解决了纯端架构大量依赖端侧算力,对PC或手机等终端设备的性能要求高的痛点,又解决了纯云方案中云服务成本高、网络带宽影响运行卡顿,或者WebGL云方案无法支持复杂场景和动效细节等问题,是一个“进可攻退可守”的方案。

体渲染探秘:在元宇宙实现体积光与体积雾-11.jpg

元象的体积光效果

元象云方案

在光影的生产上,元象美术团队能以“影视级画质”的高规格搭建场景和设计环境,用光线追踪将其预渲染到云端。在渲染上,所有光影重度计算放到云服务器上,将高质量效果实时传输到端上。最终到呈现上,用户在手机上就能享受到复杂细节和真实光影的元宇宙“美感”。

体渲染探秘:在元宇宙实现体积光与体积雾-12.jpg

元象室内光影效果

元象端方案

我们还在端上渲染部分光/雾效果,提高一些特定场景的画面表现力。比如Mesh体积光,是用Mesh表示体积场边界,再用解析式计算体积雾,能构建球、锥、圆柱等常见几何体雾,能用数学方法直接确定任一方向上几何体雾浓度,从而在web端进行高效渲染。
这个方案规避了3D贴图诸多技术缺点,包括移动端贴图带宽消耗高,容易导致性能问题和设备发热;贴图占用存储大,web端下载受网络影响大,下载时间也更长;采样3D贴图性能要求高,移动端无法承受等。
在具体实现上,以球形体积雾为例,Mesh体积光方案会假设网格体中心有一团雾,是中心为sc,半径为r的圆球状雾,从摄像机沿像素方向发射射线,则有摄像机原点ro,射线方向rd,射线长度t则有:

体渲染探秘:在元宇宙实现体积光与体积雾-13.jpg

描述出了射线与球形雾的关系,求解后得到其交点:tmin和tmax。通过两个交点对应的射线长度,可确定任一像素在该方向上的雾厚度。厚度为零的像素认为该地没有雾,渲染时不会叠加雾效颜色,而在有厚度的像素,则会根据厚度数值相应叠加雾效影响。

体渲染探秘:在元宇宙实现体积光与体积雾-14.jpg

算法示意图

最后元象的光雾渲染效果,经过端上体积光&雾的渲染叠加,整个空间立体度更高了。在阳光底下,画面会受体积光&雾的影响画面更加朦胧,在体积外面,光&雾里面的物体也会变得更有距离感。




VR空间光影案例

当前的体积光/雾效果还不错,但仍需要手动操作,比如手动将球形缩放为椭圆形,再放置到场景中合适位置,通过多个体积光共同组合成想要效果。如何把这些步骤用程序化方式自动实现,也是未来可以持续探索的方向。




欢迎光临 云裂变营销网 (https://www.yunliebian.com/yingxiao/) Powered by Discuz! X3.4