【TA-霜狼_may-《百人计划》】图形5.2 光线追踪、路径追踪、光线投射、光线步进介绍

5.2.1 光线追踪

Ray Tracing 光线追踪,一种框架与光栅化渲染并列

光栅化渲染:将一个场景的渲染任务按照以下层次拆解:物体=》三角面=》像素。这种拆解方式会导致全局信息丢失,因此全局效果的精确实现上存在瓶颈,比如软阴影、间接光照等。

光线追踪:从相机出发,对每个像素点,向场景投影光线,直到光线与场景中第一个物体相交,在交点处根据物体性质,光源属性和光照模型等计算这个交点的颜色。

光线追踪将一个场景的渲染任务按照光线拆解。这些光线之间也是并行的。光线追踪可以获取一个场景的全局信息。

Arthur Appel公认的最初模型:
在这里插入图片描述
Turner Whitted三种光线:反射光线、折射光线和阴影光线
在这里插入图片描述
在这里插入图片描述
可以看到上述方法都需要计算光线与物体的交点:

  1. 射线方程与曲面方程联立,解方程组;
  2. 计算射线与组成物体的三角面的交点:
  • 先计算射线与三角面所在平面的交点,再判断交点是否在三角面内
  • 或者用Moller Trumbore算法直接计算射线与三角形的交点
    快速光线求交:用一个包围盒(通常是长方体)把物体包围起来,保证物体完全在包围盒内。如果光线没有与包围盒相交,那么光线肯定不可能与物体相交。通常使用一种轴对奇包围盒(AABB),即包围盒的棱是和坐标轴是平行的。
    空间划分:八叉树、KD树、BSP树

5.2.2 路径追踪

Path Tracing 路径追踪
在光线遇到表面需要反射时,以表面法线为中心做一个半球,向半球上的若干方向引出一束射线,再递归计算这束光线中,每条光线对该表面点的光照贡献。
Kajiya渲染方程:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
最终观察到的颜色由两个部分组成:自发光和反射光部分。
问题1:定积分的求解
解决方法:蒙特卡洛积分法

问题2:需要采样的光线太多,指数爆炸
解决方法:朝一个像素块发射多条光线,每条光线只反射一次。
在这里插入图片描述
在这里插入图片描述
问题3:光线迭代中止条件
解决方法:每次迭代产生随机数,根据随机数决定是否继续迭代

问题4:当光源面积较小时,从相机发射的光线到达光源的概率变小,很多光线无法到达光源被浪费,形成大量噪点。
解决方法:直接在光源上采样。
在这里插入图片描述

5.2.3 体积光线投射:(与前述不同)

Volume Ray Casting 体积光线投射,一种体绘制(Volume Rendering)技术。
从体纹理表面的像素开始,沿固定方向(通常是视线方向),发射一条光线,光线穿越整个体纹理(或图像序列),并在整个过程中,对体纹理进行CIA杨获取颜色信息,同时按照一定规则将颜色值进行混合累加,直至光线穿越整个体纹理,最后得到的颜色值就是渲染图像的颜色。
在这里插入图片描述
注意此处光线投射与Arthur Appel提出的光线投射不同:

  • Arthur Appel的光线投射方法中,光线止步于表面;体积光线投射方法中,当光线碰到体纹理表面后继续前进,在体纹理内部进行采样,知道光线穿出体纹理。
  • Arthur Appel光线投射方法需要计算光线与表面的交点;体积光线投射方法不需要计算交点,因为交点是已经确定的。

5.2.4 光线步进

Ray Marching光线步进
一种通用的方法,该方法描述的是这样一个过程:光线从起点出发,一步步前进,每到达一步,光线就停下来做一次计算,然后继续前进,直到逼近终点。
在不同的应用场景中光线步进的起点、终点和方向具体指代的内容不同。
在这里插入图片描述

总结

  1. 递归光线追踪方法中(Whitted),视点向每个像素投射一条光线,路径追踪方法中,视点向每个像素投射多条光线。他们的共同点都是把场景的渲染任务以光线形式拆解,并涉及到光线的递归。

  2. 递归光线追踪和路径追踪通常需要对视线和表面求交,得到交点后,光线继续产生反射光线或折射光线;体积光线不需要求交,一般情况已知。

  3. 光线追踪、路径追踪和光线步进都涉及到光线与表面求交。光线步进指代一种方法类型,在不同算法中有不同应用;光线追踪和路径追踪有多种求交点的方式,交点处的性质会用于后续的迭代计算,更关注求交点的结果。理论上也可以将光线步进运用于光线追踪和路径追踪。

  4. 体积光线投射中也包含光线步进的思想。

  5. 光线追踪和路径追踪的起点都是视点,终点都是视线与物体表面的交点;

  6. 体积光线投射真正的起点是体纹理表现的像素点,终点是光线穿出体纹理的交点。但是需要从视点方向引出射线。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zczplus

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值