闫令琪计算机图形学入门Games101---Lecture13 光线追踪

引入光线追踪的原因

光栅化的缺点:不能很好的处理全局光照

  • 光栅化:快 real-time 质量低
  • 光线追踪:慢 offline 质量高

下面考虑全局光照的例子:

Whitted-Style 光线追踪

定义光线

光线的定义:

  • 直线传播
  • 光线间不会碰撞
  • 光线从光源发出,进入场景不断碰撞,最终到达眼睛

光线传播性质reversal-reciprocity(可逆性):
光从光源发出进行弹射,最终进入眼睛。也可以认为眼睛发出一些感知光线进行弹射,最终回到光源(逆过程)。

Ray Casting 光线投射

光线投射用来判断是否需要进行光线追踪还是直接进行着色模型。
将成像平面化为不同pixel,对于每个pixel,从眼睛开始穿过这个pixel发出一条光线,这条光线最终打到某个位置,与物体相交或不相交。
如果和某个物体相交,说明眼睛朝这个方向能看到这里。再让物体上交点与光线连接,如果没有遮挡,就形成了一条有效的光路,否则为阴影。

定义三种光线:

  • 光源 ---> 物体某点 ---> 眼睛
  • 比shadow mapping方便

    紧接着,用着色模型对这个点进行局部光照模型计算,得到该像素的颜色,那么遍历所有近投影平面上的像素就能得到一张完整的图像。但如果光线追踪仅仅是在第一步Ray Casting就停止的话,那么它的效果与局部光照模型是一样的,因此我们需要第二步,真正的考虑全局效果。

    Whitted Style Ray Tracing

    两个假设前提:

  • 人眼是一个点
  • 场景中的物体,光线打到后都会进行完美的反射/折射
  • primary ray:眼睛直接发出的光线
  • secondary ray:间接发出的光线
  • shadow ray:物体交点间接发出到光源的光线

    因此每一个交点的颜色贡献来自这样种几类型 直接光照,反射方向间接光,折射方向间接光(如果有折射的话)

  • 递归过程
    • 递归出口例如允许的最大反射或折射次数为10
  • 能量损耗
    • 系数决定,因此越往后的折射和反射光贡献的能量越小,这也是为什么在上文中提到根据光线能量权重求和。 e.g. 反射系数为0.7,那么第一次反射折损30%,第二次反射折损1-(70%x70%),依次类推。
  • 如果反射或折射光线没有碰撞到物体,一般直接返回一个背景色
  • 参考伪代码(来自知乎):

光线的表示

将光线类比成一条射线,射线上的点由起点和方向向量决定:

光线与物体的交点

隐式几何

例:求光线与球形的交点,理解为联立光线的方程和球形的隐式方程来解。限制条件:t>0

显式几何

真正在图形学中大量运用的其实是显示曲面,更具体来说就是许许多多个三角形,因此如何判断一条光线与显示曲面的交点,其实也就是计算光线与三角形面的交点。

一种思路:光线与平面内每个三角形判断交点 慢 开销大
把问题分成:光线是否和平面有交点 交点是否在三角形内部
定义平面:

联立方程:

一步到位:MT算法

  • 用重心坐标描述三角形
  • 线性方程组 ---> 克莱姆法则

联立方程:

一步到位:MT算法

  • 用重心坐标描述三角形
  • 线性方程组 ---> 克莱姆法则

反射与折射

(这部分内容来自知乎孙小磊

  • 13
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值