在计算机图形学领域,着色(Shading)是指根据表面或者多边形相对光源和相机的角度和距离来计算它的颜色的过程。不同的用途可以使用不同的着色算法,CAD等追求响应速度的交互式图形领域可以使用简单快速的着色算法,卡通油画等艺术效果可以使用非真实感(Nonphotorealistic)着色算法,而追求真实感的CG电影或游戏则可以使用基于物理建模的着色算法。
一 BRDF
介绍
想象你有一个不透明的桌面,一个激光发射器。你先让激光向下垂直地射在那个桌面上,这样你就可以在桌面上看到一个亮点,接着你从各个不同的方向来观察那个亮点,你会发现亮点的亮度随着观察方向的不同而发生了改变。然后你站着不动,改变激光发射方向和桌面的夹角,你又会发现亮点的亮度发生了改变。这就是说,一个表面对不同的光线入射角和反射角的组合,拥有不同的反射率。BRDF就是用来对这种反射性质进行定义的。
函数
双向反射率分布函数
(
B
R
D
F
:
f
r
(
ω
i
,
ω
r
)
)
(BRDF{\displaystyle }:f_{\text{r}}(\omega _{\text{i}},\,\omega _{\text{r}}) )
(BRDF:fr(ωi,ωr))是四个实变量的函数,定义了光在不透明表面上的反射方式。它用于现实世界光的光学、计算机图形算法和计算机视觉算法。该函数采用入射光方向,
ω
i
{\displaystyle}\omega _{\text{i}}
ωi 和传出方向,
ω
r
{\displaystyle }\omega _{\text{r}}
ωr(取在一个坐标系中,其中表面法线
n
{\displaystyle }\mathbf {n}
n位于
z
z
z轴上),并返回沿z轴出射的反射辐射率
ω
r
{\displaystyle }\omega _{\text{r}}
ωr从方向入射到表面的辐照度
ω
i
{\displaystyle }\omega _{\text{i}}
ωi. 每个方向
ω
{\displaystyle \omega }
ω本身由方位角参数化
ϕ
{\displaystyle}\phi
ϕ和天顶角
θ
{\displaystyle \theta }
θ,因此整个 BRDF 是 4 个变量的函数。BRDF 具有单位
s
r
−
1
sr^{-1}
sr−1,球面度(sr) 是立体角的单位。
显示用于定义 BRDF 的向量的图表。所有向量都是单位长度。 ω i {\displaystyle \omega _{\text{i}}} ωi指向光源。 ω r {\displaystyle \omega _{\text{r}}} ωr指向观看者(相机)。 n {\displaystyle n} n是表面法线。
定义
BRDF 于 1965 年左右由 Fred Nicodemus 首次定义:
f
r
(
ω
i
,
ω
r
)
=
d
L
r
(
ω
r
)
d
E
i
(
ω
i
)
=
d
L
r
(
ω
r
)
L
i
(
ω
i
)
cos
θ
i
d
ω
i
f_{\mathrm{r}}\left(\omega_{\mathrm{i}}, \omega_{\mathrm{r}}\right)=\frac{\mathrm{d} L_{\mathrm{r}}\left(\omega_{\mathrm{r}}\right)}{\mathrm{d} E_{\mathrm{i}}\left(\omega_{\mathrm{i}}\right)}=\frac{\mathrm{d} L_{\mathrm{r}}\left(\omega_{\mathrm{r}}\right)}{L_{\mathrm{i}}\left(\omega_{\mathrm{i}}\right) \cos \theta_{\mathrm{i}} \mathrm{d} \omega_{\mathrm{i}}}
fr(ωi,ωr)=dEi(ωi)dLr(ωr)=Li(ωi)cosθidωidLr(ωr)
在哪里
L
{\displaystyle L}
L是 radiance,或每单位立体角的功率- 在光线的方向上每单位投影面积- 垂直于光线,
E
{\displaystyle E}
E是irradiance,或单位表面积的功率,和
θ
i
{\displaystyle \theta _{\text{i}}}
θi是之间的角度
ω
i
{\displaystyle \omega _{\text{i}}}
ωi和表面法线,
n
{\displaystyle \mathbf {n}}
n. 指数
i
{\displaystyle {\text{i}}}
i表示入射光,而指数
r
{\displaystyle {\text{r}}}
r表示反射光。
函数被定义为两个微分的商而不是直接作为未微分量之间的商的原因是因为其他照射光比
d
E
i
(
ω
i
)
{\displaystyle \operatorname {d} E_{\text{i}}(\omega _{\text{i}})}
dEi(ωi), 这对
f
r
(
ω
i
,
ω
r
)
{\displaystyle f_{\text{r}}(\omega _{\text{i}},\,\omega _{\text{r}})}
fr(ωi,ωr), 可能会照亮会无意影响的表面
L
r
(
ω
r
)
{\displaystyle L_{\text{r}}(\omega _{\text{r}})}
Lr(ωr), 然而
d
L
r
(
ω
r
)
{\displaystyle \operatorname {d} L_{\text{r}}(\omega _{\text{r}})}
dLr(ωr)仅受
d
E
i
(
ω
i
)
{\displaystyle \operatorname {d} E_{\text{i}}(\omega _{\text{i}}})
dEi(ωi)影响.
相关