高级光线传播与复杂外观建模

高级光线传播——有偏和无偏的光线传播:

  • 无偏:使用蒙特卡洛方法解积分时,不管用多少样本呢,得到的期望是真实值
  • 有偏:估计出来的期望与真实值不一样。极限情况下收敛到真实值也是有偏的,称为consistent。对应到渲染结果,如果结果相对真实值较模糊,则是有偏的,但当样本足够多结果接近真实值就是一致的

1.Unbiased light transport methods无偏光线传播

[1]双向路径追踪(BDPT)

在这里插入图片描述

之前做的路径追踪,利用了光路的可逆性,从相机开始发射路径/光线,连接相机与光源

而双向路径追踪会生成两个不同的子路径,从光源会打出路径,从相机也会打出路径,在着色点把两个路径连起来,就形成了整条路径。

思想很简单,实现很困难。

以下是相同采样率下单向和双向的结果:
在这里插入图片描述

  • 适用于光传输较为复杂的光的侧面
  • 很难实现,而且很慢
[2]Metropolis Light Transport (MLT)

使用马尔科夫链:根据当前的样本生成比较接近的样本,因此对于任意未知的函数,都可以通过马尔科夫链的方法得到一系列的样本,使得这些样本的分布,和被积函数的形状一致。对应在光路上是一个局部方法,当存在一条路径时,可以产生与该路径相似的路径。如下橙色与蓝色路径。

在这里插入图片描述

MLT使用了马尔可夫链蒙特卡洛(MCMC)方法

  • 用一些 PDF 从当前样本跳转到下一个样本
  • 非常善于在局部探索困难的光路

在这里插入图片描述

MLT缺点:

  • 难以估计收敛速度
  • 不保证每个像素的收敛速度相等
  • 通常不用于渲染动画

2.有偏的光线传播

[1]Photon Mapping光子映射

非常善于处理镜面-漫反射-镜面(SDS)路径和产生焦散线(caustics
在这里插入图片描述

光子映射主要分为两步:

Stage 1 — photon tracing

  • 从光源发射光子,反弹它们,直到光子反射到一个漫反射材质表面它就停到那里
    在这里插入图片描述

Stage 2 — photon collection (final gathering)

  • 从相机拍摄子路径,反弹他们周围,直到他们到达漫反射表面

finally:计算 - 局部密度估计

  • 光子较多的区域应该更明亮
  • 对任何一个着色点取周围最近的N个光子,找出这N个光子的占据的面积,从而算出密度。
    在这里插入图片描述

但当N取较小时,噪声大,N取较大时,会模糊。一般应该取足够小的面积,选择面积内的光子数量来计算密度,所以上述计算方式有问题。顺应这个思路,当打出的光子足够多时,相对面积就会很小。
但若取固定的面积来计算,当光子很多时,会导致面积内光子变多,造成结果依旧不准确。
在这里插入图片描述

在渲染里,很容易判断是有偏的还是无偏的,就是通过计算判断其渲染结果是否有模糊,有任何一点模糊都是有偏的

  • Biased == blurry
[2]顶点连接与合并VCM

BDPT(双向路径追逐)与光子映射的结合,推导很复杂,想法简单:

  • 如果 BDPT 中的子路径的端点不能连接但可以合并,那么就不要浪费它们
  • 使用光子映射来处理附近“光子”的合并

在这里插入图片描述

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

简单理解:很多光源的算法,使用已经被照亮的面来当作光源去照射其他的面
在这里插入图片描述

  • 发射光子路径,并假设每个子路径的终点是虚点光源(VPL)
  • 使用这些 VPL 渲染场景

优点: 快速,通常在漫反射场景中给出很好的效果

缺点:

  • 尖峰会出现当 VPL 接近阴影点
  • 不能处理光泽材质

在这里插入图片描述

游戏、电影界现在比较常用的还是Ray Tracing,尽管有些年代了。

4.高级外观建模

[1]Non-surface models非表面模型
Participating media散射介质

在这里插入图片描述

当光线通过一个散射介质时,它可以被(部分)吸收和散射。
在这里插入图片描述

也就是光线在传播过程中会发生两件事:被吸收和被散射

使用相位函数(Phase Function )定义参与/散射介质中任一点 x 上光散射的角度分布

在这里插入图片描述

渲染方式:

光线往某方向走多远取决于介质的吸收能力和光的能量

  • 随机选择一个反弹方向
  • 随机选择一个直行的距离
  • 在每个“阴影点”,连接到光源

在这里插入图片描述

Hair/fur/fiber (BCSDF)头发/毛皮/纤维

需要考虑光线与每根头发的作用。下面有集中相关的作用模型

Kajiya-Kay Model

在这里插入图片描述

光线打到头发上会散射出一个圆锥,该模型的效果并不好

Marschner Model

广泛被应用的模型:

  • 光线不仅会反射(R)
  • 穿进头发发生折射(T)
  • 穿进头发再穿出(TT)
  • 穿透反射再穿透(TRT)

Marschner Model将头发当成一个玻璃圆柱,外层叫cuticle,里面叫cortex,cortex中包含色素
在这里插入图片描述

光线跟头发会产生多次散射,渲染很困难,计算量很大。

在这里插入图片描述

注意:人的头发模型并不足以表示动物毛发的模型,生物结构上不同。动物的毛的髓质多。

在这里插入图片描述

Granular material颗粒材料

远看是沙丘,近看是小颗粒堆积的。

在这里插入图片描述

[2]Surface models表面模型
Translucent material (BSSRDF) 半透明材料

次表面散射:

  • 光线从一个点进入表面,在内部发生了大量散射,最终再出去
  • 违反了 BRDF 的基本假设(可以说是对BRDF的扩展)

在这里插入图片描述

BRDF的所有作用都发生在一个点上,而BSSRDF是由一个方向进来,但是可以从其他方向出去, 进来和出去的点不一定一样。渲染方程要考虑对表面其他地方进入的光线,要对面积进行积分。

在这里插入图片描述

BSSRDF如果按照上面的思路来实现的话其实是很复杂的,那么引入了一个新的概念——Dipole Approximation偶极子近似[ Jensen et al. 2001]

通过引入两个点源,近似光扩散。比如常见的半透明物质,你在观察一个光源照射到它的表面时,它的内部是不是很像有一个上面光源。
在这里插入图片描述

BRDF vs BSSRDF
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

10个渲染得最真实的人物模型

Cloth布料

布料的构造:纤维Ply缠绕成股Yarn,股缠绕成线,由线编制为布
在这里插入图片描述

布料渲染方法(常见的三种方式):

  1. 当表面模型进行渲染,不同的织法有不同的BRDF(简单,效果也不错)
  2. 但对天鹅绒这种织物没办法像上述那样做。因此把织物认为是空间中分布的体积,划分成超级细小的格子,每个格子里知道纤维的分布与朝向,分开来计算。即将织物当作一个体积,知道体积中微小的块的性质。类似云烟的渲染。
  3. 最暴力的做法把每根纤维渲染出来,像头发一样
Detailed material (non-statistical BRDF)详细模型

很多模型使用相应的理论渲染出来的结果或许会太完美,导致与实物有所不同
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

seeooco

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值