The darkening or coloring of an illustration or diagram with parallel lines or a block of color.

物体之所以会呈现出来,是其材质(Material)对光(或能量)的吸收、反射、折射等处理后的产物(光或能量)。在真实世界满足基本的物理法则。为了能正确渲染物体,需要建立渲染模型(Shading Model)尽可能地去逼近模拟这些法则。

Blinn-Phong Reflection Model

Phong reflection model

该模型根据“经验”把材质处理过程拆解为:环境光(Ambient)+ 漫反射(Diffuse)+ 高光(Specular)

从理论上来说,我们只要对三角面上的每个点进行“光-材质”的处理,就能得到光线在该点反射到相机的色彩,从而在屏幕像素填充RGB,得到图像。这个过程需要:相机朝向(Viewer direction)\(\vec{v}\)、法线(Surface normal)\(\vec{n}\)、光照方向(Light direction)\(\vec{I}\) 和表面参数(颜色 color、光泽度 shininess)(Surface parameters)。

漫反射(Diffuse Refelection)

Surface color is the same for all viewing directions.

光线经过漫反射,在各个方向均可以观测到物体表面的颜色,且颜色一致。

光是有强度的,漫反射的强度在各个Viewer下并不一样,这里使用 Lambertian(Diffuse)Shading模型进行计算。

其中 \(I\) 为光源强度,\(r\) 为光源到平面点的距离,那么该点的光照强度为 \(I/r^2\)。

\(k_d\) 表示漫反射系数,越大表示强度越高,也就越亮,也就越接近物体本色。如下图:

高光(Specular Reflection)

光线经过平面镜反射,根据法线反射,其反射角方向光线强度最大。即 \(\vec{v} \rightarrow \vec{R}\),越亮。等价于:\(\vec{h} = \frac{\vec{v}+\vec{l}}{\|\vec{v}+\vec{l}\|} \rightarrow \vec{n}\)

那么,高光部分的光照强度为:

\(k_s\) 表示高光反射系数,越大表示强度越高,也就越亮,也就越接近光源本色。\(p\) 控制高光亮块(Reflection lobe)的大小。效果如下图所示:

环境光(Ambient Reflection)

Constant color to account for disregarded illumination and fill in black shadows.

在该经验模型中,环境光是固定的,注意着并不符合现实物理(This is approximate / fake!)。

目的是避免在暗处没有光反射而导致的全黑。

\(k_a\) 表示环境光反射系数,越大表示强度越高,也就越亮,也就越接近环境光 \(I_a\) 本色。

小结

最终我们得到平面一点的光照(能量)强度:

\(\begin{aligned} L & = L_a + L_d + L_s \\ & = k_a I_a + k_d (I/r^2) max(0, \vec{n} \cdot \vec{I} )+ k_s (I/r^2) max(0, \vec{n} \cdot \vec{h} )^p \end{aligned}\)

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注