**18 ** 高级光线传播与复杂外观建模
本章虽然是高级光线传播与复杂外观建模,但是都没有展开讲,不涉及具体的计算。
高级光线传播
- 无偏的光线传播:如果无论样本多少,算出来的期望值永远是对的。例如蒙特卡洛积分,它没有系统误差。
- 有偏的光线传播:算出的期望值有一定误差的。
- 一致的光线传播:在有偏的情况下如果采样足够多的样本能够收敛到正确值。
无偏的光线传播方法
双向路径追踪
之前的路径追踪是单向的,运用光源可逆性,从眼睛到光源。
BDPT双向路径追踪分别从光源和摄像机生成一系列半路径,然后再连接两个半路径的端点形成整条路径。
- 优点:光线传播在光源半边好算时,效果好
- 缺点:慢
Metropolis光线传播(MLT)
-
用马尔科夫链做蒙特卡洛积分
-
- 马尔科夫链是一种能在当前样本附近生成下一个样本的方法
-
在给定足够的时间下,可以以任意的函数为PDF生成样本,(当PDF的形状与要积分的函数形状一致时,使用蒙特卡洛积分效果最好)
-
优点:
-
- 特别适合做复杂光路的传播
-
缺点:
-
- 不知道收敛的速度(无法估计渲染时间)
- 局部,脏
- 所以不用来渲染动画
有偏的光线传播方法
光子映射
特别适合渲染SDS路径和焦散现象
举例一种方法:
光子映射是一种有偏但是一致的方法。
-
渲染领域对于有偏无偏的理解:
-
- 有偏的结果相对于正确的结果会更模糊
- 一致的说明在样本足够多的情况下会收敛到正确结果
-
如果取作色点周围相同的面积去数里面的光子数,那结果是即有偏也不一致的
顶点的连接与合并(VCM)
-
结合BDPT与光子映射
-
主要思想:
-
- 如果BDPT中的半路径的两个端点在一个平面上,不能被连接但可以被合并,我们就不要浪费这些半路径
- 使用类似光子映射的方法把邻近的”光子“的贡献结合起来
实时辐射度(IR)
- 主要思想:已经被照亮的表面就认为是光源
- 从光源发出半路径,并假设每个半路径的终点是虚拟点光源,然后根据这些虚拟点光源渲染整个场景
- 优点:速度快,通常在漫反射场景中效果良好
- 缺点:当 VPL 接近着色点时会出现峰值;无法处理有glossy材质
复杂外观建模
非表面模型
散射材质:云/雾
在光线穿过参与介质的时候,会随机吸收(部分)和散射到各个方向,同时传播的过程中也可能会接收到其他方向散射来的光
相位函数描述了参与介质中任意点x处的光散射角的分布。
散射材质渲染的主要思想:
- 随机选择一个方向弹射
- 随机选择一段距离直走,走多远由介质的吸收能力决定
- 在每个”着色点“,连接到灯光,计算路径的贡献
头发/毛发/纤维
头发:
Marschner Model,应用比较广泛,这个模型把发丝看作内部有色素会吸收能量的玻璃圆柱,同时把头发结构分为两层,角质层和皮质层,光线打到头发的圆柱时,会被反射,以及穿进去折射后反射再折射出来,以及折射进入后折射出来,也就是R,TRT,TT (R: reflection, T: transmission)。
利用Marschner Model,让光线和多根头发发生多次散射,渲染困难,计算量大,但是效果很好
动物毛发:
从生物上的结构,头发/毛发分为角质,皮质以及髓质,对于动物来说,中间的髓质更大光线更容易发生散射
双层圆柱模型:模拟了光线经过髓质的效果,使用了五个分量来模拟毛发,在《猩球崛起》《狮子王》中得到应用。
颗粒材质
可以避免对所有颗粒进行显式建模,在一个单元上进行一些程序化的定义来简化模型
目前仍没有很好的高效渲染这种材质的方法,仍然非常耗时,没有得到很广泛的应用
表面模型
半透明材质
应用:玉石、水母
反应在物理上,这种半透明材质说明了光线发生了次表面散射:
BRDF vs BSSRDF
真实的次表面散射材质和真实的皮肤质感
布料材质
布的结构:
当成表面渲染,根据不同织法给出不同的BRDF。
如果当成表面渲染意味着我们没法渲染类似天鹅绒的材质。
也可以通过单根纤维的特性即分布推算出散射参数,向渲染云那样的散射介质一样来渲染布料,但计算量大。
也可以把每一根纤维都渲染出来,但计算量更大。
细节模型
微表面模型中最重要的是它的法线分布,但是我们描述这个分布用的都是很简单的模型,比如正态分布之类的,真实的分布要更复杂。
真实的法线分布基本符合统计规律,但是又有一些细节
如果使用法线贴图来把这些起伏细节都定义出来,会非常耗时
使用路径追踪困难的点在于,微表面的镜面反射在法线分布复杂的情况下,很难建立有效的的光线通路从相机出发打到光源
波动光学的BRDF结果与几何光学类似,但由于干涉出现不连续的特点
程序化生成外观
利用三维空间中的噪声函数指导材质的生成,可以进行动态查询
应用:车绣效果、程序化地形、水面、木头纹理