图形学——光照模型

这次简单介绍一下几个著名的光照模型。

首先,我们要知道,我们能看到物体是因为物体反射的光进入了我们眼睛。光照模型是基于入射角反射角定理的。在物理上有一个更复杂一点的描述光的反射的函数,简称BRDF(双向反射分布函数)。因此这些光照模型,又被称为BRDF模型。

再介绍各个模型之前,我们再了解一些关于光学的定义。入射角反射角定理就不多说了,是中学知识。光有以下几个度量方法:

  • 立体角:
    • 衡量物体相对于某一视点P的视角大小:\(dw = \frac{ds}{r^2}\),距离为弧面面积比上距离的平方
    • 立体角最大为\(4\pi\),也就是球面积比上半径的平方
  • 光通量:
    -光通量为单位时间内通过面元\(ds\)的光能量,记为\(dF\)
  • 发光强度:
    -发光强度为单位立体角内的光通量,记为\(I\)

我们知道能量守恒定理。在光反射的过程中也是一样的,光的能量等于被镜面反射的光的能量,漫反射的光能量,如果有折射还要加上折射掉的能量,以及被物体吸收等所有能量之和。

Phong模型

Phong模型是最简单而且也是最常用的光照模型。它支持点光源和方向光源。Phong模型是局部光照模型,它将局部光照效果简单分解为下面三个部分:

  • 漫反射光效果
  • 镜面反射光效果
  • 环境光效果 \[I_i = I_d + I_s + I_a.\]

如下图:

L为入射光方向(图中方向画反),R为反射光,N为物体表面法向量,V是视点方向,H是L和V夹角的角平分线方向。

漫反射光效果

  • 漫反射光的传播是各项同性的
  • 漫反射光强度为: \[I_d = I_iK_d\times (L\cdot N)\]

上式中\(K_d\)为漫反射系数,具有3个分量,分别代表R,G,B三个通道的漫反射系数。可见,\(K_d\)与模型自身的色彩紧密相关。

#### [](about:blank#%E9%95%9C%E9%9D%A2%E5%8F%8D%E5%B0%84%E6%95%88%E6%9E%9C "镜面反射效果")镜面反射效果
  • 对于光滑的平面,根据反射定律,反射光往往集中在一个小的立体角内,这些反射光我们称之为镜面反射光。
  • 镜面反射光的强度为: \[I_s = I_iK_s \times (R\cdot V)^n\]

上式中,\(K_s\)为镜面反射稀疏,与物体表面的光滑程度有关,而\(n\)是反射指数,\(n\)越大,高光区域越集中,这里的意思是,因为\(R \cdot V\)是小于等于1的,如果\(n\)越大,\((R\cdot V)^n\)下降得越快,因此高光越集中。

环境光效果

环境光效果很简单,也就是除了镜面反射和漫反射的其他光总称为环境光。\(I_a = I_iK_a\)

所以Phong模型非常简单,它简单将光分成这几类,计算量很小,而且保证了不错的效果。因此被广泛使用。

法向插值

当然,明暗处理(shading)除了光照模型这些,还需要考虑的是插值。因为物体表面几个细节并不规则圆滑,为了减轻这种效果,需要对面片进行插值。插值也有多种方法,在Phong之前采用的是颜色插值。而Phong采用了一种新颖的想法,对法向进行插值。得到面片上各个点(非顶点)的法向,这时候在进行光照处理,会使得整个模型显示更加平滑。很神奇的是,我们先通过顶点计算出面片法向,再通过面片法向计算出顶点法向,然后根据顶点法向对面片上各个点法向进行插值,它们在互相利用。

其他BRDF模型

这里将除了Phong模型以为的模型归结为其他,是因为我的知识浅薄,对其他的模型理解的不够透彻,绝对不是因为他们不够重要。对于要求更高的场景Phong模型是肯定不够的。其他的模型一般有更好的效果,相应也更复杂一点。

一般来说,BRDF模型有物理模型和经验模型两个区别。其实这个分类也不是太绝对,因为即时是经验模型也是基于一些物理知识的。

经验模型一般是依照直觉来定一些规则,而物理模型是严格按照光学物理知识来建立模型。

菲涅尔项

在物理模型中,会假如一个菲涅尔项,是基于一个物理的现象:单向反射性在擦地角附近增大。在一般物理模型中,入射光的反射量是由麦克斯韦电磁波方程组中的菲涅尔公式得到的,被称为菲涅尔项。菲涅尔项的定义比较复杂,如下:


比较著名的其他光照模型还有Cook-Torrance模型,Ward模型(各向异性,没有考虑菲涅尔项和衰减稀疏,更像是经验模型)。

除了物理模型和经验模型,还有一种是基于数据的,数据驱动模型。原理就是采集大量数据,获取光的规律。它一般需要很大的数据集,并且需要数据降维来压缩数据。

最后说一下对BRDF模型的度量,就是采集真实照片与模型投影来进行对比,原理很简单,但是设备还是非常贵重的。