Advanced Light Transport-高级光线传播

无论样本数为多少,其估计的期望都为真实值,则是无偏估计,否则为有偏估计。
若样本数量趋于无穷大时,估计的期望趋于真实值,则该估计为一致的。

Unbiased Light Transport Methods-无偏的光线传播方法

Bidirection Path Tracing(BDRT)-双向路径追踪

从光源和相机都追踪半路径(sub-paths),将两条半路径的终点连接起来。
BDPT
双向路径追踪在有些情况下效果要好于传统路径追踪,如下图所示的情况,光源只直接照亮上方一小部分,其他部分都是由间接光照照亮的。
PTandBDPT
但是双向路径追踪实现很难,并且运行缓慢很多。

Metropolis Light Transport(MLT)

使用马尔科夫链蒙特卡罗方法(Markov Chain Monte Carlo, MCMC),使用马尔可夫链采样,可以根据当前样本生成下一个与它接近的样本。相比先前均匀采样的PDF,这样的方法可以使得生成的样本的分布与原来的被积函数一致。
因此MLT方法可以根据一条路径生成与它相似的路径,因此是一种局部的方法。通过在已有路径周围不断找新路径,最终便可以将全部路径找到。
MLT

MLT尤其适合计算复杂的光线传播,因为它以一条找到光路为种子,便可以在其周围不断找到新的光路。
BDPTandMLT

MLT也存在一定缺点,难以在理论层面分析算法的收敛速度,无法确保各像素都以相同的速度收敛(因为算法是局部的),因此图像往往看起来比较“脏”,所以通常MLT不被用于渲染动画。
MLTdirty

Biased Light Transport Methods-有偏的光线传播方法

Photon Mapping-光子映射

光子映射方法特别适合处理Specular-Diffuse-Specular(SDS)路径以及形成焦散(Caustics)。
SDS

光子映射是一个两步(two-stage)的方法
Stage 1-photon tracing
从光源发射光子,光子在场景中不断弹射(与正常的光线追踪一样,该反射就反射,该折射就折射),直到光子打到一个Diffuse表面上。
Stage1
Stage 2-photon collection(final gathering)
从相机射出sub-paths,在场景中不断弹射,直到打到Diffuse表面上。

最后进行计算,使用Local Density Estimation,其基本思想是光子越集中的地方越亮
具体做法是,对每个着色点,找到与其最近的N个光子(Nearest Neighbor问题),计算N个光子所占区域的面积。

由于Local Density Estimation是通过光子数/面积来估计的,因此是有偏的。
PhotonMappingBiased
如果产生更多光子,那么找到N个光子所占的面积就会减小,此时估计就会更接近实际值。也就是说,光子数量趋于无穷多时,ΔA>dA\Delta A -> \mathrm{d}A,因此光子映射方法是有偏一致的方法。
BiasedandConsistent

取固定的临近面积而增大光子数是有偏且不一致的,因为无论光子数量多大,其ΔA\Delta A都不会趋向于dA\mathrm{d}A

Vertex Connection and Merging(VCM)

VCM是一种BDPT和Photon Mapping方法的组合。
其基本思想为:对于BDPT方法中,两条sub-paths的终点无法被相连但是可以被合并的情况,将终点当作光子,利用Photon Mapping方法合并临近的光子。
VCM

Instant Radiosity(IR)-实时辐射度

基本思想为将已经被照亮的面也当作光源去照亮其他物体。
具体做法:从光源发射sub-paths并且将每条路径的终点当作一个虚拟点光源(Virtual Point Light, VPL),然后利用这些所有VPLs,按照常规的方法进行渲染。
IR

IR方法的优势在于计算较快,并且对于Diffuse场景常常有很好的效果。
但是当VPL与着色点很近时,会出现极亮的点(具体来说,这与对光源采样方法中除以两点距离的平方有关,当两点极接近时,就会除以一个极大的数,这部分内容详见GAMES101知识梳理:光线追踪)。
除此之外,IR方法无法渲染Glossy材质。
IRproblem

Advanced Appearance Modeling-高级外观建模

Non-Surface Models-非表面模型

Participating Media-参与介质(散射介质)

类似雾、云等介质,光线在这种参与介质中传播时会被吸收和散射。
ParticipatingMedia

光线在参与介质中的散射情况由相位函数(Phase Function)描述。
PhaseFunction

参与介质的渲染:随机选择一个弹射的方向;随机选择一个直线传播距离;每个着色点与光源连接。
ParticipatingMediaRendering

参与介质已经在动画与游戏中有很多应用。

Hair/Fur/Fiber(BCSDF)

Hair Appearance

对于头发的渲染主要是描述光线与曲线如何作用,而不是与面如何作用。
头发在光线作用下会形成两种高光,无色和有色。
Hair

Kajiya-Kay Model
Kajiya-Kay Model将头发当成圆柱,当光线打到这个圆柱上时,会散射出一个圆锥,同时有一部分光会被散射向四面八方,如下图
Kajiya-KayModel
Kajiya-KayModelHair
Kajiya-Kay Model渲染的头发并不足够真实,因此人们又提出了如今更为常见的Marschner Model

Marschner Model
Marschner Model考虑光线与“头发圆柱”作用时一部分会被反射,也有一部分会穿入头发发生折射。直接反射的光线传播路径为R;穿入时候折射,从另一侧穿出再次折射的光线传播路径为TT;穿入时候折射,在内壁进行一次反射,然后再折射穿出的传播路径为TRT。
MarschnerModel

Marschner Model将头发局部当成与玻璃类似的圆柱,外侧为表皮层(Cuticle),内层为皮质层(Cortex)。头发内部有色素,如果色素多,传入的光线会被大量吸收,头发会呈现黑色,如果色素少,传入的光线被吸收较少,头发则会呈现类似金色等颜色。
MarschnerModelStruct

Marschner Model可以获得更好的头发渲染效果。
MarschnerModelHair

Fur Appearance

人的头发模型不足以描述光线与动物毛发的作用
FurHuman

人与动物的毛发结构类似,但是动物毛发最中间的髓质(Medulla)相比人类要大得多,使光线在其中更容易发生散射。
HumanNCougar

在这样的理论基础上,闫令琪老师提出了Double Cylinder Model
DoubleCylinderModel
DoubleCylinderModel-Lobes
DoubleCylinderModel-Lobes2

闫老师的双层圆柱模型已经在工业界得到很多应用,如电影《猩球崛起》《狮子王HD》,两部电影都获得了奥斯卡最佳视觉效果奖提名。

Granular Material-颗粒材质

颗粒状的材质,如香料、盐等等。
GranularMaterial

要描述一堆颗粒很麻烦,计算量巨大,但是可以进行一定简化,进行程序化定义,如下图的沙子城堡,每一个单元都由特定比例的三种颗粒构成。
GranularMaterialProceduralDefinition

生成Granular Material需要的计算量和计算时间是巨大的,因此目前Granular Material渲染的问题还没得到很好的解决。

Surface Models

Translucent Material(BSSRDF)-半透明材质

典型的半透明材质有玉石、水母等等。
此处Translucent虽然翻译成半透明但实际上并不十分准确,真正的半透明应该是Semitransparent,光线进入Semitransparent材质会被部分吸收,而Translucent不仅包括了吸收也包括了散射,也就是说有一部分光线可以在进入之后经过散射从其他位置穿出。

这种散射现象被命名为次表面散射(Subsurface Scattering),如牛奶、人的耳朵就常有这种现象。
SubsurfaceScattering

次表面散射可以认为是对BRDF概念的延伸,用于描述次表面散射现象的BRDF被称为双向次表面散射反射分布函数BSSRDF(Bidirectional Subsurface Scattering Reflection Distribution Function)
BSSRDF

次表面散射常用Dipole Approximation方法进行近似
DipoleApproximation

Cloth-布料

纤维(Fiber)缠绕(Twist)成股(Ply),不同的股再次进行缠绕形成线(Yarn),最后由线织成布料。

根据不同织法,计算其不同的渲染表现,得到的也是BRDF模型,这是将其当成表面进行渲染,这样渲染有一定局限,比如天鹅绒的纤维是从表面伸出来的,当成表面进行渲染就不太合适。
ClothSurface

通常将织物认为是在空间中分布的体积而不是表面,将体积划分为非常小的格子,将其当成散射介质进行渲染。
ClothParticipatingMedia

除此之外,也可以就将其当成纤维来渲染,暴力地渲染出其每一股纤维。
ClothActualFibers

以上将布料当作表面、当作散射介质以及纤维的三种方法如今都有广泛应用。

Detailed Material(non-statistical BRDF)

显示中的材质并不会十分完美,比如车,鼠标上都会有些划痕
CarNMouse

之前所述的微表面模型,其法线分布用较简单且规律的函数进行描述,其得到的结果自然就是一个没有什么细节的结果。如果使其法线分布带有微小变化的细节同时又基本满足统计规律,便能使结果具有更多细节。
DistributionofNormals

将Detailed Material中每一个微表面都认为镜面反射时,渲染十分困难,因为每个面的反射方向确定,相机随机射出的光线最终打到光源的概率很低。
DetailedMaterialDifficulty
因此考虑一个像素覆盖许多个微表面,将微表面法线分布计算出来。
DetailedMaterialSolution

当微表面大小几乎与光的波长相当时,就不得不考虑波动光学的影响,会发生干涉、衍射等现象。

Procedural Appearance-程序化生成外观

用一定方式指导材质外观的生成,不用真正生成材质,而可以动态地对其进行查询。
使用Solid Noise函数可以生成各种花纹。