GAMES101 Lecture14 光线追踪2

目录

      • [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(预处理,构建加速网格)

  1. 首先,找到包围盒。
  2. 创建网格
  3. 存储与物体表面相交的格点

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划分的包围盒有可能相交。

主要步骤:

  1. 找到当前的包围盒
  2. 递归地将当前的对象划分为两个子集。
  3. 重新计算两个子集的包围盒。
  4. 在必要的时候停止递归。
  5. 在每个叶节点存储物体。
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的定义就得到了:

参考资料

GAMES101 Lecture14

相关推荐
大邳草民1 天前
Math Reference Notes: 泰勒多项式
笔记·数学
Tisfy3 天前
LeetCode 2266.统计打字方案数:排列组合
数学·算法·leetcode·动态规划·题解·排列组合
小墙程序员7 天前
概率论笔记
数学
大卫小东(Sheldon)7 天前
RSA的原理和简单实践
数学·rust
丷从心9 天前
【数学】概率论与数理统计(五)
数学·概率论与数理统计
Tisfy9 天前
LeetCode 3270.求出数字答案:每位分别计算 或 for循环
数学·算法·leetcode·题解·进制
大邳草民12 天前
Math Reference Notes: 线性概念
笔记·线性代数·数学
一直学习永不止步14 天前
LeetCode题练习与总结:随机翻转矩阵--519
java·数学·算法·leetcode·哈希表·水塘抽样·随机化
patrickpdx15 天前
2019年IMO第2题
数学