图形学 Lecture7 光线追踪

关键:Whitted-Style Ray Tracing
光线追踪和光栅化是两个不同的成像方式。

引入光线追踪

在于光栅化的问题:

  1. 光栅化不能很好的表示全局的效果。
  2. 光栅化做阴影很困难
  3. Glossy reflection问题:光线多次反射
  4. 间接光照:光线多次反射

光栅化:实时的
光线追踪:速度慢,但是精确

关于光线的假设:

  1. 光线是直线
  2. 光线之间不会发生碰撞
  3. 光线从光源最终到达眼睛(也可以认为眼睛可以发出感知光线可以到达光源,即光路的可逆性)

怎么做光线追踪

一般做法

光线投射(Ray Casting)
在这里插入图片描述
过程(光线投射->怎样生成不同光线):
》》》从照相机出发 穿过平面的每一个像素到达物体上的某个点,此点再与光源连线,若不在阴影中,则光源到此点,再到照相机,为一条有效光路(即可以计算能量,算出颜色,即所谓着色)

例子:
在这里插入图片描述
怎么投射光线:

  1. 一根光线可以打到好多个物体上,但我们只考虑光线和场景中物体最近的一个交点。
    (这一点就解决了深度测试的问题)
  2. 然后这个点往光源连一条线,看是否在阴影中。
    在这里插入图片描述
  3. 对于这一点,有了法线,入射方向,出设方向,就可以着色,着色后就可以写回image中对应像素的值。

Whitted-Style Ray Tracing

上述的方法,仍然是只考虑光线弹射一次。因此,引入Whitted-Style Ray Tracing(是一种递归的算法)

做法:

  1. 光线投射:(考虑反射 折射)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  2. 着色:计算每个弹射点的着色,然后相加。
1. 如何求交点

如何求光线和物体表面的交点:
光线定义:
光线:一条射线,有起点o和方向d
在这里插入图片描述
沿着光线的每一个点都可以用r(t)来表示 (t表示时间)

(1) . 如何求光线和球的交点:

(即点即在光线上 也在球上)
在这里插入图片描述
求t ?(t是大于等于0的)
在这里插入图片描述

(2) . 推广到光线和一般隐式表面的交点?

隐式表面都有各自的表达式,直接带入方程求 t 即可。交点即为o+t d
在这里插入图片描述

(3) . 光线和显式表面的交点?

即为光线和三角形求交。
属性:
对于一个封闭的平面来说,若光线与其有奇数个交点,则光源在物体内;若有偶数个交点,则光源在物体外。
如何做光线和三角形求交?
对于每个三角形都判断是否与三角形有交点,并找出t最小的这个交点。
光线和三角形求交延伸为两个问题:

  1. 光线与三角形所在平面是否有交点。
  2. 此交点是否在三角形平面内。(叉积判断)
    解决第一个问题 光线和平面的交?
    平面的方程如何定义:
    由一个法线和一个点决定一个平面。
    在这里插入图片描述
    如上图:一个平面即为所有p点的集合,此p点构成向量与法线垂直。
    求出 t 并保证 t 大于等于0
    在这里插入图片描述
    如何判断上面求出的点是否在三角形内:
    用叉乘。

如何简化:即直接算出三角形和光线的交点。
用Moller Trumbore算法 (MT算法):
交点一定在射线上 也一定在三角形内,则可用重心坐标来描述。
在这里插入图片描述
光线和显式表面求交如何加速:
之前说,可以对每个三角形都求出交点,然后找t最近的交点,但是太慢了。复杂度是像素个数*三角形个数,甚至还有光线多次弹射增加的次数。

包围盒(Bounding Volumes)

如果光线与包围盒没有交点 那与物体也不可能有交点。
二维:
在这里插入图片描述
三维:
长方体:三个对面形成的交集。
常用:Axis-Aligned Bounding Box (AABB) (轴对⻬包围盒)

那光线如何与包围盒求交呢?
二维下:(两个对面)
在这里插入图片描述
对于竖直的两条线 对于水平的两条线
然后求两条线段的交集

三维情况下:(三个对面)
对于三个对面,光线进入了三个对面,则光线进入盒子;(进入时间找 最大值)
光线从任何一个对面出来了,则光线离开盒子。(离开时间找 最小值)
在这里插入图片描述
if tenter<texit(进入时间 < 离开时间) 则有交点;反之,无交点。
在这里插入图片描述

  1. 离开时间小于0 则盒子在光线背后。
  2. 如果离开时间是正的 进入盒子时间是负的。
    则光线起点就在盒子里。 则光线与盒子一定有交点。
    总结: 光线和AABB有交点,当且仅当 进入时间小于离开时间 且 离开时间大于等于0。

为什么要用横平竖直的盒子,即AABB的包围盒。

  1. 光线和与坐标轴平行的面求交点好求。
    在这里插入图片描述
    上面是随便一个平面,下面是与坐标轴平行的平面。
    假设下图的两个对面是与 yz平面平行的一个平面,即该平面与x轴垂直。求到达平面的时间t,只需用op距离除以do的距离。
    在这里插入图片描述
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值