环境光(ambient)
a m b i e n t = a i n t e n s i t y ∗ l i g h t c o l o r ambient = aintensity * lightcolor ambient=aintensity∗lightcolor
aintensity: 表示环境光强度
lightcolor: 表示光的颜色,一般为白色
漫反射光(diffuse)
d
i
f
f
u
s
e
=
d
i
n
t
e
n
s
i
t
y
∗
l
i
g
h
t
c
o
l
o
r
∗
m
a
x
{
N
⋅
L
,
0
}
diffuse = dintensity * lightcolor * max\{N \cdot L, 0\}
diffuse=dintensity∗lightcolor∗max{N⋅L,0}
dintensity: 表示漫反射强度
lightcolor: 表示光的颜色,一般为白色
N: 为该点的法向量
L: 为光源向量,从顶点指向光源
镜面光照(specular)
s
p
e
c
u
l
a
r
=
s
i
n
t
e
n
s
i
t
y
∗
l
i
g
h
t
c
o
l
o
r
∗
m
a
x
{
(
R
⋅
V
)
n
,
0
}
specular = sintensity * lightcolor * max\{(R \cdot V) ^ n, 0\}
specular=sintensity∗lightcolor∗max{(R⋅V)n,0}
sintensity: 表示镜面光照强度
lightcolor: 表示光的颜色,一般为白色
R: 为光的反射向量
V:为观察者向量
n: 高光指数,反映了表面的光泽程度,
n越大,反光区域小而集中;n越大,反光区域大而分散。
BlinnPhong光照模型
s
p
e
c
u
l
a
r
B
P
=
s
i
n
t
e
n
s
i
t
y
∗
l
i
g
h
t
c
o
l
o
r
∗
m
a
x
{
(
N
⋅
H
)
n
,
0
}
specularBP = sintensity * lightcolor * max\{(N \cdot H) ^ n, 0\}
specularBP=sintensity∗lightcolor∗max{(N⋅H)n,0}
H: 入射光线L和视线V的中间向量,即半角向量
总结三种光照模型
3D渲染中, 物体表面的光照计算公式为:
Lambert光照模型: 环境光(ambient)+漫反射(diffuse)
Phong光照模型: 环境光(ambient)+漫反射(diffuse)+镜面高光(specular)
Blinn-Phong光照模型: 环境光(ambient)+漫反射(diffuse)+半角镜面高光(specularBP)