真实感图形学算法(3)--光照明模型

时间:2022-06-16 21:57:18

光照明模型原理

光照明模型即根据光学物理的有关定律,计算景物表面上任一点投向观察者眼中的光亮度的大小和色彩组成的公式。对于在光栅图形设备上显示的真实感图形,我们需要依据光照明模型计算每一象素上可见的景物表面投向观察者的光亮度。光照明模型分为局部光照明模型和整体光照明模型。

   局部光照明模型仅考虑光源直接照射在景物表面所产生的光照效果,景物表面通常被假定为不透明,且具有均匀的反射率。局部光照明模型能表现由光源直接照射在漫反射表面上形成的连续明暗色调、镜面上的高光以及由于景物相互遮挡而形成的阴影等,具有一定的真实感效果。整体光照明模型除了考虑上述因素外,还要考虑周围环境对景物表面的影响。例如,出现在镜面上的其他景物的影像,通过透明面可以观察到后面的景物等。整体光照明模型能模拟出镜面影像、光的折射以及相邻景物表面之间的色彩辉映等较精致的光照明效果。

    来自光源和周围环境的入射光照射在景物表面上时,可能被吸收、反射或透射,其中被吸收的入射光能转化为热,其余部分则向四周反射或透射。正是朝视线方向反射或透射的光使景物可见。若朝视线方向辐射的反射或透射光中所有波长的光含量相等,则物体表面将呈现白色或不同层次的灰色。若辐射光中各种波长的光具有不同的分布,则景物呈现出彩色,其颜色取决于辐射光的主波长。由于颜色仅是可见光的一种视觉特性,因此,在光学物理中用光谱分布来描述光的组成。光谱分布表示了一束光中不同波长光所占的比例,它是波长的函数。显然光谱分布惟一地决定了相应可见光的色彩。

3.1 光源属性和物体表面属性

光源的属性包括它向四周所辐射光的光谱分布、空间光亮度分布,以及光源的几何形状。

物体表面属性包括表面的材质和形状。物体表面的材质类型决定了反射光线的强弱。表面光滑的材质将反射较多的入射光,而较暗的表面则吸收较多的入射光。同样对一个透明的表面,部分入射光会被反射,而另一部分被折射。粗糙的物体表面往往将反射光向各个方向散射,这种光线的散射现象称为漫反射。非常粗糙的材质表面主要产生漫反射,因而从各个视角观察到的光亮度是几乎相同的。我们通常所说的物体颜色实际上就是入射光线被漫反射后所表现出来的颜色。

除了漫反射,物体表面还会产生高光,或强光,称为镜面镜面反射。这种高光效果在光滑的物体表面上很明显,而对于阴暗物体表面则效果较差。

3.2  简单的局部光照明模型

从光源发出的光照射到景物表面时,会出现以下三种情况:

   1 经景物表面向外反射形成反射光;

   2 若景物透明,则入射光会穿透该景物,从而产生透射光;

   3 部分入射光将被景物表面吸收而转换为热能。

显然,只有反射光和透射光能够刺激人眼产生视觉效果。

3.2.1 Lambert 漫反射模型

自然界中的绝大多数景物为理想漫反射体, Lambert 余弦定律总结了一个理想漫反射物体在点光源照射下的光的反射规律。根据 Lambert 定律,一个理想漫反射物体表面上反射出来的漫反射光的强度同入射光与物体表面法向之间夹角的余弦成正比。即:

I = kd·Il·cosq                                   1

其中,I 为景物表面在被照射点 P 处的漫反射光的光亮度,Il 为点光源所发出的入射光亮度,  kd (0 kd 1) 为景物表面的漫反射率(diffuse reflectivity),q 为入射光与表面法向之间的夹角。

P

若记景物表面在被照射点 P 处的单位法向量为 NP 到点光源的单位向量为 L,则式(1)可表达为如下的向量形式:

I = kd·Il ·(N·L)                             2

显然,当点光源离被照射表面很远时,式(2)中的向量 L变化很小,因而可将 L 看作为一常向量。我们称此时的点光源为方向光,它由一向量完全确定。

 由式(1)可知,当入射角 q >p/2 时,光源位于物体背面,因而该光源对被照射点的光亮度贡献为零。当入射角q = 0即光源垂直照射在景物表面上,此时反射光的强度最大。当入射光线以相同入射角照射在不同材质的景物表面时,这些表面会呈现不同的颜色,这是由于不同材质的表面具有不同的漫反射率。在实际场景中,一个物体表面即使不直接暴露于光源之下,只要其周围的物体被照明,它也可能看得见。 这是由于物体还会接收到从周围环境投射来的光。在图形学中,称这部分光为环境光(ambient light)或泛光。环境光是一种分布式光源,精确模拟它非常耗时。在局部光照明模型中,我们常假定环境反射光是均匀入射的漫反射光,并用一常数来表示其强度。这样 Lambert 漫反射光照明模型可写成:

I = ka·Ia + kd·Il(N·L)                            3

其中,Ia 为入射的泛光光强,ka 为景物表面对泛光的漫反射率.

    值得指出的是,式(3)没有反映出光的距离衰减效应。若两个相同材质的物体对光源有相同的朝向,但与光源的距离差距较大,那么采用式(3)计算得到的两个物体表面的光亮度是相同的。显然,这与实际情况不符。众所周知,光的传播以距离平方衰减,即某处入射光的强度与该点和光源之间的距离平方成反比。此时,Lambert 漫反射模型应修正为。

4

 

其中,d 为被照射点与光源之间的距离。在实际应用中,对入射光强按距离平方衰减往往不能很好地区分点光源在相距较近的景物表面上所产生的光照效果。

假如点光源离被照射表面较远,因 1/d2 变化不大,计算得到的表面光亮度难以表现光的距离衰减效果。若非常近,则该项变化非常大,导致不真实的光照效果。为此,图形学中常采用经验模型来模拟点光源的距离衰减效果。常用的模型有线性衰减模型,这时,Lambert 漫反射模型可改写为:

5

 

其中 k 为一任意常数。

      更一般地,我们可采用以下的 Lambert 漫反射模型来模拟光的各种距离衰减效果:

6

 

 

其中,f  为光源强度衰减因子,c1, c2   c3 为用户确定的常数。

    上述模型可方便地推广到多光源情形。当景物表面受到 M 个点光源照射时,这些点光源对景物表面的光亮度贡献应逐个累加起来。此时,Lambert 漫反射模型为:

7

其中,fi , Ili , Li 分别为第 i 个光源强度衰减因子、光强和单位入射方向的向量。

迄今为止,我们还没有涉及到光源入射光和景物表面反射光的光谱组成。在简单光照明模型中,我们只需对红、绿、蓝三分量分别计算即可,即假定光源入射光由红、绿、蓝三种不同波长的光组成,分别确定景物表面材质对红、绿、蓝三色光的漫反射率,然后按红、绿、蓝三分量分别代入式(7),求解景物表面的漫反射光亮度。显然,kd Il 表示表面在光强为 Il 的入射光的垂直照射下所呈现的颜色。注意式(7)中的 kakdIIaIli 均为包含红、绿、蓝三分量的向量。

从实验结果来看,Lambert 漫反射模型模拟理想漫反射表面(如石灰粉刷的墙壁、纸张等)的光亮度分布是可行的。但对表现诸如金属材料制成的物体表面的光亮度分布时,则显得非常呆板,没能表现其特有的光泽,其主要原因是该模型没有考虑这些表面的镜面反射效果。

3.2.2  Phong 光照明模型

     镜面反射在日常生活中随处可见,当一个点光源照射在一个金属球面时,会在球面上形成一块特别亮的“高光”(highlight) 区域,它是光源在金属球面上产生的镜面反射光投射到观察者眼中的结果。与漫反射不同的是,镜面反射光在空间的分布具有一定的方向性,它们朝空间一定方向会聚,

因此表面上高光区域的位置随观察者的方位不同而变化。

    根据光的反射定律,反射光和入射光对称地分布在表面法线的两侧。对于纯镜面,入射光线严格遵循光的反射定律单向地反射出去(下图 a)。对于一般景物表面,由于表面实际上是由许多朝向不同的微小平面组成,其镜面反射光分布于镜面反射方向 R 的周围(下图 b)。由于一般镜面反射光的计算较为复杂,在实际应用中,常作适当的简化处理。

1973 年,Phong 提出了计算表面镜面反射光亮度的经验模型,即:

8

 

其中,W(q ) 为景物表面的镜面反射率,它是入射角 q 和入射光波长的函数。在实际使用时,往往将 W(q ) 取为常数 ks,通常0 ks 1n 称为镜面高光指数,它被用来模拟镜面反射光在空间的会聚程度。a 为视线与镜面反射光线之间的夹角。Ispec 即为表面投向视线方向的镜面反射光亮度。

    式(8)表明投向观察者的镜面反射光不仅决定于入射光的强度,而且和观察者的观察方向有关。当观察者位于镜面反射方向附近时,观察者接受到的镜面反射光较强,当偏离这一方向时,镜面反射光就会迅速减弱甚至消失。光的会聚程度愈高,在表面上形成的高光愈集中;相反,物体表面较粗糙时,n 取值较小,其镜面反射光呈发散状态。

 

Phong 关于镜面反射光的经验模型与 Lambert 漫反射模型相结合,便得到在单一光源照射下的 Phong 光照明模型:

9

考虑到入射光的距离衰减效应,可得到在多个点光源照射下的表面光亮度计算的 Phong 模型:

10

其中,M  表示对场景有贡献的点光源的总个数,以 i  为下标的各参数的含义同前面所述。

 

 

 

Phong 模型实际上是一个纯几何模型,一旦光源颜色及景物表面反射率得到确定,则从景物表面上可见点 P 处到达观察者的反射光亮度 I 仅与光源入射角 q 和视线与镜面反射方向的夹角 a 有关。因此,在实际计算时,我们仅需求出景物表面各可见点处的单位法向量 N、单位入射光线向量 Li 、单位视线向量 V Li 的单位镜面反射向量 Ri,则由:

 

 

 


和式(10)就可就算出每一可见点处的光亮度。

P

V

N

Li

Ri

Hi

i

i

i

在实际使用时,由于 (V·Ri) 的计算不方便,常用 (N·Hi) 来代替,其中,Hi 为将入射光反射到观察方向的理想镜面的单位法向量。显然 Hi 为向量 ( Li + V )/2 的单位向量。这样,Phong 模型便改写为:

11

如前所述,对于一个给定的景物表面,当用上述光照明模型计算景物上一可见点处的光亮度时,需分别对红、绿、蓝三色分别使用(11)来计算。此时,我们采用下面的三个方程来进行三个分量的计算:

12

其中,t = r, g, b 分别表示光源入射光强和景物表面漫反射率的三基色分量。这样,用户就可方便地控制物体表面的环境反射、漫反射光的颜色。下面是用 Phong 光照明模型计算光亮度的示意性扫描线算法。

算法 1

         for (屏幕上每一条扫描线 y ){

                  将数组 Color 初始化成y扫描线的背景颜色;

                for ( 扫描线y上的每一可见区间段 S  中的每一点 (x, y){

                      (x, y)对应的空间可见点为 P

                      P 点的单位法向量 N

                      P 点的单位视线向量 V

                      for ( t=r, g, b )

                           I(t) = ka(t)Ia(t);

                     for (每一点光源){

                           P 点的光强衰减因子 f

                          P 点的单位入射光向量 L

                          求虚拟镜面单位法向量 H

                          for ( t=r, g, b )

                               I(t) = I(t) + fIa(t)(kd(t)(N·L) + ks(t)(N·H)n)

                    Color = [I(r)I(g)I(b)]

                    }

              显示 Color

             }

          }

通过以上讨论可知,Phong 模型具有以下明显的特点:

1)光源被假定为理想点光源,且不考虑其辐射光强的空间分布;

2)除了曲面的法向量外,曲面的所有几何信息均不予考虑。这相当于将光源和视点均置于无穷远处;

3)表面漫反射光亮度和镜面反射光亮度均被认为是对光源入射光的直接反射,且相互独立;

4)表面镜面反射光亮度由经验模型来模拟。但当该光亮度达到显示器所能显示的最高色度时,其变化将被裁剪掉;

5)用镜面高光指数 n 来模拟景物表面的光滑程度。镜面高光指数 n 的变化可使光源看上去变大或变小;

6)镜面反射光的颜色被假定为光源的颜色,而与表面材料属性无关;

7)周围环境对景物表面的影响,即环境光被假定为常量.

 以上七点,即为 Phong 模型的特点,在一定意义上也可说是缺点。由于这些特点,复杂的光照明计算得以大大简化,但它亦使得 Phong 模型所生成图形的真实感程度受到严重的影响。因而,在发展高度真实感图形绘制技术时,必须寻找更为精确的光照明模型。

3.2.3  简单透明模型

     简单透明模型是一个应用非常广泛的经验模型,该模型简单地将在每一象素处计算得到的透明景物光亮度与位于其后面的场景光亮度作线性混合以确定该象素最后显示的光亮度。其线性组合系数即为景物的透明度 t0t1),可由用户指定,亦可计算得到。假设当前透明景物在被照射点 P 处的光亮度为 Ic,其后面景物的光亮度为 Ib,则 P 点所对应象素的显示光亮度为

 

 


这里, Ib Ic 可由任一局部光照明模型计算得到。

考虑到景物厚度的非均匀性,因而其透明度影视变化的。景物越厚,透明度越小。如图所示,s 点处的厚度大于 r 点处的厚度,故 s 点处的透明度应小于 r 点处的透明度。这一事实说明了景物的透明度不能简单地取为常数。1979 年,Kay 采用透明景物表面各点处的单位法向量的 z 分量来模拟该点处的透明度,其表达式为

 

 


其中, tmin tmax 分别为 Nz = 0 Nz = 1 处的透明度,它由用户确定。

上述模型的优点是计算非常简便,可与任一局部光照明模型结合起来使用。但它只能近似模拟透明效果,不能模拟光的折射效果。

(未完待续)