APP下载

时空驱动的大规模真实感海洋场景实时渲染

2019-02-20张浩然周升腾

计算机研究与发展 2019年2期
关键词:海面海浪光照

李 颖 唐 勇 张浩然 刘 丁 周升腾 王 赛

(燕山大学信息科学与工程学院 河北秦皇岛 066004)(河北省计算机虚拟技术与系统集成重点实验室(燕山大学) 河北秦皇岛 066004)

海洋是地球生命的摇篮,是人类赖以生存和发展的重要空间,对海洋进行实时仿真,在数字海洋、影视娱乐等领域有着重要意义.近年来,随着计算机硬件水平的不断提高,真实感海洋场景模拟开始得到人们的广泛关注.

若想实现照片级别的海洋场景模拟,需要满足3个条件:大气(天空)条件、波浪建模和光线传播.目前大规模海洋场景中的天空模拟常采用天空盒来实现,真实感和灵活性受到限制;太阳和月亮等天体,常采用椭圆形轨道近似,难以反映其真实运动趋势;海浪建模中常用P-M(Pierson-Moscowitz)谱、Phillips谱等结合快速傅里叶逆变换(inverse fast Fourier transform, IFFT)进行海浪模拟,难以真实和全面地反映海浪运动;在海洋光照方面则侧重于模拟海洋表面的反射和折射,对于海洋内部散射导致海洋光照效果发生变化的研究则鲜有涉及.而将3个方面作为整体进行研究的成果则更显匮乏.

针对上述问题,提出一种时空驱动的大规模真实感海洋场景实时渲染方法,将时空驱动的天体运动变化、波浪建模和大气、海洋中的光线传播三者作为一个整体展开研究.首先,基于简化的天文模型计算太阳和月亮的位置,真实反映其运动规律;其次,引入风力驱动的统一方向谱作为海浪谱,弥补现有图形学领域上采用的传统海浪谱绘制海浪在短波绘制效果方面的不足;最后,建立包括大气散射、海面反射和海下次表面散射在内的海面综合光照渲染模型,真实展现不同时空条件驱动下的大规模海洋场景.

1 相关工作

通过计算机图形学领域研究者的不懈努力,在真实感天空场景、波浪建模以及海洋光照模拟等方向已经涌现出不少优秀的研究成果.

2001年,克莱姆森大学的Tessendorf[1]基于Phillips频谱生成海浪,并实现了海面反射等基本的海洋光学效果,但是其海面采用矩形网格块拼接而成,并且采用天空盒作为天空背景,导致视觉效果不佳.同年,犹他大学的Premože等人[2]采用JONSWAP(joint north sea wave project)谱生成海浪,简化求解辐射度方程和光学参数的估计,实现多种类型水体效果,但是没有表现时空驱动条件对于海洋场景的影响.2003年Iwasaki等人[3]采用光能辐射在水体中的二次辐射理论,模拟出不同天气条件下的水体颜色,但其光能计算非常复杂,实时性差.2007年北京大学李起成等人[4]提出了一种包括天空球、大气系统和海浪模型在内的完整海洋环境模型实时渲染方法,但是该方法中的海洋模型采用了简单的正弦波构建,具有明显的周期性特征.2010年,Bruneton等人[5]结合几何体法线以及双向反射分布函数(bidirectional reflectance distribution function, BRDF),实时展示了不同光照下的海洋场景,但由于采用次摆线和P-M谱进行波浪的建模,海浪的物理运动特性并没有得到保证.2011年天津大学刘世光等人[6]提出一种基于物理的浑浊水体真实感光照模拟方法,但是未涉及到时空条件变化对于水体光照的影响.2013年浙江大学彭群生等人[7]考虑到大气折射的影响,绘制出不同时间、季节下海面和陆地上的真实感天空场景,但是基于物理的大气折射模拟难以适应实时模拟的需求.2015年Zhang[8]通过预先计算光线在大气层中的折射数据,再通过光线追踪的方法实现太阳在海平线处的变形效果.同年,谷歌公司的Horvath[9]利用TMA①Texel (Texel storm),MARSEN(marine remote sensing experiment at north sea),ARSLOE(Atlantic ocean remote sensing land-ocean experiment)(Texel-MARSEN-ARSLOE)谱对经典的Tessendorf波模型进行了扩展,方便艺术家们设计涌浪等海洋场景,但是没有涉及光源变化对海洋光照的影响.2016年燕山大学唐勇等人[10]将光强、光源颜色和位置变化引入海水颜色计算中,实现了一天之内不同时刻岛屿周围海水的色彩变化,但只能模拟具有一定幅度海浪的海面,具有较大的局限性.同年,中国海洋大学的Ma等人[11]基于生物光学模型提出一个照片级的海水颜色实时渲染算法,但是未涉及时空条件对海水效果的影响.在Horvath工作的基础上,2016年和2017年迪士尼动画工作室的研发人员[12-13]分别在SIGGRAPH Asia和SIGGRAPH上发表研究成果,他们依托于Maya开发了3个给海洋专用的Rigs,使艺术家可以轻松描绘和设定各种海洋类型,该技术成功应用于迪士尼动画电影《海洋奇缘》中的海洋场景特效制作.2017年MPC的研究者[14]依托于Bifrost流体解算模拟器和Houdini三维计算机图形软件,成功制作出《加勒比海盗5》中的海洋场景.以上3篇文献中的成果均侧重于为影视特效服务,海洋场景精美,但专业性强,耗时巨大,非普通用户和PC机所能承受,同时上述成果也没有涉及精确的时空条件对于海洋场景的影响.此外在Unreal Engine和Unity3d等虚拟图形引擎上也涌现出不少真实感天气模拟系统,涉及晴天、雨雪等天气现象的简单模拟,但大多限于某个陆地或小范围水面昼夜交替现象模拟.综上所述,目前对于精确的时间和空间条件驱动下大规模海洋场景的研究尚不多见.

2 天体及海浪绘制

2.1 天体绘制

Fig. 1 The process of drawing celestial bodies图1 天体绘制流程

为更好展示太阳、月亮在天空中的运动状态以及其运动导致的天空颜色的变化,采用天空球代替传统的天空盒来生成天空背景,太阳和月亮采用球体建模,在天空中的位置则使用球面坐标高度角(altitude)和方位角(azimuth)描述.在此引入文献[15]提出的简化天文模型来计算天体的高度角和方位角,具体流程如图1所示.

在进行坐标转换计算时还需考虑观察者所在位置的地理纬度和经度.月亮的位置计算比太阳略微复杂,其黄道球面坐标按照文献[16]中的方法进行求解,后续步骤与太阳的位置计算类似.

2.2 海浪绘制

综合考虑大规模海洋场景模拟的真实性和实时性,采用海浪谱结合IFFT方法进行海浪建模.这里引入文献[17]中提出的风力驱动长短波统一的方向谱进行海浪绘制,谱定义如式(1)所示:

其中,k为波数,θ为波相对于风的方向夹角,Bl和Bh分别为长波和短波的曲率谱,Δ(k)为逆风-侧风比参数,可以通过文献[17]中递推公式求得.该谱的关键特征是在长波区域和短波区域都具有相似描述,谱的方向传播函数关于风向对称,具有波数和风速的依赖特性,且该谱长波部分是根据JONSWAP谱推导而来,因此蕴含风距参数.

表1对本文采用的长短波统一谱与P-M谱、Phillips谱、JONSWAP谱和TMA谱做了对比.其中P-M谱只蕴含风速参数,Phillips谱增加了风向参数,JONSWAP谱和TMA谱在Phillips谱基础上引入风距参数,但其均为典型的长波谱,而长短波统一谱在涵盖了风速、风向、风距参数的基础上,还有效弥补了上述4种谱在短波绘制效果上的不足.

Table 1 Comparison of Ocean Spectrums表1 海浪谱对比

3 海面综合光照渲染模型

海洋系统光照情况复杂,大气、海洋表面以及海下的光线传播均能影响到海洋最终的光照效果,因此构建如图2所示的包括大气散射、海洋表面反射、海洋内部散射在内的海面综合光照渲染模型.

Fig. 2 The comprehensive illumination model of the ocean图2 海面综合光照渲染模型

3.1 大气散射模拟

太阳光在穿越大气时会发生散射和吸收,从而使天空与太阳在全天不同时刻呈现出不同颜色.大气散射可以分为瑞利散射和米氏散射,晴朗的天空白天大部分时间呈现出蔚蓝色;地平线处颜色偏白,甚至出现不透明的灰白色;夜晚天空颜色接近蓝黑色,这些颜色的变化均由瑞利散射造成.而米氏散射引起的典型现象是太阳周围天空颜色比其他地方明亮,从中心到四周扩散递减直至与太阳垂直方向的天空.完全基于物理的模拟大气散射现象,计算量过于庞大,不适于实时交互应用的需要.

为快速有效实现大气散射引起的天空颜色变化,采用基于颜色渐变纹理叠加简化散射方程的方法进行天空颜色的渲染.首先,根据日常观察到的晴天天空颜色特征,生成如图3所示的天空颜色渐变纹理,该纹理被均分为12段,最左边、中间和最右边分别为凌晨0点、早上(傍晚)6点和正午12点时的天空颜色.其次,根据当前时间和天空球顶点位置,对颜色渐变纹理进行采样和插值计算,最终,得到天空球网格顶点随时间变化的基本颜色渐变序列.

Fig. 3 The gradient texture of sky color 图3 天空颜色渐变纹理

为实现因吸收和米氏散射引起的天空颜色特征,加入对光线吸收和米氏散射效果的近似模拟,

C=(1-fa)(1-fex)ΦM(θ)Csun,

(2)

其中,fa为大气吸收系数,fex为散射中的衰减系数,ΦM(θ)为米氏散射的相位函数,Csun为太阳本体颜色,通过获取当前时间对太阳本体颜色渐变纹理进行采样得到,太阳颜色渐变纹理如图4所示,其划分同天空颜色渐变纹理.将计算得到的颜色结果同之前采样颜色渐变纹理的结果叠加得到最终的天空颜色.

Fig. 4 The gradient texture of sun color 图4 太阳本体颜色渐变纹理

3.2 海洋表面反射计算

到达海面的光线,一部分在海洋表面发生反射,采用BRDF求解.借鉴Bruneton等人[5]提出的海面微面元BRDF模型,从观察者和光源方向均能看见微面元的概率为

(4)

(5)

其中,h为v和l之间的半向量,Fr为菲涅尔系数,可通过式(6)近似求得:

Fr(v·h)≈R+(1-R)(1-v·h)5,

(6)

则反射太阳光的辐射度可计算为

(7)

其中,Lsun为太阳辐射度,Ωsun为太阳立体角.

反射天空光的辐射度计算采用对3.1节中生成的天空各向异性贴图进行直接采样,并在采样结果中加入人工校正参数,具体如下:

Isky=tex2Dlod(L,u(v,0)fdistort)ftint,

(8)

其中,L为天空环境纹理贴图,u为纹理坐标,fdistort是纹理坐标变形参数,ftint参数用来调整纹理采样后的最终颜色效果.与文献[5]中对天空纹理进行梯度采样之后乘以菲涅尔系数的做法相比,渲染结果相差不大,但对纹理坐标的简化计算,提升了采样速度.

3.3 海洋次表面散射计算

到达海面的光线除了在海洋表面发生反射,还有部分光线进入海水内部,经过吸收和散射后再从海水表面射出,这种现象称为海洋的次表面散射.次表面散射通常用双向表面散射反射分布函数(bidirectional surface scattering reflectance distribution function, BSSRDF)来描述,基于物理的求解BSSRDF可以取得高逼真度的绘制效果[18-21],但难以满足实时绘制的需要;基于预计算的求解方法[22-24]可以实现实时绘制,但是由于预处理时间较长,较难应用于动态大规模场景,因此在实时交互的场景绘制中一般采用近似模拟方法[25-26],但是也多集中于模拟皮肤、玉石、牛奶等材质,对于海水的次表面散射的模拟,尚不多见.

海水是一种高度散射的介质,尤其在深海中多重散射占主导地位,即使原始光源分布和相位函数呈高度各向异性,经过多次散射后光线在海水中的分布也均趋于各向同性.根据深海海水的这种特性,考虑忽略掉耗时巨大效果又不甚明显的海水单次散射计算,对于海水中的多重散射则采用双极点光源漫反射近似法求解,示意图如图5所示:

Fig. 5 The diffuse approximation due to the dipole source图5 双极点光源漫反射近似

图5中,置于海面下zr处的为正的真实点光源,海面上zv处的为负的虚拟点光源,r为出射点xo与入射点xi之间的距离,ωi和ωo分别为入射光和出射光方向.

在这种情况下,通过文献[18]中的公式推导可得漫反射公式

(9)

加入入射和出射光线在海面处的菲涅尔透射系数,可得BSSRDF的漫反射项

(10)

其中,Ft为菲涅尔透射系数,则海面的次表面辐射度可计算为

(11)

考虑到并不是海面上所有点都会产生次表面散射效果,为减少双重积分带来的计算代价,对于海面上任一点xi,本文根据其法线与观察者视线方向和太阳光方向的位置关系计算位置参数s,当满足阈值要求时才对其进行积分求解.

综合3.2节计算求得的反射太阳光和天空光辐射度,最终海面的辐射度为Isun+Isky+Isea.

4 实验结果及分析

为验证本文方法的有效性,基于Unity3D图形引擎,通过C#脚本语言和Cg着色语言,设计多个实验实现时空驱动的大规模真实感海洋场景实时绘制,并在多个硬件平台下进行了验证与对比.

表2列举了不同风速下采用不同海浪谱绘制海浪对比效果.第2列为文献[5]中采用次摆线波采样P-M谱方法绘制的海浪,可以看出其海浪在形态上过于规整,视觉效果不佳;第3列为采用Phillips谱绘制的海浪,可见Phillips谱更适于模拟波涛汹涌的海面;第4列为本文方法模拟的海浪,由对比图可知本文方法绘制的海浪在平静和波涛汹涌的状态下均有良好表现.

图6为文献[5]与本文方法模拟的光照效果对比图,从左到右依次为只添加了反射太阳光的效果、只添加了反射天空光的效果、只添加了海洋散射光的效果和三者叠加之后的综合光照效果图.在反射太阳光模拟上,两者在模拟方法上并无本质区别,但是由于海浪建模方法的不同,导致模拟效果不同,可以看出文献[5]有大片的高光效果,改变文献[5]中的波弥散关系和波传播方向参数,高光现象有所减弱,但仍然很明显,与现实生活中阳光照射在海面上产生波光粼粼的效果具有一定差距,而本文模拟的效果弱化了高光效果,更偏重于波光粼粼的效果模拟.在反射天空光的模拟上,本文与文献[5]的效果相差不大.在海洋散射光的模拟上,文献[5]在计算海洋的散射光时假设海面的散射辐射度同太阳光辐射度和天空光辐射度之和成正比,其值为到达海面的辐射度与菲涅尔透射系数的乘积,所以只添加海洋散射光效果的海面是纯色的,而本文的方法进行了海洋次表面散射光的辐射度计算,因此海洋表面产生了颜色差异.综合3种光线最终效果,本文的方法在视觉效果上更为真实.

Table 2 Comparison of Waves with Different Wind Speeds表2 不同风速条件下海浪绘制效果对比

Fig. 6 Comparison of ocean lighting图6 海洋光照对比效果图

图7为次表面散射效果图,图7(a)为真实照片中的次表面散射效果,海浪呈现半透明效果;图7(b)为文献[11]中模拟的结果,半透明效果不明显;图7(c)为本文模拟的只有BRDF的海面,几乎没有半透明效果;图7(d)为本文模拟的添加了BRDF和BSSRDF的海面效果,更接近真实照片.

Fig. 7 The simulation of subsurface scattering effect图7 次表面散射效果模拟

Fig. 8 Subsurface scattering effect with different parameters图8 不同参数条件下次表面散射效果图

图8为在不同参数和不同光线散射次数条件下模拟的海洋次表面散射效果图,图8(a)为30次光线散射次数下分别采用参数1、参数2和参数3模拟的效果,图8(b)为100次光线散射次数下分别采用参数1、参数2和参数3模拟的效果,具体参数设置详见表3.由效果图可知散射30次和散射100次,在海洋次表面散射模拟视觉效果方面并未明显提升,但帧速率影响则相当明显,综合考虑模拟效果和效率,本文在后续实验中将光线散射次数定为30次.

Table 3 Parameters of Subsurface Scattering表3 次表面散射参数

表3中,σa,σs分别为吸收和散射系数,Φ为单位表面受到的辐照能,g为散射角的平均余弦值,η为相对折射率.

Fig. 9 Different states of the sun and moon driven by time and space图9 时空驱动的太阳月亮不同状态效果图

表4展示了本文模拟的黎明、上午和夜晚海面光照效果与文献[5]和实际拍摄照片的对比图.黎明时由于大气散射作用,海平面及太阳附近天空会呈现出橙红色;上午阳光照射到海面上产生波光粼粼的效果,而不是大片的高光效果;晚上月光照射下的海面也会呈现出波光粼粼的效果,而不是文献[5]中模拟的漆黑一片.文献[5]在模拟海面光照方面堪称经典之作,但经效果图和真实拍摄照片对比,本文模拟的效果要优于文献[5],更具有真实感.

图9展示了不同时空条件下太阳和月亮的不同状态以及引起的海面光照变化效果.在相同时间不同纬度情况下,纬度越低,离太阳直射点越近,太阳越早升起;而相同纬度条件下,在夏至前,每天日出时间都会提前,图9(a)~(c)很好地再现了这一现象.而图9(d)~(f)则较好地渲染了不同月相情况以及月亮在白天的消隐状态,符合客观事实.

Table 4 Lighting Effect at Dawn, Morning and Night表4 黎明、上午和夜晚海面光照效果图

为检测时空驱动下大规模海洋场景绘制方法的可行性与有效性,本文在多个平台上进行了实验验证,硬件参数如表5所示.

在平台1上改变次表面散射模拟中的散射次数,分别采用天空盒作为天空背景和采用时空驱动天空绘制天空背景,得到帧速率如图10所示.由图10可知,随着散射次数的增加,帧速率下降明显,散射100次,帧速率只有40 fs左右.同时,因时空驱动天空绘制方法采用了天空球进行天空建模,太阳和月亮也采用了球体建模,因此网格数的增加,导致帧速率略有下降,但同散射次数相比,时空驱动天空绘制方法对帧速率的影响是次要的.

Table 5 Frame Rates of Large Scale Ocean Scenes on Different Platforms(The Resolution is 1024×768)表5 不同平台上大规模海洋场景模拟帧速率(分辨率为1024×768)

Fig. 10 Frame rate of different scattering times图10 不同散射次数下绘制帧速率

同样地,在平台1上,改变分辨率和渲染三角网格数进行实验验证,由图11可见随分辨率和网格数的增加,帧速率略有降低,但最低仍能保持在56 fs,完全可以满足实时应用需求.

在4个平台上分别在天空盒背景和时空驱动天空背景下验证只有BRDF模拟效果和同时添加了BRDF和BSSRDF效果的实验效率,平均帧速率如表5中数据所示.综合图10、图11以及表5中的数据可以得出,本文提出的时空驱动的天空绘制方法和海洋表面次表面散射模型的绘制效率较高,完全符合实时模拟要求.

Fig. 11 Frame rates of different resolutions and different mesh numbers图11 不同分辨率不同网格数条件下绘制帧速率

表6分别在是否时空驱动、海浪绘制效果、光照渲染方法以及是否实时4个方面对文献[5,7,11-12,14]与本文方法做了对比,其中文献[7]和[11]未展示多种状态下的海浪效果,在光照渲染方面,文献[7]和[14]并未明确提及光照方法. 综合表中数据,本文方法涵盖内容更为全面,更能真实展现大规模海洋场景,并且满足实时应用的需要.

Table 6 Comparisons of Our Method and Other Literatures表6 本文方法与其他文献方法对比

5 结 语

本文成功实现在精确的时空驱动条件下大规模真实感海洋场景实时渲染.采用简化天文模型代替原有的椭圆轨道计算天体运行位置;引入风力驱动的统一方向谱进行海浪建模,弥补现有海浪谱在短波绘制效果上的不足;将大气、海面和海下综合考虑,构建海面综合光照渲染模型,真实展现不同条件下海面光照效果.实验表明,所提出的方法能够实时逼真再现时空驱动条件下的大规模真实感海洋场景.未来将考虑加入云、雾等天空元素,进一步增强海洋场景的真实性.

猜你喜欢

海面海浪光照
肉种鸡的光照不应性对养殖生产的不良影响分析
丫丫和小海浪
海浪
海面床,轻轻摇
樊应举
第六章 邂逅“胖胖号”
隐蔽的力量
暗礁
水禽舍的光照及其控制
蛋鸭的光照管理