Games101-Ray Tracing (Introduction) -L13
Ray Tracing - Introduction (L13)
0.Introduction
0.1 光栅化无法处理的问题
Rasterization couldn’t handle global effects well.


0.2 Rasterization vs. Ray Tracing
| 1 |  | 
质量和时间为“Trade-off”
1.Recursive (Whitted-Style) Ray Tracing
1.1 Light Rays
基本假设: 直线传播;不发生碰撞;光路可逆
(将物体发射到观察者的光线等效成由观察者发向物体一道“感知光线”,光路仍成立,这也是光线“追踪“的命名由来)
| 1 |  | 

1.2 Ray Casting(光线投射:生成不同的光线)
1.2.1 概述

| 1 |  | 
1.2 2 An Example:
| 1 |  | 


| 1 |  | 
1.2.3 Recursive Ray Casting(Whitted-Style) 概述

模拟光线不断弹射的过程,将多次反射和折射的结果都加入到该点的像素值上。
注意:多次反射和折射当然要考虑能量衰减。

1.3 Ray-surface Intersection
1.3.1 Ray Equation
Ray is defined by its origin and a direction vector.
ATTENTION:图形学中一般不纠结边界条件(如t>0还是t>=0)
Example: Ray Intersection With Sphere

最后可以化为二次方程进行求解,注意根据光线与球面的位置关系分类讨论。

1.3.2 For implicit surface

1.3.3 For Triangle Mesh(Explicit surfaces)
(作为显式表示的最重要代表,选用三角形面)
[Point in polygon Test]
检查一点是否在多边形之内,可作一射线从该点开始往任意方向投射,如果射线与多边形边的交点个数为奇数,则该点位于多边形内部。

但是直接按此方法判定光线和三角形面的位置关系计算量过大。
改进:问题转化为求出光线和三角形所在平面的交点,再判断交点是否在三角形内部。

定义平面:法线+平面上任意一点P’

至此已经可以解出光线与平面的交点,再判定是否在三角形内部。
改进:(可以直接解出光线和三角形的交点,并验证其解的合理性)

1.4 Accelerating Ray-Surface Intersection
在像素数过多、光线弹射情况复杂时,上述方法效率过低。

1.4.1 Bounding Volumes
引入”包围盒“Bounding Volumes,即光线如果不会碰到Bounding Volumes,则它一定不会碰到物体。

对于Bounding Volumes的进一步定义:Bounding Box is the intersection of 3 pairs of slabs
即:包围盒是三组平面的交集。
常用包围盒:Axis-Aligned Bounding Box(AABB,轴对齐包围盒)

1.4.2 Ray Intersection with AABB
| 1 |  | 

即:进入任何一对平面即认为进入box,离开所有平面才认为离开box。
因此对于每一对平面计算$t_{min}$和$t_{max}$,求出进入时间和离开时间:
再考虑由于光线实际为射线带来的正负号问题。
综上,得到结论:
1.4.3 Why Axis-Aligned?
因为计算更方便。
