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

相关推荐
summ1ts18 小时前
组合数求法汇总
c++·数学·算法·离散数学·组合数学
shinelord明3 天前
【理论科学与实践技术】数学与经济管理中的学科与实用算法
数学·算法·管理·经济学管理
刘好念14 天前
[OpenGL]使用OpenGL绘制带纹理三角形
c++·计算机图形学·opengl
IT 青年19 天前
信息安全数学基础(7)最小公倍数
数学·信息安全·最小公倍数
IT 青年19 天前
信息安全数学基础(9)素数的算数基本定理
数学·信息安全·素数的算数基本定理
IT 青年20 天前
信息安全数学基础(14)欧拉函数
数学·信息安全·欧拉函数
人工智能培训咨询叶梓21 天前
全球和局部精细化:提升大模型推理能力的新方法
人工智能·数学·ai·语言模型·自然语言处理·多模态·推理
山登绝顶我为峰 3(^v^)324 天前
Docker 的安装和使用
linux·运维·数据库·数学·docker·容器
XuYueming25 天前
二项式反演学习笔记
数学·容斥·二项式反演·记录 & 心得·反演
IT 青年1 个月前
信息安全数学基础(1)整除的概念
数学·信息安全·网络空间安全