图形学笔记(十四)光线追踪4——蒙特卡洛(Monte Carlo)积分、路径追踪详细过程(Whitted-Style的问题于RR(俄罗斯轮盘赌)算法、Ray Generation)、照片级真实感渲染
图形学笔记(十六)渲染的高级问题 —— BDPT、MLT、光子映射、VCM、IR、散射介质、毛发材质(双圆柱模型)、次表面散射、布料渲染
1 外观和材质
外观是光照和材质共同作用的结果。
由于材质不同,光线作用后会得到不同的结果,同样的模型会渲染出不同的结果。
渲染方程中,由brdf来决定材质。所以,Material == BRDF
2 反射和折射
2.1 Perfect Specular Reflection 完全镜面反射
对于完全镜面反射,有两种辨别方法:
-
入射光方向=出射光方向,它们中间是法线。
-
把角度投影到局部坐标系,从上往下看,入射角和出射角相反。
反射方向的计算方法:
2.2 Specular Refraction 折射
2.2.1 Snell’s Law 折射定律
由折射定律,
η
\eta
η是不同材质的折射率,有,
η
i
sin
θ
i
=
η
t
sin
θ
t
\eta_i\sin\theta_i=\eta_t\sin\theta_t
ηisinθi=ηtsinθt
从上面看,入射的
ϕ
\phi
ϕ和折射的$\phi满足下面的关系。
如果入射介质的折射率大于折射介质的折射率就会发生全反射。
2.2.2 Snell’s Window / Circle
由于全反射现象,从空气打到水面的光线超过一定角度就无法进入人眼,形成了下面的Snell’s Window / Circle 现象。
2.3 Fresnel Refection / Term 菲涅尔项
2.3.1 概览
反射与入射光的角度有关。
下图是Dielectric,
η
=
1.5
\eta=1.5
η=1.5的Fresnel Term(虚线表示两个极化),可以观察到入射角与法线的夹角越大越容易发生发射。
下图是导体的Fresnel Term。
2.3.2 Fresnel Term 公式
-
精确公式:需要考虑极化(polarization)
-
近似公式:Schlick’s approximation
3 常见材质
3.1 Diffuse / Lambertian Material 漫反射材质
在漫反射中,光被到达后会被均匀的反射到四面八方。
现在假设进来的光也是均匀的,即来自各个角度的irradiance是相同的。那么如果表面不吸收光,那么入射和出射的irradiance,且入射和出射都是均匀(uniform)的,那么入射光和出射光的radiance也是相同的。
由渲染方程,有
L
o
(
ω
o
)
=
∫
H
2
f
r
L
i
(
ω
i
)
cos
θ
i
d
ω
i
L_o(\omega_o)=\int_{H^2}f_rL_i(\omega_i)\cos\theta_id\omega_i
Lo(ωo)=∫H2frLi(ωi)cosθidωi
L
i
L_i
Li是radiance是常数,
f
r
f_r
fr为diffuse也是常数。把它们提到积分外,
L
o
(
ω
o
)
=
f
r
L
i
∫
H
2
cos
θ
i
d
ω
i
L_o(\omega_o)=f_rL_i\int_{H^2}\cos\theta_id\omega_i
Lo(ωo)=frLi∫H2cosθidωi
计算后面式子半球的定积分,
L
o
(
ω
o
)
=
π
f
r
L
i
L_o(\omega_o)=\pi f_r L_i
Lo(ωo)=πfrLi
又由于入射的radiance=出射的radiance,所以我们得到完全不吸收能量的brdf,
f
r
=
1
π
f_r=\frac{1}{\pi}
fr=π1
定义一个反射率albedo(color)——
ρ
\rho
ρ
f
r
=
ρ
π
f_r=\frac{\rho}{\pi}
fr=πρ
tip:漫反射材质的
f
r
f_r
fr是个常数,且
f
r
≤
1
π
f_r\le\frac{1}{\pi}
fr≤π1
3.2 Glossy material(BDRF)
glossy material是被打磨的铜镜之类的材质效果,是较为模糊的镜面,BRDF的反射方向集中在一个小范围内。
3.3 Ideal reflective / refractive material(BSDF*)
此种材质同时具有反射和折射,可以使用BSDF来表示这种材质(同时考虑反射和折射)。
B
S
D
F
=
B
R
D
F
+
B
T
D
F
BSDF=BRDF+BTDF
BSDF=BRDF+BTDF
3.4 Microfacet Material 微表面材质
3.4.1 概览
基本思想 如果离一个物体足够远,那么就看不到表面的细节,取而代之的是表面上的物体对表面的作用,即对光总体的效应。
例子 如下图太阳找到澳大利亚,澳大利亚的不同地形反映出来的是一个比较亮的材质。
3.4.2 Microfacet Theory微表面原理
微表面模型认为从远处看到的是材质外观,从近处看到的几何。
关键 研究微表面法线的分布。如下图所示,不同的法线分布会产生不同的材质,法线分布集中就是glossy、分散就是diffuse。
3.4.3 Microfacet BRDF
Microfacet BRDF主要由三项构成。
- Fresnel term:不同入射方向带来不同程度的反射,侧重能量。
- distribution of normals:法线分布,表示对于给定方向分布的值是多少。结合半程向量h就可以确定什么样的微表面可以从入射反射到出射(半程向量离法线越近越能反射)。
- shadowing-masking term:几何项,由于自遮挡现象使得有些微表面的作用。当光线几乎平着的打到微表面就容易发生shadow-masking。
3.5 Isotropic / Anisotropic Material (BRDFs) 各项同性/各向异性材质
3.5.1 概览
各向异性会产生如下效果。
关键 各向异性的表面的法线分布具有方向性。
3.5.2 各向同性与各向异性的区别
定义 如果BRDF不满足在方位角上旋转得到的还是相同的BRDF,则称为是各向异性材质。
简单来说各向同性的brdf只和相对的方位角有关,而各向异性材质不止和相对方位角有关还和绝对方位角有关。
f
r
=
(
θ
i
,
ϕ
i
;
θ
r
,
ϕ
r
)
≠
f
r
(
θ
i
,
θ
r
,
ϕ
r
−
ϕ
i
)
f_r=(\theta_i,\phi_i;\theta_r,\phi_r)\neq f_r(\theta_i,\theta_r,\phi_r-\phi_i)
fr=(θi,ϕi;θr,ϕr)=fr(θi,θr,ϕr−ϕi)
如图所示左边的求各向同性,右边的球各向异性。
下面的材质都是各项异性。
4 BRDFs 的性质
-
BRDF是非负的
f r ( ω i → ω r ) ≥ 0 f_r(\omega_i\to\omega_r)\ge0 fr(ωi→ωr)≥0 -
线性:brdf可以拆分
L
r
(
p
,
ω
r
)
=
∫
H
2
f
r
(
p
,
ω
i
→
ω
r
)
L
i
(
p
,
ω
i
)
cos
θ
i
d
ω
i
L_r(p,\omega_r)=\int_{H^2}f_r(p,\omega_i\to\omega_r)L_i(p,\omega_i)\cos\theta_id\omega_i
Lr(p,ωr)=∫H2fr(p,ωi→ωr)Li(p,ωi)cosθidωi
-
具有可逆性(Reciprocity):交换入射方向和出射方向的角色,得到相同的brdf。
f r ( ω r → ω i ) = f r ( ω i → ω r ) f_r(\omega_r\to\omega_i)=f_r(\omega_i\to\omega_r) fr(ωr→ωi)=fr(ωi→ωr)
-
能量守恒(Energy conservation)
∀ ω r ∫ H 2 f r ( ω i → ω r ) cos θ i d ω i ≤ 1 \forall\omega_r\int_{H^2}f_r(\omega_i\to\omega_r)\cos\theta_id\omega_i\le1 ∀ωr∫H2fr(ωi→ωr)cosθidωi≤1 -
各向同性与各向异性
如果是各向同性
f r = ( θ i , ϕ i ; θ r , ϕ r ) = f r ( θ i , θ r , ϕ r − ϕ i ) f_r=(\theta_i,\phi_i;\theta_r,\phi_r)= f_r(\theta_i,\theta_r,\phi_r-\phi_i) fr=(θi,ϕi;θr,ϕr)=fr(θi,θr,ϕr−ϕi)
由于可逆性(reciprocity)
f r = ( θ i , θ r , ϕ r − ϕ i ) = f r ( θ r , θ i , ϕ i − ϕ r ) = f r ( θ i , θ r , ∣ ϕ r − ϕ i ∣ ) f_r=(\theta_i,\theta_r,\phi_r-\phi_i)= f_r(\theta_r,\theta_i,\phi_i-\phi_r)= f_r(\theta_i,\theta_r, |\phi_r-\phi_i|) fr=(θi,θr,ϕr−ϕi)=fr(θr,θi,ϕi−ϕr)=fr(θi,θr,∣ϕr−ϕi∣)
5 测量BRDFs
只有测量出的BRDF才是真正的BRDF。
5.1 动机
- 避免计算brdf模型,只要测量出来就可以用。
- 计算的不一定准确,但测量能准确的得出真实世界的材质。
5.2 测量方法
测量BRDF就是让光影和相机从各个方向去照去拍。
下图是测量工具:gonioreflectometer,可以精确到0.1°的级别。
5.2 测量算法
foreach outgoing direction wo
move light to illuminate surface with a thin beam from wo
foreach incoming direction wi
move senser to be at direction wi from surface
measure incident radiance
改善
- 各向同性把维度从4维减少到了3维
- 使用可逆性减少了一般的测量
- 使用更加巧妙的光学测量
5.3 表示BRDF
5.3.1 需要的特性
- 紧凑的表示
- 测量数据的准确表示
- 对随意一对方向的高效预测
- 可用于重要性抽样的良好分布
5.3.2 Tabular Representation 表格化表示
把规则空间采样存储到三维数组 ( θ i , θ o , ∣ ϕ i − ϕ o ∣ ) (\theta_i,\theta_o,|\phi_i-\phi_o|) (θi,θo,∣ϕi−ϕo∣)里。
参数化角度以更好地匹配镜面反射。
一般需要将测量值重新采样到表格中。
材质库: MERL BRDF