POPPUR爱换

 找回密码
 注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

搜索
查看: 2903|回复: 15
打印 上一主题 下一主题

雨中路面湿润效果的实时建模与绘制

[复制链接]
跳转到指定楼层
#
发表于 2009-8-12 14:48 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 iverlin 于 2009-8-12 14:52 编辑

自然场景的建模与绘制一直是计算机图形学研究的热点和难点之一.在各种虚拟自然景物中,地面湿润效果对于阴雨天气下的虚拟场景的真实再现起着不可或缺的作用,它在动画游戏、虚拟现实、驾驶仿真和影视特技等方面都有重要的应用.
  虚拟雨场景中湿润路面的模拟涉及到比较复杂的物理机理,包括:
  1)当地面上有不同高度的水时,湿润地面将呈现出不同的反射效果;
  2)由于路面水坑的镜面反射,路边景物会在湿润地面上产生模糊的倒影;
  3)夜晚,有路灯和车灯时,湿润的路面上会映有憧憧的灯影,灯影往往会被拉得很长;
  4)凹凸不平的路面,往往会有水坑形成,此时雨滴的溅落会产生涟漪效果,而采用传统的图形学方法无法逼真地模拟地面湿润.同时,实时漫游的需求要求湿润场景的绘制必须能达到实时的速度.这些都为湿润地面的建模和绘制提出了新的要求.
  目前流行的3D游戏中要么没有专门绘制湿润效果,要么采用纹理映射来生成简单的湿润.国内外研究湿润模拟的工作还较少.1990年,Nakama等提出了绘制雨后湿润的路面的算法.他们根据湿润程度将路面分成不同类型,计算其不同反射,绘制出比较逼真的地面湿润效果.但是,他们的算法在绘制时采用的是经验数据,这导致参数的确定相当烦琐,同时采用光线跟踪的方法渲染整个场景,绘制速度很慢,只能用于雨后场景静态图像的生成,且无法绘制雨中的涟漪等效果.1996年,Dorsey等建立了水粒子吸收模型、沉积模型来模拟水流对材质外貌的影响,通过分析水粒子的吸收、沉积等因素,对水流过材质表面形成的效果进行了理论分析和数值模拟.1999年,Jensen等提出一种基于物理的绘制湿润材质的方法,通过菲涅耳公式计算不同情况下的反射值;但由于其绘制是基于光线跟踪技术的,仍无法满足实时的需求.
  前人虽然对地面湿润的物理模型和模拟进行了研究,但绘制速度都较慢,且未考虑湿润地面与环境的交互,即无法模拟湿润地面的景物倒影、灯影、涟漪等逼真效果,一些虚拟仿真系统也很少涉及湿润效果的模拟.
  本文从湿润效果的物理模型出发,对湿润效果及倒影、灯影、涟漪等效果进行了建模和绘制,并采用GPU加速绘制的方法,最后实时绘制不同情况下的逼真湿润效果.
  1、湿润效果的建模雨中路面湿润效果的实时建模与绘制
  要逼真地模拟湿润场景,首先应进行湿润效果的物理建模.
  1.1基于双层反射理论的湿润建模
  地面湿润时,不同地方会呈现不同的外貌,有的比较明亮,有的比较灰暗,这可以用双层反射理论来解释.由于湿润地面有一层或多或少的水层,从而在这里形成了一个由空气、水面和路面3层相邻的介质.光线在这3种介质之间将会产生双层反射,图1所示的双层反射模型不仅考虑了光线在水层表面和材质表面发生的反射,而且考虑了在水层中的折射;由于路面的材质不同、路面水层的厚度也不同,从而呈现不同的反射效果.


  为了简便计算,我们假定:1)水层比较浅;2)水面是平静的;3)忽略水层对光能的吸收,光线在水面无损耗地分成反射光和折射光;4)光线在材质表面被完全反射.
  由菲涅尔公式可计算反射率



  其中,i1为入射角,iz为折射角.记Rd为双层反射模型的反射率,R1为光线在水面发生第一次折射(光线由空气射入水中)时的反射率,R2为光线在水面发生第二次折射(光线由水中射入空气)时的反射率;则有Rd=R1+(1一R1)(1一R2),R1和R2的值均可由式(1)计算得出.
  1.2基于子面反射理论的湿润倒影
  湿润效果之所以难以模拟,还在于湿润时常有时隐时现的景物倒影出现.倒影的模拟包括2个方面:倒影形状和位置的计算和模糊倒影的颜色绘制.对于前者,可通过反射定律,景物在湿润地面上的倒影就是被反射景物相对于反射体平面的镜像.
  倒影之所以肘隐时现,是因为湿润的地面散射和吸收了更多的光线强度,这可以采用子面反射理论来解释.当路面材质有水湿润时,水通常会填充起材质表面上的那些空穴,从而使路面材质的平均散射角减小.由于光线在湿润路面材质中发生了更多次散射,在材质中经过了更长的路径,因此更多的光线强度被吸收,景物的倒影就变得模糊不清了.
  1.3夜晚灯影效果
  在夜晚,灯光在湿润的路面上会有灯影出现,但由于湿润地面比较粗糙,既有漫反射又有镜面反射,一般的Phone光照模型不太适用.本文采用Torrance—Sparrow光照模型.在这种光照模型中,假设物体表面由许多细小的、朝向随机分布的微平镜面组成,当光照射到物体表面时,其反射性质由微平面的朝向分布情况、反射率以及微平面之间的相互遮蔽关系所决定.反射光强

  其中,Ipa,Ipd和Ips加分别为环境光、漫反射和镜面反射光强;Ka,Kd和K,分别为环境光反射、漫反射和镜面反射系数;Dk为微平面斜率分布函数;V为视线方向;L为光线方向;N为物体表面的法向;G称为几何衰减因子.在湿润的路面上,由于水的影响,各微小平面的法向量均趋向于竖直向上,但路面依旧是凹凸不平的,各微小平面并不是处于一个高度上,所以灯影被拉得很长.

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
15#
发表于 2009-8-14 11:05 | 只看该作者
留名,看不懂,膜拜。
回复 支持 反对

使用道具 举报

14#
发表于 2009-8-14 09:42 | 只看该作者
国内浙大的图形学是比较出名的,
不过这篇看起来更像一篇节选
回复 支持 反对

使用道具 举报

13#
发表于 2009-8-13 23:34 | 只看该作者
计算机图形学就是数学系的一个分支。

提起数学我就头疼
回复 支持 反对

使用道具 举报

12#
发表于 2009-8-13 23:00 | 只看该作者
论文》 .......
回复 支持 反对

使用道具 举报

11#
发表于 2009-8-13 22:08 | 只看该作者
是不是和STALKER晴空达成的效果一致?
回复 支持 反对

使用道具 举报

10#
发表于 2009-8-13 21:03 | 只看该作者
哥们搞的是毕业设计吧
回复 支持 反对

使用道具 举报

9#
发表于 2009-8-13 18:49 | 只看该作者
论文
回复 支持 反对

使用道具 举报

8#
发表于 2009-8-13 18:32 | 只看该作者
这个我在哪一期的计算机图形图像学报上看到过,是浙江大学CAD/CG国家重点实验室的人写的,莫非LZ是高人?
回复 支持 反对

使用道具 举报

7#
发表于 2009-8-13 13:27 | 只看该作者
该怎么用就怎么用
回复 支持 反对

使用道具 举报

6#
发表于 2009-8-13 00:09 | 只看该作者
这个是楼主写的?
回复 支持 反对

使用道具 举报

5#
发表于 2009-8-13 00:00 | 只看该作者
不知道这种帖子是不是应该转到那个体系架构区,在那里不会沉,呵呵。
回复 支持 反对

使用道具 举报

4#
 楼主| 发表于 2009-8-12 21:25 | 只看该作者
看来这种贴 没人看
回复 支持 反对

使用道具 举报

3#
发表于 2009-8-12 15:58 | 只看该作者
完全不懂……
回复 支持 反对

使用道具 举报

2#
 楼主| 发表于 2009-8-12 15:04 | 只看该作者
  4、绘制结果
  依据本文方法,我们在PⅣ2.8GHz CPU,2.0GB内存的高档微机上实现了不同湿润效果的真实感模拟,绘制场景为任一野外场景,图像大小为800×600(像素),绘制速度达到了平均28帧/s.


  图2~4所示为我们绘制出的湿润效果结果.其中,图2所示为一个近距离湿润效果的模拟结果与实拍照片的比较,可以看到,仿真效果还是十分逼真的.图3所示为白天湿润效果的模拟结果,可以看到,不同的地面区域呈现不同的湿润反射和折射效果,包括模糊的倒影.由于离视点越近路面反射光所占的比例越大,因此远处的水坑会显得较亮,而近处的水坑往往可以透过水面看清路面的细节.图4所示为夜晚湿润效果的模拟结果,可以看到不同情况下的班驳光影.我们可以在场景中实时交互漫游,任意观察不同的湿润效果.

  5、总结与展望
  本文基于双层反射模型和子面散射模型提出一种实时渲染湿润路面的算法.该算法没有采用光线跟踪技术这类计算量巨大的方法,而是采用GPU加速技术使得绘制所需时间少;同时,从湿润的物理模型出发,使用菲涅耳公式等来计算,保证了虚拟场景的真实感.采用本文算法还可以进一步绘制湿润情况下路旁景物倒影、夜晚灯光映影以及路面积水涟漪,即实时绘制逼真的湿润环境,可以应用于各类虚拟雨场景中.
  目前我们算法中的湿润区域分布还比较规则,未来的工作可以建立连续参数表示的湿润模型;同时采用GPU等绘制技术提高雨场景湿润路面的真实感和绘制速度,并将湿润融入到海滩场景、河岸场景等虚拟场景中.

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

1#
 楼主| 发表于 2009-8-12 14:53 | 只看该作者
  2、湿润效果的绘制

  根据第1.1节的模型,我们可以进行湿润效果的绘制.众所周知,路面往往是凹凸不平的,因此雨场景中路面各处的湿润状况是不同的.为了快速绘制湿润效果,我们将路面的湿润程度归为4类:干燥、湿润、浸透和水坑。对应不同类型的路面,采用不同的绘制方法.

  2.1湿润路面的绘制

  对于水坑,首先采用双层反射模型来对其进行建模,对于路面上的每个采样点,采用式(1)来计算水坑表面各处的反射率.但若每帧都对水坑表面各处的反射率进行重新计算将非常耗时,为了加快计算速度,我们根据路面的特点,先预计算路面的反射率,然后将之保存在一张与路面采样率相同大小的二维表中,以在实时绘制时调用.

  对于能反射进入人跟的入射光,距视点水平距离D处的入射角为i1=arctan(D/H).其中,H为视点的高度,这里的入射光主要是天空光Isky.当光线在水面发生反射时,反射光接近天空光颜色;而光线在路面发生反射时,反射光接近路面颜色.对于任一点,将天空光与路面纹理以一个合适的因子相混合.对于不是水坑的湿润地面,重新计算其反射率,此时路面的反射起主体作用;然后采用与上面类似的方法来模拟.同时在湿润与水坑的交界处进行模糊处理,最后绘制出逼真的湿润效果.

  2.2湿润场景的绘制

  要绘制湿润场景,还需要绘制路面上的倒影和灯影,以及下雨时湿润地面上的涟漪.

  对于倒影,根据反射定律计算出位置后,在上面湿润的效果上再叠加一层倒影层,即可实现倒影效果。对于倒影的颜色,可以通过子面反射理论计算倒影的光线颜色.如果经过反射后光线的衰减率为kzm,则倒影的颜色为I’w=Iw*Kzm。,其中Iw为物体原始的颜色强度.对应于路面不同湿润程度的区域忌。不同,从而水坑处的倒影要比湿润处的清晰一些.

  夜晚的环境光是非常弱的,如果水坑表面没有灯的镜像,水坑会比周围的湿润区域都暗.对于夜晚路面灯影,按照Torrance-Sparrow光照模型来计算该路面的强度变化,将该强度叠加到路面上.对应于不同的灯光,路面将产生不同颜色的灯影效果.

  由于湿润常常发生在下雨天,因此下雨时地面上的涟漪也可增加湿润效果的真实感.由于采用物理的方法生成涟漪非常费时,本文采用动态纹理来生成,即通过程序生成涟漪的几张动态纹理,从左到右,半径分别为10,15,20,25和30像素.在绘制每帧时,我们都会随机地选择水坑区域的某些点,贴上涟漪的动态纹理,从而用非常小的代价表现出湿润地面上的涟漪效果.

  3、实时绘制的实现

  3.1湿润效果的成像

  在进行湿润效果绘制时,由于涉及到光线的多次折射和反射,若要精确地跟踪光线的路径,可采用光线跟踪的算法.但传统的光线跟踪算法需要反复递归地跟踪通过屏幕的每一条光线,因此绘制速度较慢.为了能够实时地绘制出湿润效果,本文采用一种改进的路径跟踪算法.

  该算法的基本思想是:从视点出发,通过地面上每个采样点发出一条光线,按照第2.1节的原理,逆向跟踪这条光线经过湿润地面的空气、水层、路面等介质时发生多次反射和折射的传播路径;然后根据菲涅尔公式,考虑在此过程的反射、衰减和吸收,计算出经过该路径最后进入人眼的光线强度;将此光线强度转化为颜色,即得最后的湿润成像颜色.

  该算法只需要对路面离散采样一次绘制即可,避免了复杂的光线与景物的求交运算,同时我们可以采用自适应采样,即距离较远的路面采用较稀疏的采样,较近的采用比较密的采样,从而提高绘制速度.

  3.2实现步骤

  本文算法步骤如下:

  Stepl.根据要模拟的湿润效果,初步建立一个阴雨天气场景,包括路面、树木、房屋、采用粒子系统生成空中的雨点以及采用天空盒生成的天空背景等.

  Step2.对待凸凹湿润地面上的每一个采样点,连接视点和该采样点形成一条光线,利用第1.1节的方法,逆向跟踪该条光线的入射光线(即天空光),从而得到经该点反射进人眼的光线路径.

  Step3.利用菲涅尔公式和子面反射理论等,计算经过该路径最后到达人眼的光线强度;在该光线强度上叠加倒影和灯影等光强,最后绘制湿润效果.

  Step4.改变不同的参数条件,如路面类型、灯光颜色等,可以实时地绘制出不同场景下的湿润效果。

  3.3  GPU加速绘制技术

  我们还进一步采用最新的GPU加速技术来进行湿润场景的加速绘制,即利用最新的显卡加速技术来加速绘制.GPU加速主要通过顶点着色器和像素着色器来进行加速.

  具体地,在计算光线的路径时,可以采用顶点着色器来快速计算光线的路径,即先将光线的初始坐标传入显卡,然后将跟踪光线的变化过程均放在GPU上计算.现在GPU运算已经具有了较强的可编程能力,由于避免了CPU和GPU之间的反复数据传递,同时很好地利用了GPU的并行性,可以大大地提高绘制速度.同样地,对应于路面上的每个点,可以利用像素着色器来计算光线强度;在叠加倒影和灯影等光强时,也可利用像素着色器来加速绘制.最后可以通过GPU技术来绘制灯光周围的光晕等,以增强整个场景的真实感.采用GPU技术后,场景绘制速度提高了8倍左右.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

广告投放或合作|网站地图|处罚通告|

GMT+8, 2025-9-27 00:05

Powered by Discuz! X3.4

© 2001-2017 POPPUR.

快速回复 返回顶部 返回列表