APP下载

一种改进的海洋场景中反射光学效果实时渲染方法

2018-10-26张浩然张利辉周升腾

小型微型计算机系统 2018年9期
关键词:倒影海面纹理

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

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

1 引 言

自然景观中,如烟雾、火焰、水体等这些常见流体的模拟一直是计算机图形学领域里一个非常重要的研究方向.其中,占地球表面积70.8%的海洋,因其规模巨大、运动复杂和环境多变的特性,渲染结果的实时性和真实感很难得到保证.

近年来,国内外的学者对海洋场景的实时模拟做了很多工作,从波浪的运动学特征模拟到海面物体的交互性等方面都进行了十分细致的研究.但在海洋的光学效果模拟上,由于缺乏物理规律的考量,所绘制的海面倒影呈现静止不可控的景象,缺失了一定的真实性.

2001年,Tessendorf提出基于统计模型波浪谱的仿真理论,利用Phillips频谱和快速傅里叶变换方法,成功模拟出受风力影响的海面[1],但是在海面光学效果上,仅考虑了Fresnel反射影响因素,其它并未做更多的探索和尝试.2006年,微软研究院的胡耀华等人基于纹理贴图的方法,实时地模拟了水体的反射和折射效果[2],但其局限于小规模相对静止水面,并不适合大规模的海洋场景.2008年任鸿翔等人采用立方体纹理映射、平面反射及Phong镜面反射技术模拟海面对天空、景物、太阳的反射效果,并在海面的折射效果中考虑了海水深度的影响[3],但Phong光照模型本身考虑因素较少,光照细节得不到满足.2010年,法国自动化研究所的Bruneton等人根据细节需求等级,结合法线向量和BRDF(双向反射函数)模型,多角度实时获得了很好的光照效果[4],但由于采用摆线进行波浪的建模,波浪运动与海面反射光学的整体效果在一定程度上有所削弱.2014年Ament从物理光学角度入手,分析反射折射辐射公式[5],十分真实地渲染出夕阳下轮船的景象,但其计算过于复杂,无法满足实时性的要求.2016年,唐勇等人对近岛海洋场景中的海水色彩进行实时绘制[6],模拟出海岛倒影和水下沉船的光学效果,但由于近岛位置水面较为平静的特性,在光学效果上有所欠缺.同年Ma等[7]从海洋生物光学入手,考虑浮游生物对海水颜色的影响,同时结合BRDF模型,渲染出色彩十分丰富的海面,但其对海面的局部反射效果没有进行模拟.2017年Stomakhin通过采用良好边界处理机制[8],真实地展现了多种海洋交互场景,完成了迪士尼影片《海洋奇缘》的制作,但其同样缺少对局部反射效果的模拟.

综上,据我们所知,目前对海洋场景的模拟,更多侧重于海面建模时海浪谱的选择,而在海洋光学方面尤其是反射光学效果上,尚未有研究反射倒影变化的渲染仿真.为解决上述问题,本文采用由风力驱动的长短波统一的方向谱[9]来构建海面;在海面光学方面,引入BRDF模型,消除传统光学模拟方法中,光照不自然的问题.同时,针对目前海面反射投影渲染工作中倒影不可控的现象,修改投影反射矩阵,较为真实地模拟倒影随时间变化的效果,具有较强的真实感,展现了更加丰富的海面光学效果细节.

2 构建海洋场景

2.1 海洋波浪运动仿真

在海洋场景中,海浪运动状态的模拟,是真实展现海面细节的基础环节.出于绘制质量和速度的要求,本文采用投影网格技术和基于Tessendorf的FFT方法,其中投影网格具有与视点相关的多层次细节属性,计算量小并且较为成熟;而FFT能够快速完成海浪谱频域到时域的转换,如下:

(1)

(2)

式中Bl为长波频谱,Bh为短波频谱,Δ(k)为整合统一后的波数因子,θ为波数向量与x轴的夹角.图1为两种海浪谱的对比,海面精度为2048x1024.与Phillips频谱相比,本文采用的海浪谱将长短波谱进行叠加,波峰波谷更为自然.

图1 两种谱绘制结果的比较Fig.1 Comparison of two spectral plotting results

2.2 构建海洋BRDF模型

在渲染的波浪运动场景中,引入光学模型,可以进一步表现丰富多彩的海洋色彩细节.传统的光学模型Lambert、Phong以及Blinn-Phong等,影响因子较少,可以用来模拟简单的金属表面和漫反射粗糙物体.但对于海洋场景中复杂的光学条件并不适用,故出于真实感的考虑,构建海洋BRDF模型,计算海面对日光和天空的反射效果,改善目前光学模型物理参数较少的问题.BRDF普遍定义为:

(3)

其中,l是入射光方向,v是观察方向.而dLo(v)是表面反射v方向的反射光的微分辐射率.dE(I)是表面上来自入射光方向l的微分辐照度.根据辐射率和辐照度的关系,借助球坐标系,可以得到公式(3)中第二个等式,以此计算表面发射的辐射率,得到反射方程如下:

(4)

在实际渲染工作中,文献[5]通过对具有各向异性的环境贴图进行纹理坐标的梯度采样,获得了BRDF复杂的反射计算结果,展现出海面多彩的反射效果.本文将采样过程进行简化,对环境贴图进行直接采样,消除纹理坐标(x,y)的梯度计算,同时添加人工参数进行校正,如公式(5)所示.

Isky=texture2Dlod(Lsky,uo*distort)*tint

(5)

式中,distort是对纹理坐标进行变形的参数,tint参数用来调整纹理采样后的最终颜色效果.图2为构建BRDF模型后与其他文献效果的对比,可以看出本文波浪运动效果较为自然,海面对天空和岛屿的光学反射细节更为丰富,为后续倒影的渲染工作奠定了基础.

图2 光学效果对比Fig.2 Comparison of optical effects

3 海面反射倒影改进

3.1 海面倒影的绘制

丰富的海面反射效果可以带来真实的视觉感受,其直观体现就是海面倒影的产生.类似于平面镜成像原理,倒影是物体经海面反射而产生的虚像.成像原理如下:

图3 两种反射对比图Fig.3 Comparison of two reflections

(6)

公式(7)中各个坐标的系数可以用一个标准反射矩阵M表示:

(7)

结合公式(6)和公式(7),则虚像位置Q′与实像位置Q的转化公式简化如下:

Q′(x′,y′,z′)=Q(x,y,z)·M

(8)

在计算机图形学中,一般使用模型视图投影矩阵来进行基本渲染管线的坐标变化,而在完成模型矩阵变换后,为了可以进行反射矩阵的变换.由世界坐标系转换到摄像机(视点)坐标系的过程中,对摄像机的V矩阵修改如下:

V=V·M

(9)

3.2 海面倒影修改

标准的镜面反射,可以在海平面上获得较好的光学反射效果.但与真实环境相比,这种反射纹理的运动并没有遵循物理客观规律.例如,物体的反射倒影只是进行与物体大小一致的反射投影,并没有考虑日光对倒影的拉伸影响.所以,这里对标准的镜面反射成像过程进行修改,获得可控的反射图像纹理,如图3(b)所示.与图3(a)相比,原虚像Q′点发生了偏移,角度为θ,此时所渲染的虚像点为Q″.

在此基础上,为赋予偏移角度θ更加实际的意义,与太阳运动(时间变化)等因素结合起来,本文将太阳的运动位置,以角度θ′进行具体量化,引申为一个控制因子,体现时间变化对海面倒影的影响.故在标准的反射矩阵M中引入这个控制因素,获得修改后的矩阵M′如下:

(10)

相比标准反射矩阵M,在矩阵M′中,仅仅加入角度θ′参数,对倒影的渲染速度影响较小,但却增加了对倒影生成过程的可控性,体现太阳位置对海面物体倒影的影响,较为真实地模拟出一天中海面倒影不断变化的景象.

3.3 重定向反射平面

将修改后的矩阵作用于物体纹理,建立倒影与太阳位置的联系,实现倒影随时间变化而偏移的自然现象.然而在物体纹理反射的过程中,并不是所有的纹理都需要被渲染,只需保留反射平面上的物体纹理即可,但随着矩阵M′中θ′的变化,摄像机V矩阵所确定的反射平面发生偏移,导致纹理在某个方向上被过度裁剪.

考虑到纹理裁剪的不正确因素在于反射平面的改变,故采用一种重定向反射平面的策略来消除这种影响.如下:

(11)

其中,p,n分别代表海平面的位置和法线,两者分别在矩阵M和M′作用下,得到不同的反射平面R.上述公式类似两个变量的替换,借助中间临时变量t,保存修改前的反射平面变量,即可完成反射平面R的重定向.

4 实验结果与分析

实验在windows 7操作系统,Unity3D Pro平台下进行,硬件系统为:四核 Intel Core i7-4790,8GB RAM,AMD Radeon R7 250显存2048MB.同时海面分辨率默认设置为2048×1024,满足大规模海面精细网格的需求.

图4 不同天气条件下反射效果对比图Fig.4 Reflection effects contrast in different weather

图4展现了不同天气条件下的海洋光学效果,图4(a)-图4(c)依次是晴天、傍晚和阴天时的渲染景象,均采用海洋BRDF模型,与图4(d)文献[4]效果比较,海水色彩和波浪的运动状态更接近于真实,天气变化的多样性也在场景中得到体现,海面的反射光学效果更加自然,画面更为逼真.

图5 反射投影时的过度裁剪图Fig.5 Excess cropping when reflecting prokections

图6 修正后船只不同时刻倒影图Fig.6 Ship reflection graphs at different times ofter the correction

图5展示了反射投影时的过度裁剪现象,图5(a)-图5(d)为4种逐渐加深的裁剪结果.因未对反射平面进行约束,反射矩阵中的θ′随着太阳位置变化而变化,导致反射平面发生偏移,对倒影进行不合理的裁剪.通过重定向反射平面,问题得到解决,实验效果如图6所示.

与图5相比,图6为重定向反射平面后,船只在不同时刻正确倒影的效果图.图6(a)到图6(e)分别展现了一天中五个时刻,倒影随太阳(时间)变化而倾斜的景象,不同时刻对应不同的倾斜程度,较为真实地模拟了反射倒影受环境特别是日光影响而产生的拉伸效果,图6(f)中,轮船倒影呈现静止状态,倒影较不明显,具有一定的局限性.

图7 真实轮船倒影对比图Fig.7 Contrast of real ship reflection

图7是渲染的轮船倒影与真实图片的对比,可以看出两者效果较为接近,证明本文的反射模拟方法较为可靠.而表1

表1 与文献[6]的渲染方法对比Table 1 Contrast with the rendering method of literature[6]

则是与文献[3]渲染方法的对比,在同等网格下,本文在保证实时性的同时,实现了倒影可控,效果上更加完善.

5 总 结

针对目前海洋场景在海面反射光学效果上真实感有所缺失的问题,本文提出一种基于渲染到纹理(RTT)和投影反射矩阵的改进方法,用来完善海面倒影随时间(太阳位置)变化而变化的景象.而对投影网格和波浪模型的选择,消除了Phillips频谱波浪运动单一性的问题.与此同时,我们引入海洋BRDF模型,较好地对日光以及天空的海面反射部分进行了计算,绘制结果十分真实.随后在标准的投影反射矩阵的基础上,引入控制参数,对矩阵进行修改,并以此作用于获得的海面物体纹理,从而真实地模拟出倒影在一天中随时间不断变化的景象.其中,为了避免出现反射纹理被过度裁剪的现象,在进行投影反射时,重定向反射平面,问题得到解决.通过与文献[4-6]绘制结果的对比和最后的数据分析,也表明了本文模拟方法具有一定的真实感和实时性,适用于动态倒影的渲染场景.在未来工作中,将继续研究海洋场景中多样的光学效果,包括水下折射,次表面散射以及海面海市蜃楼等自然景观,完善海水色彩细节,进一步在海洋光照方面做有益探索.

猜你喜欢

倒影海面纹理
倒影
海面床,轻轻摇
第六章 邂逅“胖胖号”
倒影之美
基于BM3D的复杂纹理区域图像去噪
暗礁
肺纹理增多是病吗?
TEXTURE ON TEXTURE质地上的纹理
找倒影
消除凹凸纹理有妙招!