Ray Tracing

Ray Tracing

Light Rays

光线的定义:

  1. 光线沿直线传播,不考虑波动性。
  2. 光线之间不发生碰撞。
  3. 光线从光源发出,经过吸收、散射进入到人眼,但光路可逆。

Ray Casting(光线投射)

  1. 摄像机对屏幕中的每一个像素链接一条线,打出一根光线,判断该光线是否与物体相交。
  2. 若相交,选取最近的交点,从交点打出一条线链接点光源,若与物体不相交,两条线形成一条有效光路,否则该点在阴影内。

Recursive (Whitted-Style) Ray Tracing(递归式光线追踪)

从摄像机进行光线投射,光线打到物体时计算该点的着色;光线进行反射和折射,在该点继续对反射光和折射光进行光线投射,打到的交点进行着色。最后将所有着色点的颜色相加,映射到像素上。

Ray-Surface Intersection(光线与物体的相交)

光线在数学上的定义

光线定义为射线,由起点方向向量构成。

隐式表面

将光线方程与隐式表面方程联立,求解出t,o + td即为交点位置。

显式表面

将每一个三角形与光线判断求交。

判断一个点是否在封闭物体内:
以该点为起点发出射线,若与物体有偶数个交点,在物体外;有奇数个交点,在物体内。

判断光线是否与三角形相交

  1. 先找到光线与三角形平面的交点,在判断该交点是否在平面内。
    使用点法式定义平面,联立两方程求解:

  2. 直接使用重心坐标表示交点,解线性方程组:

Accelerating Ray-Surface Intersection(加速求交)

Bounding Volumes

包围盒方面可参考:
18 DirectXCollision碰撞库 (directx11.tech)

Ray intersection with Axis-Aligned Box

对于轴对齐包围盒,可以通过求光线到达平面的时间来判断。对于一对平面,可以求出光线进入的时间\(t_{min}\)和离开的时间\(t_{max}\),对于其他对平面也是如此,最后再取所有时间的交集,即\(max(t_{min})\)\(min(t_{max})\)

三维物体求交
对于三维物体,当光线进入了三个对面,光线才进入了物体;离开其中一个对面,就离开了物体,即\(t_{enter}=max(t_{min})\)\(t_{exit}=min(t_{max})\)

当离开时间\(t_{exit}<0\)时,物体在光线的反方向,不相交。
\(t_{exit}>0\)\(t_{enter}<0\)时,光线的起点在物体内,相交。
因此,相交的条件为

使用轴对齐包围盒可简化t的计算:

posted @ 2025-10-13 23:55  单身喵  阅读(4)  评论(0)    收藏  举报