天天看点

GAMES101-现代计算机图形学学习笔记(17)材质

GAMES101-现代计算机图形学学习笔记(17)

Lecture 17: Materials and Appearances

    • GAMES101-现代计算机图形学学习笔记(17)
  • 材质
    • 反射
    • 折射
    • Fresnel Reflection / Term 菲涅尔项
    • Microfacet Material
      • Microfacet Theory 微平面理论
    • Isotropic / Anisotropic Materials (BRDFs)

原课程视频链接以及官网

b站视频链接: link.

课程官网链接: link.

材质

自然界中材质通常用来表示光与物体表面的交互,而在图形学中材质就是 BRDF,因为 BRDF 描述了光线打到物体表面是如何被反射的,它所反射的范围是表面半球。

Diffuse / Lambertian Material

Diffuse / Lambertian Material 会向着色点表面半球的各个方向进行均匀反射:

GAMES101-现代计算机图形学学习笔记(17)材质

之前经验上定义这种材质是通过 RGB 三个通道的颜色来定义的,即这种材质在不同颜色通道上反射的分量是不同的。

现在考虑对这种材质进行更加真实的定义,考虑能量守恒定理(出射光线的能量永远不能超过入射光线的能量(发光面除外))且这种材质的入射能量 L i ( ω i ) L_{i}\left(\omega_{i}\right) Li​(ωi​) 和 BRDF f r f_{r} fr​ 为常数,所以根据前面定义的渲染方程:

L o ( ω o ) = ∫ H 2 f r L i ( ω i ) cos ⁡ θ i   d ω i \begin{aligned} L_{o}\left(\omega_{o}\right) &=\int_{H^{2}} f_{r} L_{i}\left(\omega_{i}\right) \cos \theta_{i} \mathrm{~d} \omega_{i} \end{aligned} Lo​(ωo​)​=∫H2​fr​Li​(ωi​)cosθi​ dωi​​

就有 L o ( ω o ) = π f r L i L_{o}\left(\omega_{o}\right)=\pi f_{r} L_{i} Lo​(ωo​)=πfr​Li​,且 L o = L i L_{o}=L_{i} Lo​=Li​,所以漫反射的 BRDF为: f r = 1 / π f_{r} = 1/\pi fr​=1/π。对于不同颜色的 Diffuse / Lambertian Material, 只需要引入 albedo 来表示反射颜色即可:

GAMES101-现代计算机图形学学习笔记(17)材质

Glossy material (BRDF)

这是一种更加粗糙的材质,表面会产生沿一个方向的散射:

GAMES101-现代计算机图形学学习笔记(17)材质

deal reflective / refractive material (BSDF)

这种材质会产生反射和折射:

GAMES101-现代计算机图形学学习笔记(17)材质

反射

镜面反射角度的计算可以通过相对于法线的角度 ( ω o , ω i \omega_{o},\omega_{i} ωo​,ωi​)的点积进行计算,也可以通过方向在平面上的投影中的角度( ϕ o , ϕ i \phi_{o},\phi_{i} ϕo​,ϕi​)来进行计算:

GAMES101-现代计算机图形学学习笔记(17)材质

折射

折射可以通过 Snell’s Law 进行计算,定义入射光的折射率为 η i \eta_{i} ηi​ ,折射光的折射率为 η t \eta_{t} ηt​,计算折射角的方式就为:

η i sin ⁡ θ i = η t sin ⁡ θ t cos ⁡ θ t = 1 − sin ⁡ 2 θ t = 1 − ( η i η t ) 2 sin ⁡ 2 θ i = 1 − ( η i η t ) 2 ( 1 − cos ⁡ 2 θ i ) \begin{aligned} \eta_{i} \sin \theta_{i} &=\eta_{t} \sin \theta_{t} \\ \cos \theta_{t} &=\sqrt{1-\sin ^{2} \theta_{t}} \\ &=\sqrt{1-\left(\frac{\eta_{i}}{\eta_{t}}\right)^{2} \sin ^{2} \theta_{i}} \\ &=\sqrt{1-\left(\frac{\eta_{i}}{\eta_{t}}\right)^{2}\left(1-\cos ^{2} \theta_{i}\right)} \end{aligned} ηi​sinθi​cosθt​​=ηt​sinθt​=1−sin2θt​

​=1−(ηt​ηi​​)2sin2θi​

​=1−(ηt​ηi​​)2(1−cos2θi​)

​​

GAMES101-现代计算机图形学学习笔记(17)材质

Fresnel Reflection / Term 菲涅尔项

描述能量被反射的占比情况,当得到反射能量的占比后,通过能量守恒定理就能计算出折射的能量部分。它描述了一种现象,当视线与观察物体表面越趋于平行时,反射的能量越多;反之反射的能量越少:

GAMES101-现代计算机图形学学习笔记(17)材质

如何计算菲涅尔项?

精确计算 : 首先计算出两个极化的反射率,然后求平均

GAMES101-现代计算机图形学学习笔记(17)材质

近似计算 :

GAMES101-现代计算机图形学学习笔记(17)材质

Microfacet Material

Microfacet Theory 微平面理论

微平面理论假设物体表面由不同方向的微小平面组成。每一个微小平面都会根据它的法线方向在一个方向上反射光线。基于该模型,我们对物体的表面进行观察的结果可分为远处和近处两种结果的。远处看到的物体表面呈现的是物体表面处无数微小平面与光照的总作用结果,而近处看到的物体表面呈现的是物体真正的几何信息。

GAMES101-现代计算机图形学学习笔记(17)材质

微平面理论旨在模拟三种现象:

①光滑的平面表面法向分布较为一致,粗糙的平面表面法线分布较为杂乱;

②在粗糙的表面上,微平面可以遮挡其他的微平面的光线,在其他微平面上投射阴影;

③菲涅尔现象

它引入了三个函数来解决:D、G、F

D 是法线分布函数,它解释了在观看者角度反射光的微平面的比例。

当定义了物体表面是由无数微小平面组成后,就可以通过这些微小平面的法线分布函数来计算该处与光线的反射。法线分布函数描述了在这个表面周围的法线分布情况,当输入向量h时,如果微平面中有35%与向量h取向一致,则法线分布函数就会返回0.35:

GAMES101-现代计算机图形学学习笔记(17)材质

G 是几何衰减函数(shadowing masking term),它解释了微平面彼此之间的阴影和遮罩。

F 是菲涅尔函数,它解释了菲涅耳效应,该效应使得与表面成较高的入射角的光线会以更高的镜面反射率进行反射。

GAMES101-现代计算机图形学学习笔记(17)材质

通过微平面理论我们能渲染出更加真实的结果:

GAMES101-现代计算机图形学学习笔记(17)材质

Isotropic / Anisotropic Materials (BRDFs)

有些地方的高光会出现一条一条的形状,这是如何形成的?

GAMES101-现代计算机图形学学习笔记(17)材质

关键是潜在表面的方向性导致的,当表面法线存在较多方向性时,会出现这种条纹状高光项(Anisotropic),反正会出现圆形状高光项(Isotropic):

GAMES101-现代计算机图形学学习笔记(17)材质

从角度上来进行理解,Anisotropic BRDFs 不仅和相对的方位角有关,还和绝对的方位角有关:

GAMES101-现代计算机图形学学习笔记(17)材质

参考:

https://zhuanlan.zhihu.com/p/255027783.

https://graphicscompendium.com/gamedev/15-pbr.

继续阅读