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?
因为计算更方便。