课程来源:games101图形学入门Lecture07-08
Lingqi Yan
UC Santa Barbara
PC端的读者可使用右侧文章目录进行导航
Shading
Definition 定义
- In Merriam-Webster Dictionary 在字典里
shad·ing, [ˈʃeɪdɪŋ], noun
The darkening or coloring of an illustration or diagram with parallel lines or a block of color. - In this course 在图形学里
The process of applying a material to an object.将材质应用于物体的过程。
A Simple Shading Model
高光:一个表面特别光滑,往这个表面上打光,就会出现高光。
漫反射:光打在粗糙的位置上的反射。(例如:墙面)
那么,杯子的背面呢?如果它不能被右侧光源照到,按照物理,它应该是黑的,为何它也有颜色呢?
因为它会接收到来自于环境的反射光,例如从墙面上反射的光。所以我们也称之为:环境光。环境光也是一个十分复杂的光源。
Shading is Local
Shading是局部的
我们对于一个点(shading point)考虑光的反射。
Inputs:
- v ⃗ \vec{v} v:View Direction 观察方向
- l ⃗ \vec{l} l:Light Direction 光源方向
- n ⃗ \vec{n} n:Surface Direction 法线
- color(颜色),shininess(它的表面有多亮,和亮度无关,和材质有关)…
因为我们只考虑方向,所以这几个向量都是单位向量。
No shadows will be generated! (shading ≠ shadow)
我们不考虑阴影,只考虑着色,就是说只考虑它自己,阴影如何生成不在这里介绍。
1.Diffuse Reflection 漫反射
Light is scattered uniformly in all directions
光在各个方向上均匀地散射
Surface color is the same for all viewing directions
对于所有观看方向的表面颜色都是相同的
But how much light (energy) is received?
但是接收了多少光(能量)呢?
- Lambert’s cosine law
- 朗伯余弦定律:一个面元的辐亮度或光亮度在其表面上半球的所有方向相等时,则有 I(θ)=Incosθ。式中,I(θ)和In分别表示面元在 θ 角(与表面法线夹角)方向及其法线方向的辐射强度或光强度。
Light Falloff 光衰减
在这里需要引入一个光衰减的概念,以便理解后面的公式。
根据能量守恒定律,我们只考虑它离光源的远近,不就知道当前位置的光的能量了么。
意思就是求图中的半径就可以了。
因此,漫反射光可以如下计算。
这个时候可能会问,如果
n
⋅
l
n·l
n⋅l是负数时怎么办?既然是负数,那么这个shading point是接收不到这个点光源的光的,或者说这个光必须穿过其他物体才能被这个shading point接收到,那么我们就不考虑这种情况。
扩散系数不一样,表现也不一样。如下图所示:
2.Specular Term (Blinn-Phong) 镜面反射
Intensity depends on view direction.
Bright near mirror reflection direction.
当我们观察点接近镜面反射的方向,我们就能看见高光。
V close to mirror direction – half vector near normal
当h向量(半程向量)接近n向量时,说明我们的视线接近镜面反射的方向。
Measure “near” by dot product of unit vectors 用单位向量的点积测量“近”
通过
h
⃗
\vec{h}
h和
n
⃗
\vec{n}
n来判断是否接近,就是Blinn-Phone模型。
对于夹角余弦,给它加上一个指数,就能控制看到高光的夹角角度范围。
一般,在Blinn-Phone模型里,这个指数在100~200之间。
如下图所示,理解高光向。
3.Ambient Term 环境光照
Shading that does not depend on anything. 不依赖于任何东西的Shading。
Add constant color to account for disregarded illumination and fill in black shadows.
This is approximate / fake!
环境光照是一种间接光照,它可能从很多其他物体上反射过来,从四面八方打到Shading point上。因此,对于本文最上方的杯子的逆光处一样,它可以接收到环境光,进而在我们的眼里(摄像机里)不是黑色的。
可想而知,环境光照是一个很复杂的东西。
所以我们做一个大胆的假设——来自环境的光就是一个固定强度的光 I a I_a Ia,我们就可以近似的得到一个环境光,一个常数。这个常数的作用,就是保证没有地方是黑的,每个地方都是有颜色的。
总结
那么,我们将这几种光结合到一起。
Blinn-Phong Reflection Model
L
=
L
a
+
L
d
+
L
s
=
k
a
I
a
+
k
d
(
I
/
r
2
)
m
a
x
(
0
,
n
⃗
⋅
l
⃗
)
+
k
s
(
I
/
r
2
)
m
a
x
(
0
,
n
⃗
⋅
h
⃗
)
p
L = L_a + L_d + L_s \\= k_a I_a + k_d (I/r^2) max(0, \vec{n} · \vec{l}) + k_s (I/r^2) max(0, \vec{n} · \vec{h})^p
L=La+Ld+Ls=kaIa+kd(I/r2)max(0,n⋅l)+ks(I/r2)max(0,n⋅h)p