L17 Materials and Appearances
~
GAMES101(现代计算机图形学入门)笔记 - Yu_Tang
对材质的定义等价于对 BRDF 的定义;
1 漫反射
对于漫反射模型,假设入射光被均匀地反射到半球上的各个方向(\(f_r\)为常数),渲染方程反射项有
- \(L_o(\omega_o)\):沿出射方向 \(\omega_o\) 的辐射率。
- \(\int_{H^2} \dots \mathrm{d}\omega_i\):在半球空间(Hemisphere)上对所有入射方向 \(\omega_i\) 进行积分。
- \(f_r\):双向反射分布函数 (BRDF)。在漫反射中,\(f_r\) 是一个常数(即 \(k_d/\pi\)),表示表面反射光线的比例。
- \(L_i(\omega_i)\):沿入射方向 \(\omega_i\) 的入射辐射率。
- \(\cos\theta_i\):投影项。由于光线斜射,单位面积接收到的能量会减少,角度越倾斜(\(\theta_i\) 越大),能量越弱。
在能量守恒的假设下,有 \(f_r=\frac 1 \pi\) ,更广泛地,如果我们定义反照率(albedo)\(\rho\in[0,1]\) ,则有 \(f_r=\frac \rho\pi\)
2 金属反射
对于不同金属,金属反射性质也不同;

3 镜面反射
由出射角等于入射角,有

对于方位角有

镜面反射的 BRDF 值与 delta 函数有关,课程内暂不赘述;
球面坐标系
在计算机图形学、光学的球面坐标系中,有两个角度参数,分别是方位角\(\phi\)和天顶角\(\theta\)
4 折射
由折射定律(Snell’s Law)得
其中 \(\eta_i,\eta_t\) 分别为入射介质和出射介质的折射率(真空为1);

如果 \(1-(\frac {\eta_i} {\eta_t})^2(1-\cos^2\theta_i)<0\) 则折射不会发生,此时发生全反射;

其中可视锥体被称为 Snell’s Window ;
方位角同镜面反射;
描述折射性质的函数被称为 BTDF ,与 BRDF 统称为 BSDF ;
5 菲尼尔项(Fresnel Term)
菲涅尔项描述了反射和折射的比例;

对于绝缘体表面,有

S 和 P 描述了两种偏振光的表现,一般情况性质如红线描述;
对于金属(导体)表面,则有

对于两种偏振光的反射率有( \(n_1,n_2\) 为两种介质的折射率)
对于无偏振的光,有
由于上述计算比较复杂,有简化公式 Schlick’s approximation :
基准反射率即为法线入射时的反射率,为
关于入射角的反射率为
对导体和绝缘体均可以近似;
6 微表面模型(Microfacet Material)
微表面模型假设物体表面是粗糙的,由很多微表面组成,每一个微表面只进行镜面反射,具有自己的法线;远看是外观,近看是几何;
通过描述微表面法线的分布来描述物体粗糙程度,例如

微表面模型的 BRDF 有

其中 \(h\) 为 \(i\) 和 \(o\) 的中间向量,\(F\) 为菲涅尔项,\(D\) 为微表面法向的概率密度函数,\(G\) 为几何项,定义了了微表面互相遮挡造成的影响;

在入射方向或观察方向和表面几乎平行时(Grazing Angle 掠射角度),表面遮挡比较严重,此时 G 项的值会比较小;
GGX模型下,对于粗糙度为 \(\alpha\) 的各向同性材料,法线分布函数和遮挡通过函数有
7 各向同性/各向异性材料(Isotropic / Anisotropic Materials)
类似于电梯内表面的纵向抛光痕迹,一些材料表面是各向异性的;

各向同性即认为微表面不存在方向性或方向性很弱;

从 BRDF 考虑,高度角固定的情况下,如果对于固定方位角变化量,函数值不同,即为各向异性;
8 BRDF(Bidirectional Reflectance Distribution Function,双向反射分布函数)
8.1 BRDF的性质
- 非负:\(f_r(\omega_i\to\omega_r)\geqslant0\) ;
- 线性;
- 可逆性:\(f_r(\omega_i\to\omega_r)=f_r(\omega_r\to\omega_i)\) ;
- 能量守恒: \(\forall \omega_r,\int_{H^2}f_r(\omega_i\to\omega_r)\cos\theta_i\mathrm{d}\omega_i\leqslant1\) ;
- 各向同性与各向异性;
8.2 测量BRDF
gonioreflectometer

8.3 BRDF的存储
MERL BRDF Database 对各向同性材料进行了三个维度的测量 \((\theta_i,\theta_o,|\phi_i-\phi_o|)\) ,形成了 \(90\times90\times180\) 的数据;
评论
如果你已登录 GitHub,就可以直接在这里评论。