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

相关推荐
Luhui Dev5 天前
Google DeepMind Aletheia:完全自主研究的数学 Agent 解读
人工智能·数学
王老师青少年编程5 天前
csp信奥赛C++之反素数
数据结构·c++·数学·算法·csp·信奥赛·反素数
闻缺陷则喜何志丹6 天前
P8153 「PMOI-5」送分题/Yet Another Easy Strings Merging|普及+
c++·数学·算法·洛谷
王老师青少年编程6 天前
csp信奥赛C++之约数研究
数据结构·c++·数学·算法·csp·信奥赛·约数研究
Wishell20156 天前
数学中的卷积
数学
宇木灵7 天前
考研数学-高中数学回顾函数的微分day8(完结)
笔记·学习·考研·数学·函数·导数·微分
闻缺陷则喜何志丹7 天前
【计算几何 CAD】三点画弧、三点画圆是否是三角形的外接圆
c++·计算几何·cad··外接圆·
宇木灵7 天前
考研数学-高中数学-反三角函数与特殊函数day3
笔记·考研·数学·函数
软件资深者8 天前
2026 版初中几何辅助线教材 PDF|打印即提分,中考几何 “分水岭” 一键通关
学习·数学·pdf·教学·初中数学