Lecture14_光线追踪2(Ray Tracing 2)_GAMES101 课堂笔记

Lecture 13 内容:


Lecture 14 内容概览:

  • 使用 AABBs 加速光线追踪
    • 均分的格子
    • 空间划分(Spatial partitions)
  • 辐射度量学(Basic Radiometry)

第一部分:光线追踪加速

一、均匀的空间划分(Grids)

(一) 预处理 - 构建加速网格

划分格子主要有图中所示的三个步骤(图中有一个格子也应涂上)。对于第3步:最大的圆中有一个空白格,是因为只考虑表面(即圆周所在的单元格)。

(二)光线与场景交叉:

一束光线摄入,首先按照摄入顺序建立射线遍历的网格;然后依次便利每一个单元格是否与物体交叉。

另外,关于格子划分的个数和大小也有讲究。如果格子数划分较少(例如:1个),这样并不能实现加速;如果格子划分太多,反而会因为便利许多格子使效率低下。因此发明了一种启发式算法尽量选取适中的格子数。计算方法如下图:

(三)Uniform优缺点分析:

优点:适合对于分布均匀的规则的图像进行加速,例如下图:

缺点:对于大规模空白图像,分布不均匀,很难找到某个小的物体;因此,不适合用格子解决。例如下图:


二、空间划分(Spatial Partitions)

主要有以下三种方法:

  1. Oct-Tree(八叉树):切8份,在 2D 场景中为 4 叉;在 3D 场景中为 8 叉。但是在更高维的场景中将面临问题。
  2. KD-Tree : 沿着某一个维度不断二分(类似二叉树思想)。
  3. BSP-Tree : 斜二分方法,但是由于不是方方正正,计算比较复杂,尤其是对于高维度场景,相当麻烦。

建立树应在光线追踪前完成。下面以 KD-Tree 举例,概述划分过程。例如下图,仅展示一部分划分过程:

KD-Tree 数据结构

KD-Tree 如何加速光线追踪?

利用结构划分格子 ==> 光线与划分顺序的格子(先大后小)依次判定是否相交 ==> (找交点)若相交,判定是否与物体相交;否则不相交,开始判定下一个格子是否与光线相交。

KD-Tree缺点:
  1. 一个物体可能存在多个格子中。
  2. 需要判断三角形与格子求交。

上面两个问题比较难解决,于是逐渐发明了另外一种方法:物体划分。

由于很难判断三角形与格子相交,


三、物体划分(Object Partitions)

该方法目前被广泛应用。这种方法形成的加速结构叫做:BVH(Bounding Volume Hierarchy)。

BVH是将物体完整划分到两个部分中,然后不断向下进行划分,重新求Bounding box。例如下图:

(一)建立 BVHs 过程:
  1. 查找边框(bounding box)
  2. 递归地划分在两个子集对象集
  3. 重新计算子集的边界框(Bounding box)
  4. 必要时停止划分
  5. 存储在每个叶子节点中的对象
(二)怎样划分结点
  1. 选择一个维度分裂
  2. 启发法#1:总是选择节点的最长轴
  3. 启发法#2:中位数物体进行分割,即物体个数平均划分(使得划分的数量相当,便于查找。例如:快速选择算法,可以实现 \(O(n)\) 效率。)
(三)划分的终止条件

通常是当划分区域内的物体个数小到某一个数时,停止划分。(例如 \(\leq 5\) )。

(四)BVHs 的数据结构

四、空间划分 vs 物体划分


第二部分:辐射度量学(Basic radiometry)

一、辐射度量学作用

在光线追踪时,Whitted style 并没有展示很真实、正确的效果。因此引入辐射度量学,是为了从物理上,更精准的描述物体。

二、定义

  1. 测量系统和单位照明
  2. 精确地测量光的空间特性
    • 新的术语:Radiant flux, intensity, irradiance, radiance
  3. 在物理上,以精准的方式进行照明时计算

三、计算流程

(一)Radiant Energy and Flux(Power)

定义:辐射能是电磁辐射的能量。它以焦耳为单位测量,并用符号表示为:

\[Q[J=Joule] \]

定义:辐射通量(功率)发射的能量,反射,发射或接收,每单位时间

\[\Phi = \frac{dQ}{dt}[W=Watt][lm=lumen]^* \]

一些重要的光线定义:

(二) Radiant Intensity
1. 定义:

  1. 关于立体角

1) 立体角定义:

2D 内为 角(Angle:\(\theta = \frac{l}{r}\)),3D 内为立体角(solid angle,\(\omega=\frac{A}{r^2}\))。

2)立体角微积分

3. 各方向的点光源

对所有方向上的求积分:

4. 实例:

猜你喜欢

转载自www.cnblogs.com/somedayLi/p/12595785.html