在电影及游戏产品中的基于物理的着色模型 - 图文(3)

2019-08-30 13:33

大体上,BRDF只是在光矢量方向和视线矢量方向都处于表面之上的情况下定义,换句话说,点积[n.l]和[n.v]必须为非负的[还记得两个单位长度矢量之间的点积等于这两个矢量之间夹角的余弦,如果这个值为负,那么它们之间的夹角超过了90度]。在产品级着色中,会出现当着色需要在角度超出该范围时的情况[比如,法线映射会导致法线矢量背朝向视线矢量]。这样的情况通常通过钳制该点积为0而解决,但是其他的做法也是可行的。

BRDF可以通过两种方式直观的表述,两种都是合理的。第一种表述:给定一个确定方向的光入射射线,BRDF给出反射和散射的光在表面之上所有出射方向上的相对分布。第二种表述:对于一个给定的视线方向,BRDF给出从每个入射方向的光对出射光的相对贡献。两种解释在图20中得以展示。

BRDF是一个光谱物理量[spectral quantity]。在理论上,输入和输出波长需要作为额外的BRDF输入,这样就增加了BRDF的维度。但是,在实际中,没有单个波长之间的串扰,每个出射光波长只是被具有相同波长的入射光所影响。这表示,取代将输入和输出波长当作BRDF的输入的做法,我们更多的是简单的将BRDF看作一个光谱值函数[spectral-valued function],该函数与光谱值光颜色[spectral-valued light colors]相乘。在产品级着色中,这表示一个RGB值的BRDF[RGB-valued BRDF]与RGB值的光颜色[RGB-valued light colors]相乘。 BRDF被用于反射公式中 ---

虽然这个公式看上去有那么点让人畏惧,但是其意义非常直观---出射的光辐射等于入射的光辐射[在表面之上的所有方向上]乘以BRDF和一个叉积因子的积

分。如果你对积分不熟悉,你可以将他们想象为一种连续的带权值的平均值。符号使用在这里用来表示分量级矢量乘法,这里使用它是因为BRDF和光颜色都是光谱[RGB]矢量。 并非任何的在入射和出射方向上的抽象函数都和BRDF一样有意义。通常认为,BRDF必须有两个属性才能是物理可信的[physically plausible] --- 对等性[reciprocity]和能量守恒[energy conservation]。

对等性简单的表示如果将l和v互换,则BRDF仍然是相同的 ---

能量守恒是指;一个表面不能反射大于百分之百入射光能量。数学上的表示就是---

这个公式的意义是---对于任何可能的光方向l,BRDF乘以一个叉积因子在所有出射方向v的积分必须不能超过l。

通过BRDF描述的现象包括[至少对于非金属]两个不同的物理现象 --- 表面反射和次表面散射。因为这些现象中的每个有着不同的行为,BRDFs典型的对于每个包含一个不同的项。描述表面反射的BRDF项通常被称为specular项,而描述次表面散射的项被称为diffuse项,请看图21。

表面反射[Specular项] --- Surface Reflectance (Specular Term)

大多数基于物理的specularBRDF项的基础理论是微面元[microfacet]理论。这个理论被开发用以描述从通用[非光学平面 (non-optically flat)]表面的表面反射。在微面元理论下的基本假设是;表面是有多个微面元组成的,单个微面元非常小以至于不可观察。

每个微面元被假设为光学平面[optically flat]。在前面我们提到过,一个光学

平面[optically flat]表面将光精确的分成两个方向---反射方向和折射方向。

这些微面元的每个将一给定方向的入射光反射到单个出射方向,这取决于微面元法线m的朝向。当计算一个BRDF项,光方向l和视线方向v都被确定。这表示在所有的这些微面元之中,只有那些角度正好将l方向反射到v方向的微面元才对BRDF的值有贡献。在图22中我们可以看到,这些活动的微面元其法线m精确的朝向l方向和v方向之间对半开的方向上。在l方向和v方向对半开的方向矢量被称为半矢量[half-vector]或者半角矢量[half-angle vector],我们使用h来表示它。

并非所有的m=h的微面元都会对反射产生贡献。有些被其他的微面元在l方向上遮挡了,他们处于光的阴影之中,有些被其他微面元在v方向上给遮挡了,他们处于视线无法看到的范围之内,有些这两者都占了。微面元理论假设所有处于阴影之中的光[all shadowed light]从specular项中丢弃.在实际中,因为多次表面反射,它们[all shadowed light]中的有些最终会可见,但是在微面元理论中,它们仍然不被考虑。这种丢弃在大多数情况下[粗糙的金属表面是一个可能的例外]都不是一个主要的误差来源,光-微面元之间的交互的不同类型展示在图23中。

有了这些假设[光学平面的微面元,以及没有内部反射[interreflections]],一个specular BRDF项可以从第一个原则导出。微面元specular BRDF项有如下的形式给出;

我们会在其中每个项上描述更多细节,但是首先是一个快速总结。

F[l,h] --- 活动的微面元的Fresnel反射率,是光方向l和活动微面元的法线m=h的函数 G[l,v,h] --- 微面元[法线m=h]中没有处于阴影中[not shadowed]或者被遮盖住[masked]的所占比例,是光方向l,视线方向v,以及活动的微面元法线m=h的函数。

D[h] --- 在活动微面元法线m=h处计算的微面元法线分布函数,换句话说,就是法线m等于h的微面元的集中程度。

4[n.l][v.l] --- 矫正因子,考虑到在微面元局部空间和整个宏观表面之间变换的量。

Fresnel反射率项 --- Fresnel Reflectance Term

Fresnel反射率项计算光从一个光学平面表面反射的部分。它的值取决于两个量---入射角度[光矢量和表面法线的夹角],以及材质的折射系数。因为折射系数会在整个可见光谱范围内变化,所以Fresnel反射率项是一个光谱量 --- 对于产品级来说,就是一个RGB三元素。我们也知道每个RGB值都处于0到1的范围内,因为一个表面不能反射少于百分之0的入射光,也不能反射大于百分之百的入射光。因为我们只是考虑活动的微面元[m=h],所以Fresnel反射项的入射角实际上就是l和h之间的夹角。

完整的Fresnel公式是有些复杂的,并且需要的材质参数[复数折射系数在整个可见光谱中的密集采样]对于美工并非特别方便。但是,有着更为方便的参数化而更为简单的表达式,可以从观察针对真实世界材质这些公式的行为而得到。记住这个,让我们看看图24。

这个图中所挑选的材质代表了一个广泛的变化,尽管如此,我们仍然可以看到一些共同的东西。反射率在入射角度处于0度到45度的范围内几乎是常量。反射率在45度到大约75度之间变化更快[典型的,但是并非总是,增加一些],最后,在75度到90度之间,反射率总是快速的达到1[如果看作是RGB三原色的话则为白色]。因为Fresnel反射率在整个范围的多数时候都靠近0度时的值,我们可以考虑将F[0]作为材质的典型specular反射率[characteristic specular reflectance]。这个值有着典型的可被考虑作为一个颜色[color]的所有的属性 --- 它由介于0到1之间的RBG值构成,并且它是一种对光的选择性反射率的测量值。基于这个原因,我们总是将这个值作为表面的specular color,记作Cspec。 Cspec看起来是一个近似Fresnel反射率的理想参数,并且确实Schlick给出了一个使用它的廉价的并且合理的精确近似

这个近似公式在计算机图形学中用得非常广泛。在活动微面元的特殊情况中,h必须替代表面法线n

为了知道哪些值赋给Cspec比较合理,观察一些真实世界材质的F[0]值是有启发意义的。下表中列出了几种材质的F[0]值,有线性空间的和gamma[sRGB]空间两组值。我们建议对线性空间计算光照着色的重要性以及对将输入从gamma空间转换中出现的问题不熟悉的朋友参看该方面的一些文献。


在电影及游戏产品中的基于物理的着色模型 - 图文(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:公共财政学

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: