材质
材质就是BRDF,BRDF定义了光线与物体如何交互,从而不同的材质产生了不同的视觉效果
- BRDF的R指的是反射(Reflection),但折射显然不是反射。
- BTDF的T指的是折射(Transmitte)。
- BRDF和BTDF统称为BSDF,这里的S指的是散射(Scatter)。
Diffuse / Lambertian Material(BRDF) 漫反射
首先认为现在在研究的这个漫反射材质是均匀的,这也意味着:
-
假设入射光是各个方向均匀射向这个着色点的,并且每一个入射光的光强都是相同的;
-
同时在着色点上,光是均匀地被反射到每个方向;
-
着色点本身既不发光,也不吸收光。
我们可以定义一个名为反射率这么一个该概念,英文名为albedo(color),albedo可以是单通道的一个数,也可以是三个数RGB,我们定义他的范围在[0,1]区间内,引入不同颜色BRDF,所以这个BRDF的值就是fr
,范围为[0, 1 / pi]
镜面折射(Specular Refraction)
Snell’s Law
如果结果不是一个实数,则说明折射不会发生,也就是入射的介质的折射率大于折射的介质的折射率,这种情况就可能出现没有折射这种现象,这种现象也成为全反射现象。
Snell’s Window
当人从水里外天空看的时候,只能看到一个锥形的范围,锥形范围之外的都看不见,就是因为发生了全反射现象
Fresnel Reflection / Term(菲涅尔项)
光线照射到物体表面后,一部分发生折射,一部分发生反射。那么发生反射部分的比例是多少,可以用菲涅尔项来描述。
- 如果一根入射光线和物体表面几乎平行,就认为大量能量会被反射。上图中光线与法线角度成90度就是表示光线与物体表面平行。
- 如果入射光线和物体表面垂直,就会有更多能量会穿过物体,发生折射,反射的能量就会比较少。
简化的计算公式
R ( θ ) = R 0 + ( 1 − R 0 ) ( 1 − c o s θ ) 5 R(\theta) = R_0 + (1-R_0)(1-cos\theta)^5 R(θ)=R0+(1−R0)(1−cosθ)5
R 0 = ( n 1 − n 2 n 1 + n 2 ) R_0 = \left( \frac{n_1-n_2}{n_1+n_2} \right) R0=(n1+n2n1−n2)
微表面材质(Microfacet BRDF)
几何表面的凹凸变化在远处看来就是材质,关键是微表面法线的分布:
第一个材质的法线朝向都大致朝上,所以是glossy材质
第二个的法线朝向差异明显,属于漫反射材质
只有半程向量与法线方向附近,微表面才会反射
- F:菲涅尔项,根据入射方向、半程向量得到反射比例。
- G: 几何项, 反射的过程中,有一部分的光被自身几何结构遮挡了,有多少比例的反射光没有被遮挡。光几乎是平行着物体表面,打到这个物体表面上时容易发生这种自投影(自遮挡)的现象
- D:法线分布函数,在所有的分布里,有多少比例的微平面的法线方向沿着半程向量。
各向同性和各向异性Isotropic / Anisotropic Materials(BRDFs)
在方位角上旋转,得到的不是相同的BRDF,就将其成为各向异性(Anisotropic)的材质。
就是在一个平面上有一对入射角和出射角,可知他们的半程向量是垂直于平面的,这时半程向量的方向不动,旋转这对角,这时他们相对的位置没有变化。
BRDFS的性质
-
BRDF的值非负
f r ( w i → w r ) > 0 f_r(w_i → w_r) > 0 fr(wi→wr)>0 -
可以拆分计算
- 可逆性
- 能量守恒
基于图像的 BRDF 测量
确定一个相机,确定一个光源。使用光源从四面八方照射物体,再用相机从四面八方取拍它,这样就可以覆盖BRDF的所有可能的输入方向和输出方向
提升效率:
- 同向异性表面将维度从 4D 降低到 3D
- 考虑到可逆性,又可以将测量次数砍掉一半
渲染高级话题
无偏路径追踪
无偏蒙特卡洛技术拿到的期望值,都是对的,不管采样多少次
双向光线追踪(BDPT)
很难实现,并且很慢,适用于光线传播很复杂
Metropolis光线传播
适用于复杂的、困难的光路传播,可以通过扰动产生一条新路径
但是所有操作都是局部的,各个像素收敛不同,结果会很脏
有偏路径追踪
光子映射(Photon Mapping)
适用于高光反射和生成聚焦
步骤:
- 从光源发射光子,直到打在漫反射表面
- 从相机发射光子,直到打在漫反射表面
- 计算局部密度评估
为什么光子映射有偏?
我们计算
d
N
/
d
A
!
=
Δ
N
/
Δ
A
dN / dA != \Delta N / \Delta A
dN/dA!=ΔN/ΔA
如果光子打出无限多,那么结果与正确结果无限接近
VCM
双向路线追踪和光子映射结合
当BDPT的路径在一个局部面上时,尽管他们没有相交但仍然可以把他们当作光子而不是光路,以此来做光子映射
实时辐射度Instant raduisity
已经被辐射的地方也当作光源
Advance Appearnce Modeling(复杂表面建模)
非表面模型
散射介质
光在其中传播时可能被吸收或者是散射——随机改变方向和距离,产生新的路径。除了云雾、烟尘等是散射介质外,一些材质吸收光线比较明显但也有一部分散射,比如巧克力、皮肤等
毛发模拟
发丝高光
光线不仅可以与头发表面互动,还可以穿过发丝从下表面出去,由于折射了两次,称之为TT。而在下内壁上还能发生反射,重新从上表面折射出,称之为TRT
动物毛发
人物毛发模型不足以描绘动物模型,因为动物毛发更容易发生散射(因为动物毛发内部髓质占比很大,头发颜色主要是由髓质决定的)
因此我们采用双重圆柱模型,因为在经过髓质时同样也会发生折射、反射,因此多了两种情况(TTs,TRTs)
Granular Material(颗粒材质)
由于计算量特别大,很少采用
表面材质
次表面反射(Scattering Function)
对BRDF的延伸——BSSRDF
从一个点进来,不仅能从任意方向出去,还能从不同点出去,更改后的渲染方程如图所示
这种方法可以用于透光材质,大理石、玉石、皮肤等
布料
布料本质上是多根相互缠绕的纤维,而且还有纺织手法的区别,计算量很大。
主要有三种渲染方法:
- 作为表面渲染:BRDF
- 作为散射介质渲染(计算量大)
- 渲染每个纤维(渲染每根纤维,计算量特别大)
微表面渲染
自然界中的物体表面并不是完全光滑的,而是有划痕、凹坑。为了更真实的渲染,我们可以采用为表卖弄渲染。
但由于表面变化太过细微,很难找到光源到着色点到相机、或者相机到着色点到光源的路径
ps:宏观的现象一定是由微观决定的