目录
-
-
- [Uniform Spatial Partitions (Grids)](#Uniform Spatial Partitions (Grids))
-
- [Preprocess - Build Acceleration Grid(预处理,构建加速网格)](#Preprocess - Build Acceleration Grid(预处理,构建加速网格))
- [Ray-Scene Intersection](#Ray-Scene Intersection)
- [Spatial Partitions(空间划分)](#Spatial Partitions(空间划分))
-
- [KD-Tree Pre-Processing (预处理KD树)](#KD-Tree Pre-Processing (预处理KD树))
-
- [Traversing a KD-Tree(遍历KD树)](#Traversing a KD-Tree(遍历KD树))
- [Object Partitions & Bounding Volume Hierarchy(BVH)](#Object Partitions & Bounding Volume Hierarchy(BVH))
-
- [Building BVHs](#Building BVHs)
- [Data Structure for BVHs(存储BVH的数据结构)](#Data Structure for BVHs(存储BVH的数据结构))
- 空间划分和物体划分的区别
- [Basic radiometry(辐射度量学)](#Basic radiometry(辐射度量学))
-
- [Radiant Energy and Flux(Power)](#Radiant Energy and Flux(Power))
- [Radiant Intensity(辐射强度)](#Radiant Intensity(辐射强度))
- 参考资料
-
Uniform Spatial Partitions (Grids)
Preprocess - Build Acceleration Grid(预处理,构建加速网格)
- 首先,找到包围盒。
- 创建网格
- 存储与物体表面相交的格点
Ray-Scene Intersection
求出光线与哪些各点相交,沿着光线传播的方向遍历每个格子。
与这个格点存储的物体依次求交,判断是否与物体相交。

通常情况下,划分的格子数量与场景中的物体数量存在一个常数关系。
格子不能太稀疏,也不能太密集。
这种方法比较适合于场景中物体分布较为均匀的情况。
对于场景中存在大量空白的场景就不适合。
Spatial Partitions(空间划分)
空间划分的例子:

KD-Tree Pre-Processing (预处理KD树)
KD树的内部节点存储的信息:
- 当前划分的轴是哪个轴:x-, y-, z-
- 划分的位置:某个轴的坐标
- 子节点:指向子节点的指针
- 实际的物体都只存在于叶结点中。

Traversing a KD-Tree(遍历KD树)
从根节点开始,判断光线是否可能与当前节点相交;如果可能相交就递归地去搜索子节点,再去判断;如果不可能相交直接返回。

Object Partitions & Bounding Volume Hierarchy(BVH)
BVH 将场景中的物体进行划分,划分为两个子BVH ,两个子BVH 中的物体不存在交集,递归划分下去,保证每个物体最终只出现在一个包围盒中。
这种以物体进行划分就可以完全避免在KD树中,物体、三角形与包围盒求交,一个物体出现在多个节点中的问题。
BVH划分的包围盒有可能相交。
主要步骤:
- 找到当前的包围盒
- 递归地将当前的对象划分为两个子集。
- 重新计算两个子集的包围盒。
- 在必要的时候停止递归。
- 在每个叶节点存储物体。
Building BVHs
如何在划分一个节点呢?
- 选择一个维度来划分。
- 技巧1:总是选择当前最长的维度来进行划分。
- 技巧2:以当前位于中位数的物体的位置来进行划分。
终止条件:
当节点中的物体数量少于某个数时停止划分,比如5.
Data Structure for BVHs(存储BVH的数据结构)
中间节点:
- 包围盒
- 子节点
叶节点:
- 包围盒
- 对象列表
BVH和光线算法的主要步骤:

空间划分和物体划分的区别
-
空间划分(KD-Tree)
- 空间划分为两个不相交的部分
- 一个物体可能被包含在多个节点中。
-
物体划分
- 物体被划分在不相交的子集中。
- 包围盒可能在空间中相交。
Basic radiometry(辐射度量学)
定义了照明测量系统和单位。
能够精确测量空间中光的一些属性:
辐射通量、强度、辐照度、辐射度
辐射度量学相当于在物理上准确定义和度量光照的一个方法。
Radiant Energy and Flux(Power)
Radiant Energy: Energy that is transferred by electromagnetic radiation, such as light, X-rays, gamma rays, and thermal radiation, which may be described in terms of either discrete packets of energy, called photons, or continuous electromagnetic waves.(电能,由电磁辐射(如光、X 射线、伽马射线和热辐射)传递的能量,可以用离散的能量包(称为光子)或连续的电磁波来描述)
Radiant flux : 单位时间内的能量,也就是功率,单位是lumen.

几个重要的光学度量名词:

Radiant Intensity(辐射强度)
定义:由点光源发出的每单位立体角辐射强度,单位立体角的Power。

什么是立体角呢?
角度:弧长除半径。

立体角:在三维空间中的延伸。
面积除半径的平方。


因此,Radiant Intensity的定义就得到了:
