高级光线传播与复杂外观建模
一、无偏光线传播方式
1、无偏和有偏蒙特卡洛估计
- 无偏: 无论采样多少样本,得出期望是正确的。否则是有偏的
- 一致性:有偏的估计在无限样本下收敛到正确的期望值。
2、双向路径追踪(BDPT)
- 记录从摄像机出发和从光源出发的半路径。
- 将两个半路径的端点连起来。
- 适合光源处光线传播复杂的路径。
- 很难实现且很慢
3、Metropolis光线传播(MLT)
- 马尔可夫链采样。
- 当被积函数和pdf同形时,方差最小。
- 马尔可夫链可以通过一系列方法使得样本的形状与被积函数一致。
- 适合局部寻找复杂光线路径。
关键思路
对现有路径进行局部扰动(对路径上的点进行调整),得到一条新的路径。
缺点
- 估计收敛速度比较困难
- 容易产生“脏”数据
二、有偏光线传播方式
1、光子映射
- 有偏、分两步进行的方法
- 适合处理光线路径经过 Specular-Diffuse-Specular (SDS) 的这种情况,能产生 Caustics 现象。
(Caustics 的定义:光线聚焦所产生的图案)
1、过程
1、光子从光源出发,经过反射、折射等,打到漫反射平面上就停下来里。
2、光子从相机出发,经过反射、折射等,打到漫反射平面上就停下来里。
然后进行局部密度估计,估计光子的密度来判断。
对于每一个着色点,寻找其最近N个光子,求出其面积,密度=N/面积。
小的N
↔
\leftrightarrow
↔噪声
大的N
↔
\leftrightarrow
↔模糊
2、为什么有偏
- d N d A ≠ △ N △ A \frac{dN}{dA}\not=\frac{\triangle N}{\triangle A} dAdN=△A△N
- 当光子足够多时,同样的N,A更小, △ A → d A \triangle A \rightarrow dA △A→dA
- 有偏且一致
有偏=模糊
一致=只有样本足够多,就能收敛到没有模糊的结果。
2、VCM
将双向路径追踪和光子映射结合起来。
1、关键思想
1、如果BDPT的半路径的终点不能连接起来,但是其在一个局部平面里,就可以进行合并。
2、使用光子映射将其合并
3、实时辐射度算法(IR)
1、关键思想
已经被照亮的地方被当成是光源
2、方法
1、从光源打出多条半路径,其终点所在位置即为 虚拟点光源(VPL)
2、使用这些VPL渲染场景。
3、优缺
- 优点
速度快,且在漫反射场景有较好的效果 - 缺点
1、不能在gloosy场景使用
2、渲染的点太近,会出现小光源(与投影光源距离的平方有关)。
二、高级材质模型
1、非表面模型
1、散射介质
把光线散射到不同方向。
- 由相位函数决定是如何散射的,均匀的,大部分向前还是大部分向后。
- 渲染过程
1、随机选择一个反向进行弹射
2、随机选择光线弹射后的距离
3、在每一个着色点处与光源相连,并依次计算光源对着色点的贡献
2、头发
- Kajiya-Kay模型
它是把每一根头发看成是圆柱体进行建模处理,发生反射时考虑光源会以一个圆锥体的方向进行散射 - Marschner模型
在 Kajiya-Kay Model 的基础上,考虑光与圆柱体有三种作用方式,(圆柱体类似玻璃圆柱体):
R: 光线被反射,以圆锥体范围进行散射
TT:光线穿入圆柱体,穿出圆柱体,发生两次折射
TRT:光线穿入圆柱体,光线被反射、光线穿出圆柱体
3、动物毛发
动物毛皮比人体头发多了一层髓质的结构,它会使光发生散射。(人体头发也有,只是髓质不大)
Double Cylinder模型:
相当于圆柱里面还有一个圆柱体。
4、颗粒状材质
通常可以通过每个单元格上的 granules 来进行渲染。
2、表面模型
1、Translucent 材质
玉石、水母
- 光线在穿入表面后会在表面内部发生大量散射,再穿出表面(次表面散射)
- 基于次表面散射的 BRDF (BSSRDF)其实是对 BRDF 的一种延伸。它由于在表面内部发生了一些散射,所以会从不同的位置反射,由于反射的位置不定,所以在 BSSRDF 中还需要对表面面积 A进行积分:
L ( x o , w o ) = ∫ A ∫ H 2 S ( x i , w i , x o , w o ) L i ( x i , w i ) c o s ( θ i ) d w i d A L(x_o,w_o)=\int_A \int_{H^2}S(x_i,w_i,x_o,w_o)L_i(x_i,w_i)cos(\theta_i)dw_idA L(xo,wo)=∫A∫H2S(xi,wi,xo,wo)Li(xi,wi)cos(θi)dwidA
- 采用了一种近似求解的方式,即当光线打入到物体表面的着色点时,假设物体表面的底部和顶部分布有两个虚拟光源在照射着周围的着色点.
2、布料
- 平面渲染方式
布料当成是物体表面材质进行渲染,通过给定的织布模式,来计算对应的布料 BRDF。 - Participating Media渲染方式
把布料看成是空间中分布的体积进行处理,它把空间分成不同细小的格子,在不同格子里再调整纤维的分布和复杂程度,以模拟布料 - Actual Fibers
把布料当成实际上的每一根纤维进行渲染
3、有细节的材质
法线图中定义一些噪声,会使得结果更加真实。
3、Procedural材质
通过一定方式生成物体表面材质。通过某个函数 f ( x , y , z ) f(x,y,z) f(x,y,z) 可以得到该点对应的纹理 noise,这种函数也叫做 noise 函数。
三、参考和引用
[1] bilibili:GAMES101-现代计算机图形学入门-闫令琪
[2] 高级光线传播与复杂外观建模.pdf
[3] CSDN:GAMES101-现代计算机图形学学习笔记(18)