Games101笔记——Lecture 13: Ray Tracing(Whitted-Style Ray Tracing)

Lecture 13: Ray Tracing(Whitted-Style Ray Tracing)

Why Ray Tracing?

  • 光栅化无法很好地表示全局效果
    • 软阴影
    • 当光线多次反射的时候(包括间接光照)
  • 光栅化很快,但其品质相对较低
  • 光线追踪很准确,但是非常慢
    • 光栅化:实时,光线追踪:离线
    • 生成1帧需要10k个cpu小时

Light Rays(光线的定义/假设)

  1. 光线沿直线传播(尽管不那么正确)
  2. 如果光线交叉,彼此不发生碰撞(尽管也不那么正确)
  3. 光线一定从光源发出经过反射、折射最后到达我们的眼睛(同样光线具有可逆性)
古代西方:眼睛发出感知光线的理论(有一定道理)

Ray Casting (光线的投射)

光线的投射

Ray Casting - Generating Eye Rays

Generating Eye Rays

Ray Casting - Shading Pixels (Local Only)

Shading Pixels (Local Only)

Recursive (Whitted-Style) Ray Tracing (重点)

Whitted-Style Ray Tracing

Recursive Ray Tracing
  • 对于不同材质表面,一条光路经过时考虑(多次)折射和反射

  • 如果光源能够照到光线的弹射点(折射或反射),则对应着色结果加入最后的图像

  • 因此要通过shadow rays 计算每一个弹射点对于光源的可见性

  • 而且要考虑距离导致的光线衰弱(因为能量守恒)

  • primary ray:由眼睛直接“打出”的光线

  • secondary ray:由眼睛“打出”一次弹射后的光线

  • 接下类解决具体的技术问题

Ray-Surface Intersection (光线和物体表面的焦点)

Ray Equation (光线方程定义)
  • 光线由其起点和方向定义
    光线由其起点和方向定义
Ray Intersection With Sphere (光线和球的交点)
  • 交点同时满足光线方程和球方程
    交点同时满足光线方程和球方程
    解方程,根数目的含义
Ray Intersection With Implict Surface (光线和隐式表面的交点)

推广到光线和隐式表面的交点

Ray Intersection With Triangle Mesh (光线和三角形网格的交点)

为什么这么做

  • 三角形网格是最重要的显示表面
  • 渲染上:可见性,阴影,光照
  • 几何上:测试某点发出的光线,若光线与物体交点为奇数,则该点在物体内部,否则在外部(推广到3d仍然可行,前提是物体应该为封闭的)

如何计算

  • 简单的想法:就逐个三角形计算交点个数
  • 简单但是比较慢(加速方法?)
  • 注意:可以用0或1个交点(忽略恰好平行的情况)
Ray Intersection With Triangle

分解为两个问题

  • 光线和平面的交点(问题)
  • 交点是否在三角形内(做过)
Plane Equation (平面的定义)
  • 平面基于一条法线和其经过的一个点定义
    Plane Equation
Ray Intersection With Plane

Ray Intersection With Plane

Moller Trumbore Algorithm
  • 更一步到位的算法
  • 只需要解出公式表示的线性方程组(使用克莱默法则)
  • 要求t为正,重心坐标系数均为正
    Moller Trumbore Algorithm
Accelerating Ray-Surface Intersection (光线表面求交点的加速)
  • 像素×物体×弹射:逐个计算的原始方法太慢了!
  • 怎么办呢?
Bounding Volumes (包围盒/包围体积)
  • 如果光线碰不到包围盒,更加碰不到包围盒中的物体
  • 三维中最常用的是长方体,理解成三组不同的对面的交集
  • 通常我们使用轴对齐包围盒(AABB),长方体的轴沿着坐标轴
Ray Intersection with Axis-Aligned Box (判断光线和包围盒交点)
  • 在二维中考虑
  • 从两个轴方向上计算得到两组进入、出去的时间值,即为两个线段
  • 求得两个线段的交集,即为光线实际进入和移出合资的时间
  • 三维中考虑相似,即当光线进入全部三个对面时才进入,光线离开任意一个对面就算离开
  • 即对各对面进入时间求max,对各对面离开时间求min
  • 由此,如果进入时间<离开时间,则与盒子又交点,否则没有

其他问题

  • 如果离开时间<0:盒子在光线“背后”——无交点
  • 离开时间>=0,进入时间<0:一定有焦点
  • 总结:光线和AABB有交点,当且仅当进入时间<离开时间 且 离开时间>=0
Why Axis-Aligned?
  • 利用了当平面和轴垂直时计算更加容易,如下图:
    Why Axis-Aligned
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值