Ray Tracing(1)

Ray Tracing 光线追踪

(Whitted-Style Ray Tracing)

Why Ray Tracing?

光栅化不能很好的表示全局的效果

image-20240723121916001
  • 软阴影(Soft shadows)
  • 光滑表面的反射(Glossy reflection)
  • 间接照明(Indirect illumination)不断漫反射
image-20240723141010886

Light Rays 光线

image-20240723141302076

  1. 光线沿直线传播 (尽管是错的)

  2. 管线不碰撞尽管相交(尽管是错的)

  3. 光线从光源出发到我们的眼睛 (光路可逆)

Ray Casting

image-20240723142044436

生成一张图通过每个像素投射射线

通过这些点通过看是否和光源连接判断 是否对光源也可见 是否是阴影

Generating Eye Rays

image-20240723142631283

image-20240723143331884

Recursive (Whitted-Style)Ray Tracing

image-20240723143535167

Ray-Surface Intersection 求交点

Ray Equation

Ray is defined by its origin and a direction vector

image-20240723144314976

t是时间 O是起始位置 d是方向

Ray Intersection With Sphere

image-20240723144817946 image-20240723145631951 image-20240723145842923

Ray Intersection With Triangle Mesh 光线和三角形交点

Plane Equation 平面方程式

image-20240723153324234

Ray Intersection With Plane

image-20240723153252186

  1. 计算法向量: 计算三角形的法向量。
  2. 计算平面方程: 利用法向量和三角形的一个顶点,计算平面方程。
  3. 计算交点: 求解光线方程和平面方程,找到相交点。
  4. 判断在三角形内: 检查交点是否在三角形内,通常使用边缘函数或其他方法。

Moller Trumbore Algorithm 更快的方法判断是否在三角形内部

image-20240723154947381

用重心坐标表示平面内的点

克莱姆法则(Cramer’s Rule)

image-20240723160750407

Accelerating Ray-Surface Intersection

Bounding Volumes 包围核(包围体积)

image-20240723161824091

如果光线和包围核都碰不到 更不用说里面的物体

这个box 包围核是什么 就是三个对面包围

image-20240723162414272

必须三个对面都进入才算进入 只要离开一个对面就算离开

image-20240723162721830

光线的起点在盒子里 负的时间进入 正的时间出去

离开时间小于0 说明光线在盒子背后

image-20240723163200234

Why Axis-Aligned

image-20240723163531330

使用平面上平行的线判断是否相交 简化计算