荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: belong (属于......), 信区: Hardware
标  题: 最终渲染 ---- 一点最终渲染的知识
发信站: 荔园晨风BBS站 (Tue Jul 29 15:17:22 2003), 站内信件

http://bbs.gzeasy.com/index.php?showtopic=36973

有几幅图的,要看的话去那个网址看吧

从“Ti4200中的sharder能帮助3dsmax渲染么?”的争论中,感觉大家还是对最终
渲染与实时渲染的关系不太清楚,所以想贴这个帖子来与HeavenPR的置顶贴配合一
下,讲清楚两者的区别。
正如HeavenPR所说,最终渲染与实时渲染是两回事。由于这里是硬件论坛的关系,
所以HeavenPR没有确切的说明光线追踪算法与辐射度算法的渲染原理而只是谈了实
时渲染中的一些基础问题的解决方法。
究竟什么是光线追踪,什么是辐射度呢?在说明这两种渲染技术之前,有必要先谈
谈一种真实感光照模型——整体光照模型。
什么是整体光照模型?简单的说,就是在渲染过程中考虑了整个环境(在具体的
3D制作软件中就是制作的场景)的总体光照效果和各种景物间光照的相互影响。这
个思想最先由Whitted提出。因此,整体光照模型又被称之为Whitted整体光照模型
,这种模型是在Photo模型(在后面将会讲到)中增加了环境镜面反射光亮度和环
境规则透射光亮度两个因素,它除了考虑光源直接照射引起的反射光到达观察者的
光亮度之外,还考虑从场景中其他物体镜面反射或透射来的光亮度。用公式表示就
为:
I=Ic+IsKs+ItKt
这里有必要将各个参数解释一下:
I:景物表面P点(这是一个假设点)向观察点辐射的光亮度。
Ic:光源直接照射P点引起的反射光亮度(这个亮度值按Photo模型计算)
Is:其他物体因镜面反射而向P点辐射的光亮度。
It:其他物体因规则透射而向P点辐射的光亮度
Ks:景物表面P点的反射系数
Kt:景物表面P点的透射系数
注意,这里It、Is的确定要求助于光线追踪算法。
OK,现在进入正题。首先讲讲光线追踪算法。严格而言,光线追踪算法分为两种:
正向追踪算法和反向追踪算法。其中,正向追踪算法是大自然的光线追踪方式,即
由光源发出的光经环境景物间的多次反射、透射后投射到景物表面,最终进入人眼
。反向追踪算法正好相反,它是从观察者的角度出发,只追踪那些观察者所能看见
的表面投射光。就目前而言,所有3D制作软件的光线追踪算法都是采用反向追踪法
,原因是这种算法能够最大程度地节省计算机的系统资源,而且不会导致渲染质量
的下降。
下面就详细介绍一下反向追踪算法,如图:

如图所示,从视点出发,通过屏幕上一像素E的投射光线,求出光线与场景中最近
的物体交点P1,在交点P1处,光线分为沿镜面反射方向r1和折射方向T1两支。追踪
这两支光线,找出它们与场景中其他物体的交点Pt和Pr。要计算Pt和Pr点辐射的光
亮度则还要继续追踪(这里要注意的是,图中显示的只是简单的光线追踪,实际情
况中还要考虑其他光线对这个理想模型的影响)。从点Pr出发沿该点反射方向r2和
折射方向T2进行追踪,从点Pt出发向r3和t3方向进行追踪。如此反复,直到被跟踪
的光线射出场景或达到事先设定好的层次为止。(在3DSMAX中,光线追踪层的默认
值为9,在绝大多数情况下已经够用,而且计算时还会考虑到光线衰减)
反向追踪算法首先要建立一个被分成细微栅格的2D平面,这个栅格会分得多小呢?
小到只有显示器上的一个像素点那么大。然后,由原像素点“发射”一束光回到场
景中,一旦光线到达物体表面,就必须确定该表面是否是反射表面、折射表面或发
光表面,反射表面弹回光线,折射表面改变光线,而发光表面则被看成一个点光源
(这里顺便提一下点光源与区域光源的关系:当一个点光源距观察者近时,通常就
会把它看成一个区域光源;相对应的,一个区域光源在距观察者很远时,系统就会
把它看成一个点光源)就这样,渲染器对整个场景中的每一束光线进行反射、折射
运算。这也就是光线追踪速度极慢的根本原因。
最后谈一下什么是双向光线追踪。反向和正向追踪算法相结合使用可以产生逼真的
光线转移现象,尤其是在焦点镜面模拟方面(也叫做聚焦)。两种算法结合起来渲
染的过程就被称为双向光线追踪。
光线追踪算法的基本工作原理就讲到这里,下面再看看辐射度渲染。
首先了解一下辐射度的定义:单位时间内在单位面积上向空间辐射的光能被称为辐
射度。辐射度算法的基础是热力工程学,也就是说,它完全遵守能量守恒定律。请
注意,遵守能量守恒定律就表明,辐射度渲染不会受到狭义上的“封闭空间”的限
制。换句话说,无论是室内还是室外,只要能够保证场景中能量不被散失,就可以
利用辐射度渲染法。
在1984年Goral等人首次提出辐射度方法以来,辐射度已发展了近二十年。但实际
运用却只是近几年的事,其原因就在于这种算法对计算机资源消耗极大,以至于
Goral在提出该算法后当时的超级计算机也无法完成其计算任务。辐射度算法的工
作原理是假定其场景是一个理想的能量守恒环境(由于封闭室内是最简单的能量守
恒环境,所以人们在最初研究辐射度算法时就采用了这个最简单环境以降低研究难
度。从这个方面来说,狭义的“封闭室内”可以被认为是正确的),在此环境中从
光源发出的光能经过景物间多重漫反射后最终达到平衡状态,因而每个元面所接受
到的光能,除了一部分被元面转换成热能之外,其余的光能应向周围场景均匀辐射
。(注释:什么是元面?这是一个计算机图形学术语。在辐射度算法中存在着光线
发射器和接收器两个概念,其中的光线接收器就被称为元面,而发射器就被称为曲
面片。关于光线发射器和接收器在后面的内容中将会进一步解释)因理想漫反射表
面各点处的辐射度与光亮度成正比,故可以认为此时的辐射度就是所求的漫反射光
亮度,用B表示。

为了计算景物表面各点的辐射度,就需要把环境中景物表面分割成一个网格矩阵。
在划分好的景物表面上所有接受光照区域必须能够发出光,也能更远地传播光。所
以,辐射度中的能量是从光源到直接的周围环境。这些直接环境面积就成为下一次
光能辐射的光源,即光线发射器。这就是对刚才注释中内容的解释。(不过将光线
发射器称为曲面片另有原因,限于主题这里不作讨论)那么从上面的描述中我们不
难发现,曲面片和元面之间并没有明显的界线,一个元面有可能也是一个曲面片。

实际上,辐射度直接计算的是离开一个曲面片到另一个曲面片能量的小部分,因为
光能在传播过程中会转化为其他能量(如热能)。这种解决曲面片和元面相互作用
的特殊设置过程被称为一个重复。
好,对于辐射度的基本工作原理讲清楚了,下面就深入探讨一下它的工作方式。
设渲染器将场景中的景物表面分割成若干个小的元面dA,每一元面具有均匀的辐射
度,根据能量守恒原理,对于平衡状态下的理想环境,一个元面辐射(也可以是曲
面片)出的光能应等于由它本身所具有的辐射光能和它接受来自场景中其他景物表
面向该点辐射的光能所产生的反射光。用公式表示就为:

解释一下式中各项参数的意思:
Ei:如果元面为漫射光源,则Ei>0,它表示了理想环境中光源的来源;如果不是
漫射光源,则Ei=0
Fi:形状因子,它反映了从元面辐射出去的光能到达元面i的比例系数。
ρi:漫反射率,反映入射能量被漫反射出来的比例系数。
n:场景中的元面总数。
元面dAi的辐射度就为:

这里要应用到一个对等关系式:FjidAj=FjidAi
下图对上面的关系式作了一个诠释:

注意,这里给出的方程只能求出一个元面的辐射度,对于全局辐射度的计算就要联
立方程组。呵呵,那个方程组相当复杂,这里就不讨论了(实际上我还没有搞懂)

上述的辐射度方法知识模拟漫反射,不能模拟镜面反射和规则透射。所以为了模拟
各种光照效果,Wallace等人想出了一个办法:将辐射度和光线追踪结合使用。首
先,利用辐射度算法求出整体环境中的漫射光线分布,然后采用光线追踪技术求出
整体镜面反射光和规则透射光对给定的屏幕像素光亮度的贡献。到了1987年,
Wallace等人进一步推广了辐射度算法,使之适用于包含镜面、透明面在内的复杂
光照环境。不过在当时由于计算量过于庞大,想运用于普通领域还是不可能的。
到此两种流行的渲染算法就粗略地讲完了。其实这些只是渲染算法的皮毛,完全可
以大大深入下去。不过越深入对数学的要求就越高,不幸的是我的数学又是在所有
科目中学得最差的,所以就只有先讲到这里。下面是对文章中提到的一些名词的解
释:
Photo模型:学名为镜面反射模型,用公式表示就是:Is=Ip*Ks*COSnA(其实这里
是余弦A的平方,无奈打不出来)
其中Is为镜面反射光在观察方向上的光强;Ip为点光源强度;Ks为镜面反射系数;
A为视点方向与镜面反射方向的夹角;n是与物体表面光滑度有关的一个常数,一般
取值1-2000,n越大,表面越光滑,反之越粗糙。
透射:就是折射,有规则透射和漫透射两种。
Mip-Map技术:这个术语在本文中没有出现,是对mayax的文章中该词的解释。这项
技术又叫锥形滤波器,原理是把边长为2个像素点的正方形纹理区域映射成一个像
素点(这个点称为映像点),它的亮度值为原正方形纹理区域亮度的平均值。以此
为依据,把原用离散法定义(大家知道有这个东东就可以了)的纹理模型数组进行
逐层过滤,直到最后一层仅有一个映射点数据。
所以可以看来,单靠GPU那可怜的运算能力根本就无法在短时间内解算出如此复杂
的多元方程组,所以如果真的要显卡来担当这个最终渲染这个重任的话,恐怕我们
的计算机就死机了。所以希望大家看完这个帖子以后不要再讨论所谓“显卡能否协
助渲染”之类的言论,因为实在没有任何意义。至少在不久的将来,这种技术还无
法诞生。实时渲染在一个比较长的时期里还是需要系统API的协助。

--
※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 61.144.235.40]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店