图形学笔记(十六)渲染的高级问题 —— BDPT、MLT、光子映射、VCM、IR、散射介质、毛发材质(双圆柱模型)、次表面散射、布料渲染

图形学笔记(十五)材质和外观 —— 菲涅尔项、常见材质(微表面材质、各向同性与各向异性)、BSDF、BRDF的性质、测量BRDF
图形学笔记(十七)相机,棱镜 和视场——FOV、焦距、曝光、F-Stop、ISO、薄透镜公式、Circle of Confusion Size、景深、理想薄透镜光线追踪

1 高级光线传播

1.1 有偏(Biased)与无偏(Unbiased)Monte Carlo估计

  • 无偏的Monte Carlo方法没有任何系统误差。即无论使用多少样本,无偏估计的期望值总是正确的。

  • 有系统误差存在就是有偏估计。

  • 一种特殊的有偏估计——consistent:当取样无穷大时没有系统误差。

在图形学中

  • Biased 有偏 == blurry 模糊
  • Consistent == 当取样点无穷时不模糊

1.2 Bidirectional Path Tracing(BDPT)双向路径追踪

BDPT是一种无偏的光线传播方法。

路径追踪是从相机到光源使用一条路径连接起来。

1.2.1 BDPT思想

  • 分别从相机和光源追踪sub-paths
  • 从两个sub-path连接端点(各追踪一部分然后汇聚)

在这里插入图片描述

1.2.2 BDPT 特点

  • 适合光线传播在光源这一边比较好算的情况。
  • 难以实现且非常慢

下图左边是path tracer,右边是Bidirectional path。
在这里插入图片描述

1.3 Metropolis Light Transport(MLT)

MLT属于无偏估计,主要是使用马尔可夫链来进行采样。

1.3.1 A Markov Chain Monte Carlo(MCMC) application 马尔可夫链

根据当前的样本可以生成与其靠近的下一个样本,他可以生成以任意形状函数为PDF的样本。

关键思想 局部扰动一个现存路径来获得一个新路径。
在这里插入图片描述

1.3.2 Metropolis Light Transport的特点

优点

  • 适合做复杂的光路传播(只要找到一条路径做为种子就可以找到更多路径)
  • 也是无偏的

在这里插入图片描述
缺点

  • 难以估计什么时候收敛
  • 所有操作是局部的,使得图片看上去比较脏。
  • 不能渲染动画(图像会抖的很厉害)

1.4 Photon Mapping 光子映射

caustics(聚焦):由于光线聚焦产生的一些列图案。

1.4.1 概览

光子映射是有偏的方法,分为两步。

擅长处理Specular-Diffuse-Specular(SDS)paths 和生成caustics。
在这里插入图片描述

1.4.2 方法

1> 阶段1——光子追踪

从光源发射光子,让它们在四周弹射,直到光子打到diffuse的物体上,把光子记录下来。
在这里插入图片描述

2> 阶段2——光子收集

从眼睛和摄像机开始,射出sub-paths,让它们在周围跳跃,直到它们打到漫反射的物体上。

3> 计算局部密度估计(local density estimation

当第二趟打到diffuse物体表面时,就要做一个局部的密度估计。

思想 光子分布越集中越亮。

做法 对于每个着色点,找到最近的N个光子。计算它们占据的面积。然后就可以计算光子的密度。

在这里插入图片描述
有偏的原因 密度的估计不准确,只有dA足够小才接近正确。
d N d A ≠ Δ N Δ A \frac{dN}{dA}\neq\frac{\Delta N}{\Delta A} dAdN=ΔAΔN

解决方法 更多的光子辐射出去 → \to 相同的N个光子则会覆盖更小的区域 Δ A → \Delta A \to ΔA Δ A \Delta A ΔA会更加接近 d A dA dA

所以它是biased,但是consistent的。

1.5 Vertex Connection and Merging(VCM)

VCM是BDPT和Photon Mapping的结合。

关键思想

  • 如果端点不能被连接而是可以被融合就不浪费BDPT中的sub-paths了。
  • 使用photon mapping来处理"photons"附近的融合。

在这里插入图片描述

1.6 Instant Radiosity(IR) 实时辐射度算法

有时也称作many-light方法。

关键思想 已经被照亮的表面可以被当作光源。

方法

  • 从光源打出sub-paths并把每一个sub-path的端点认作Virtual Point Light(VPL)
  • 使用这些VPLs渲染场景

在这里插入图片描述

优点 快速并且通常对漫反射场景的结果比较好。

缺点

  • 当VPLs非常接近着色点的时候,Spikes将会融合(如下右图有过亮的点)。
  • 不能处理glossy的材质。

在这里插入图片描述

2 高级外观建模

2.1 非表面模型

2.1.1 Participating Media 散射介质

当光通过散射介质时,任何一点可以(部分)吸收和散射。

在这里插入图片描述
使用相位函数(Phase Function)来描述参与介质中任意点的光散射角分布。

散射介质的渲染过程

  • 随机选择一个方向来弹射。
  • 随机选择一个距离直行。
  • 对于每一个“着色点”,把它连接到光源。

在这里插入图片描述

2.1.2 Hair Appearance

1> Kajiya——Kay Model

头发会散射成一个圆锥。像是diffuse+specular。
在这里插入图片描述

2> Marschner Model

除了考虑被散射的光线还要考虑穿过头发的光线。Marschner Model考虑了以下三证类型的光线。
R:直接反射的光。
TT:传进去再传出去的光。
TRT:光线进到头发里面,在头发的内壁发生一次反射再回去。
在这里插入图片描述Marschner Model先把头发当成玻璃圆柱。外层cuticle、内层cortex。
在这里插入图片描述
Marschner Model的结果
在这里插入图片描述

2.1.3 Fur Appearance

人和动物毛发都具有三层结构,如下图所示。但动物的Medulla比人大很多。

在这里插入图片描述

Double Cylinder Model

双层圆柱模型就是将Cortex也描述出来。
在这里插入图片描述双层圆柱模型由以下五部分组成。
在这里插入图片描述

在这里插入图片描述

2.1.4 Granular Material 颗粒材质

Granular Material是一种一粒一粒的模型。
在这里插入图片描述

2.2 Surface Model

2.2.1 Translucent(半透明) Material

在这里插入图片描述

2.2.2 Subsurface Scattering 次表面散射

Subsurface Scattering是在表面下发生的散射。

BSSRDF 是BRDF概念的延申。它表示某一点的出射radiance来源于另一个点的微分irradiance。

S ( x i , ω i , x o , ω o ) S(x_i,\omega_i,x_o,\omega_o) S(xi,ωi,xo,ωo)

Scattering Function 渲染方程的延申,表示所有表面上的点和所有方向的积分。

L ( x o , ω o ) = ∫ A ∫ H 2 S ( x i , ω i , x o , ω o ) L i ( x i , ω i ) cos ⁡ θ i d ω i d A L(x_o,\omega_o)=\int_A\int_{H^2}S(x_i,\omega_i,x_o,\omega_o)L_i(x_i,\omega_i)\cos\theta_id\omega_idA L(xo,ωo)=AH2S(xi,ωi,xo,ωo)Li(xi,ωi)cosθidωidA

在这里插入图片描述
Dipole Approximation 通过引入两个点光源来近似次表面散射的效果(上面的光源是为了增强真实感引入的)。

在这里插入图片描述BRDF与BSSRDF的效果对比
在这里插入图片描述

2.3 Cloth 布料

2.3.1 概述

  • 布料是一系列缠绕的纤维构成的。
  • 缠绕有两级:纤维(Fiber)第一次缠绕会成为股(Ply),股(Ply)缠绕会成为线(Yarn)。

在这里插入图片描述

2.3.2 渲染布料的三种方式

1> 把布料当作表面来渲染

  • 给定编制图案,计算总体表现。
  • 使用BRDF来渲染。
    但是对于天鹅绒,根本不是一个平面,所以当作表面来渲染不合理。

2> 把布料当作散射介质来渲染

  • 把单个纤维和它们分布的性质转化为散射参数。
  • 然后把它们当作散射介质来渲染。

3> 把布料当作真实的纤维来渲染

  • 即明确的渲染每一根纤维。

2.4 Detailed Appearance

2.4.1 动机

渲染出来的太过“完美”,而真实的世界中充满着各种各样的细节。

而细节很难通过渲染表现出来。
在这里插入图片描述因为对于微表面模型来说,通过从光源的不断反射,只有非常少的一部分会被反射到相机。
在这里插入图片描述

2.4.2 BRDF Over A Pixel

由于像素覆盖很多的微表面,所以将一个像素覆盖的法线分布计算出来然后替换光滑的法线分布,用在微表面模型里。
在这里插入图片描述一个可以像素覆盖不同大小的微表面,对于比较大的范围会得到统计学规律,而对于比较小的微表面得到的就比较有特点。
在这里插入图片描述
不同类型的法线贴图会得到不同的法线分布。

在这里插入图片描述

2.5 最近的趋势:波动光学

当物体非常小,就不能假设光沿直线传播,而是要考虑波动性,考虑光的波动性。

在这里插入图片描述
波动光学的BRDF与几何相似,但是相对而言比较不连续。

在这里插入图片描述

2.6 Procedural Appearance 程序化生成的外观

动机 不使用纹理贴图来定义细节。

3D noise(噪声函数) 可以直接通过噪声函数来计算细节,使用这种方法可以看到被切割或断裂的内部纹理。

例子:

if noise(x,y,z) > threshold:
	reflectance = 1
else
	reflectance = 0

应用 地形、水面、木头。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43399489/article/details/121725948