中国汉化 - www.shanse8.com

直接加微信

鼠标放在右下面微信图标上,会弹出微信二维码

扫描二维码访问中国汉化官网移动版

成就您每时每刻您所需要的

扫一扫,加微信好友

可直接咨询与求助

-->

两种真实感渲染算法浅析 [复制链接]

  • 7954阅读
  • 53回复
离线 yanshuijin
楼主  发表于: 2010-09-01 只看楼主 倒序阅读
0F

中国汉化网提醒您:

— 本帖被 admin 从 精品模型 移动到本区(2010-09-01) —
作者:sinerjian zC!Pb{IaH  
*"j3x} U<  
目前比较流行的光线追踪技术和辐射度渲染技术可以统称为球型照明技术。在说明这两种渲染技术之前,有必要先谈谈一种真实感光照模型——整体光照模型。 86~q pN  
什么是整体光照模型?简单的说,就是在渲染过程中考虑了整个环境(在具体的3D制作软件中就是制作的场景)的总体光照效果和各种景物间光照的相互影响。这个思想最先由Whitted提出。因此,整体光照模型又被称之为Whitted整体光照模型,这种模型是在Photo模型(在后面将会讲到)中增加了环境镜面反射光亮度和环境规则透射光亮度两个因素,它除了考虑光源直接照射引起的反射光到达观察者的光亮度之外,还考虑从场景中其他物体镜面反射或透射来的光亮度。用公式表示就为: - s0QEQ  
I=Ic+IsKs+ItKt 3@mW/l>X  
这里有必要将各个参数解释一下: j.UO>1{7  
I:景物表面P点(这是一个假设点)向观察点辐射的光亮度。 'dcO-A:>  
Ic:光源直接照射P点引起的反射光亮度(这个亮度值按Photo模型计算) 4"Pf0PD:  
Is:其他物体因镜面反射而向P点辐射的光亮度。 o*s3"Ib  
It:其他物体因规则透射而向P点辐射的光亮度 VY "i>Ae  
Ks:景物表面P点的反射系数 3 ~\S]  
Kt:景物表面P点的透射系数 G!w?\-  
注意,这里It、Is的确定要求助于光线追踪算法。 /` 4B-Y4M4  
OK,现在进入正题。首先讲讲光线追踪算法。严格而言,光线追踪算法分为两种:正向追踪算法和反向追踪算法。其中,正向追踪算法是大自然的光线追踪方式,即由光源发出的光经环境景物间的多次反射、透射后投射到景物表面,最终进入人眼。反向追踪算法正好相反,它是从观察者的角度出发,只追踪那些观察者所能看见的表面投射光。就目前而言,所有3D制作软件的光线追踪算法都是采用反向追踪法,原因是这种算法能够最大程度地节省计算机的系统资源,而且不会导致渲染质量的下降。 z229:L6"  
下面就详细介绍一下反向追踪算法,如图: b "5WsJ:'#  
GsC4ty  
jW_FaPW(p  
如图所示,从视点出发,通过屏幕上一像素E的投射光线,求出光线与场景中最近的物体交点P1,在交点P1处,光线分为沿镜面反射方向r1和折射方向T1两支。追踪这两支光线,找出它们与场景中其他物体的交点Pt和Pr。要计算Pt和Pr点辐射的光亮度则还要继续追踪(这里要注意的是,图中显示的只是简单的光线追踪,实际情况中还要考虑其他光线对这个理想模型的影响)。从点Pr出发沿该点反射方向r2和折射方向T2进行追踪,从点Pt出发向r3和t3方向进行追踪。如此反复,直到被跟踪的光线射出场景或达到事先设定好的层次为止。(在3DSMAX中,光线追踪层的默认值为9,在绝大多数情况下已经够用,而且计算时还会考虑到光线衰减) X1Y+ao1)  
反向追踪算法首先要建立一个被分成细微栅格的2D平面,这个栅格会分得多小呢?小到只有显示器上的一个像素点那么大。然后,由原像素点“发射”一束光回到场景中,一旦光线到达物体表面,就必须确定该表面是否是反射表面、折射表面或发光表面,反射表面弹回光线,折射表面改变光线,而发光表面则被看成一个点光源(这里顺便提一下点光源与区域光源的关系:当一个点光源距观察者近时,通常就会把它看成一个区域光源;相对应的,一个区域光源在距观察者很远时,系统就会把它看成一个点光源)就这样,渲染器对整个场景中的每一束光线进行反射、折射运算。这也就是光线追踪速度极慢的根本原因。 [USE&_RN  
最后谈一下什么是双向光线追踪。反向和正向追踪算法相结合使用可以产生逼真的光线转移现象,尤其是在焦点镜面模拟方面(也叫做聚焦)。两种算法结合起来渲染的过程就被称为双向光线追踪。 Ss#UX_DT_  
光线追踪算法的基本工作原理就讲到这里,下面再看看辐射度渲染。 '1Q [&  
首先了解一下辐射度的定义:单位时间内在单位面积上向空间辐射的光能被称为辐射度。辐射度算法的基础是热力工程学,也就是说,它完全遵守能量守恒定律。请注意,遵守能量守恒定律就表明,辐射度渲染不会受到狭义上的“封闭空间”的限制。换句话说,无论是室内还是室外,只要能够保证场景中能量不被散失,就可以利用辐射度渲染法。 ]LZ,>v  
在1984年Goral等人首次提出辐射度方法以来,辐射度已发展了近二十年。但实际运用却只是近几年的事,其原因就在于这种算法对计算机资源消耗极大,以至于Goral在提出该算法后当时的超级计算机也无法完成其计算任务。辐射度算法的工作原理是假定其场景是一个理想的能量守恒环境(由于封闭室内是最简单的能量守恒环境,所以人们在最初研究辐射度算法时就采用了这个最简单环境以降低研究难度。从这个方面来说,狭义的“封闭室内”可以被认为是正确的),在此环境中从光源发出的光能经过景物间多重漫反射后最终达到平衡状态,因而每个元面所接受到的光能,除了一部分被元面转换成热能之外,其余的光能应向周围场景均匀辐射。(注释:什么是元面?这是一个计算机图形学术语。在辐射度算法中存在着光线发射器和接收器两个概念,其中的光线接收器就被称为元面,而发射器就被称为曲面片。关于光线发射器和接收器在后面的内容中将会进一步解释)因理想漫反射表面各点处的辐射度与光亮度成正比,故可以认为此时的辐射度就是所求的漫反射光亮度,用B表示。 K!_''Fg  
{Aq:Kh`&  
为了计算景物表面各点的辐射度,就需要把环境中景物表面分割成一个网格矩阵。在划分好的景物表面上所有接受光照区域必须能够发出光,也能更远地传播光。所以,辐射度中的能量是从光源到直接的周围环境。这些直接环境面积就成为下一次光能辐射的光源,即光线发射器。这就是对刚才注释中内容的解释。(不过将光线发射器称为曲面片另有原因,限于主题这里不作讨论)那么从上面的描述中我们不难发现,曲面片和元面之间并没有明显的界线,一个元面有可能也是一个曲面片。 M]M(E) *5  
实际上,辐射度直接计算的是离开一个曲面片到另一个曲面片能量的小部分,因为光能在传播过程中会转化为其他能量(如热能)。这种解决曲面片和元面相互作用的特殊设置过程被称为一个重复。 7NDjXcuq  
好,对于辐射度的基本工作原理讲清楚了,下面就深入探讨一下它的工作方式。 9U~sRj=D  
设渲染器将场景中的景物表面分割成若干个小的元面dA,每一元面具有均匀的辐射度,根据能量守恒原理,对于平衡状态下的理想环境,一个元面辐射(也可以是曲面片)出的光能应等于由它本身所具有的辐射光能和它接受来自场景中其他景物表面向该点辐射的光能所产生的反射光。用公式表示就为: 9aZ^m$tAt  
:_"%o=  
N3rQ]HZiP  
mL[Y{t#N  
解释一下式中各项参数的意思: XbKNH>  
Ei:如果元面为漫射光源,则Ei>0,它表示了理想环境中光源的来源;如果不是漫射光源,则Ei=0 ,?zOJ,wl  
Fi:形状因子,它反映了从元面辐射出去的光能到达元面i的比例系数。 dt|f4 XWF  
ρi:漫反射率,反映入射能量被漫反射出来的比例系数。 y<A%&  
n:场景中的元面总数。 <{UjO  
元面dAi的辐射度就为: wx%TQ!  
hCKx%&[^7  
[.`%]Z(  
这里要应用到一个对等关系式:FjidAj=FjidAi h1 (MvEt  
下图对上面的关系式作了一个诠释: [#-!&>  
j}$Up7pW  
bxA1fA;  
注意,这里给出的方程只能求出一个元面的辐射度,对于全局辐射度的计算就要联立方程组。呵呵,那个方程组相当复杂,这里就不讨论了(实际上我还没有搞懂)。 81<0B @E  
上述的辐射度方法知识模拟漫反射,不能模拟镜面反射和规则透射。所以为了模拟各种光照效果,Wallace等人想出了一个办法:将辐射度和光线追踪结合使用。首先,利用辐射度算法求出整体环境中的漫射光线分布,然后采用光线追踪技术求出整体镜面反射光和规则透射光对给定的屏幕像素光亮度的贡献。到了1987年,Wallace等人进一步推广了辐射度算法,使之适用于包含镜面、透明面在内的复杂光照环境。不过在当时由于计算量过于庞大,想运用于普通领域还是不可能的。 Lc:DJA  
到此两种流行的渲染算法就粗略地讲完了。其实这些只是渲染算法的皮毛,完全可以大大深入下去。不过越深入对数学的要求就越高,不幸的是小弟的数学又是在所有科目中学得最差的,所以就只有先讲到这里。下面是对文章中提到的一些名词的解释: #RA3 T[A  
Photo模型:学名为镜面反射模型,用公式表示就是:Is=Ip*Ks*COSnA(其实这里是余弦A的平方,无奈打不出来) (66DKG   
其中Is为镜面反射光在观察方向上的光强;Ip为点光源强度;Ks为镜面反射系数;A为视点方向与镜面反射方向的夹角;n是与物体表面光滑度有关的一个常数,一般取值1-2000,n越大,表面越光滑,反之越粗糙。 :xP$iEA`G  
透射:就是折射,有规则透射和漫透射两种。 U.B=%S  
Mip-Map技术:这个术语在本文中没有出现,是对mayax的文章中该词的解释。这项技术又叫锥形滤波器,原理是把边长为2个像素点的正方形纹理区域映射成一个像素点(这个点称为映像点),它的亮度值为原正方形纹理区域亮度的平均值。以此为依据,把原用离散法定义(大家知道有这个东东就可以了)的纹理模型数组进行逐层过滤,直到最后一层仅有一个映射点数据。 f; "6I  
到此,整篇文章就算全部结束了。朋友们可以在本文中各取所需,有些概念没有搞懂也没有关系,慢慢来,总会有进步的。 /-W-MP=Wd  
分享到
离线 kuaileshitou
发表于: 2010-09-01 只看该作者
1F
先站位置,慢慢研究
离线 cyrus2006
发表于: 2010-09-01 只看该作者
2F
配图死哪里去了。。麻烦转载也要有点专业精神好不好。。
离线 atiancong
发表于: 2010-09-01 只看该作者
3F
研究研究。!
离线 lous
发表于: 2011-06-24 只看该作者
4F
太深奥了
发表于: 2011-06-26 只看该作者
5F
太深奥,懒得研究,技术问题还是留给程序员去搞吧
离线 erke2010
发表于: 2011-06-29 只看该作者
6F
等待下续内容。。。
离线 k264663450
发表于: 2011-06-29 只看该作者
7F
图……图^
离线 1689438
发表于: 2011-07-08 只看该作者
8F
法国海关好翻
离线 asusa6tc2
发表于: 2011-10-20 只看该作者
9F
好深奥 `aIG;@Z  
快速回复
限150 字节
温馨提示:严禁胡乱恶意回复帖子,违者严惩,严重者封号!
 
上一个 下一个
      你的浏览器不支持js脚本,无法发帖,请修改浏览器设置,支持js脚本并刷新页面后再发帖!
      欢迎光临中国汉化网

      登录后更精彩!

      下拉
      使用快捷登录 或 免费注册