一.高级光线传播
1、无偏的
①有偏VS无偏
- 蒙特卡洛估计出的结果的期望永远是对的
eg:PT中不管有多少样本,期望都是定积分的值
- 有偏的:估计出的结果的期望和积分的值不一样
-
- 一个特殊情况(一致的):极限定义下,会收敛到正确值
②双向路径追踪(BDPT)
- 优点:光线传播在光源半边好算时,效果好
- 缺点:慢
③Metropolis光线传播(MLT)
- 用马尔科夫链的方法采样
- 局部(local)做法
- 优点:适合做复杂的光路(用一条光路作为种子)
- 缺点
-
- 不知道收敛的速度(无法预估渲染时间)
- 局部→ 看起来脏
2、有偏的
①光子映射(Photon Mapping)
- 非常擅长处理高光漫反射(SDS)路径并产生焦散
- 两步做法
举例一种:
Stage1:从光源触发,知道打到diffuse表面,停在那里
Stage:从camera开始,也打到diffuse停下,
//Stage1&2合起来:局部密度估计,对于任意一个着色点,取n个最近的光子,计算占据的面积,然后计算光子密度 - 细说光子映射
②VCM (Vertex Connection and Merging)
结合了光子映射和双向路径追踪
3、Instant Radiosity实时辐射度算法
- 已经照亮的面都认为是光源,再照亮其他地方
- 优点:快,能处理分散的场景
- 缺点:不能做gloosy的物体
二.高级外观建模
1.非表面
①Participating media (如,云、雾):散射介质
- 用Phase 函数定义光线如何折射
- 如何渲染?
②Hair/fur/fiber(BCSDF)
·头发有色和无色的高光是怎么来的?
·以上效果不对→ 因为光线能穿过头发 →
·Marschner Model
·动物毛发(fur):引入骨髓质
③Granular material(颗粒材质)
.表面
①Translucent material (BSSRDF)半透明材质:
与传统的半透明材质有些不同,光线进入物体之后又发生了多次散射之后从另一个地方发射出去,这种散射方式叫做次表面散射,这个BSSRDF相比于BRDF中间的SS就是次表面散射
- 如,玉石、水母
光线打到次表面散射的材质表面,就好像物体的底下有一个光源,为了物理上的真实,对应的上方也应该有一个光源。
BRDF与BSSRDF对比:
Cloth布料
- 原理:不同纤维缠绕而来(fiber → Ply → Yarn )
- 具体做法:
-
- 当做表面(图1)
- 当做Participating Media(图2)
- 当成真正的纤维(图3)
③Detailed material (non-statistical BRDF)复杂/细节的材质
·对微表面模型的BRDF进行完善(加上现实中有的statistical normals)
-
- D(h)项,正态分布和现实并不一样(图2)
- 解决方法:一个pixel对应一个微表面(图3)
·不同的法线贴图有不同效果
- 到此为止了? → No → 光的波动性(太难了)
3.程序化生成材质
- 可以不用texture定义细节 → Noise function(定义在空间上的)
- 给定任意空间中xyz,会返回一个值,可以用来生成地形,水面等等
- 程序化生成:用一定的方式指导材质的生成,而不需要真正的生成,可以动态的查询他。
-
Houdini是先程序化生成,再拿来用。这个不用生成,直接去查询