• 【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. 体积光线投射真正的起点是体纹理表现的像素点,终点是光线穿出体纹理的交点。但是需要从视点方向引出射线。

  • 相关阅读:
    Linux下数据库和中间件安装配置
    大数据知识合集之数据分析模型
    初入职场必备丨二进制面试问题汇总
    【线性系统理论】笔记二-状态转移矩阵+状态运动轨迹
    完整复制虚拟机原理(云计算)
    微信小程序Error: ENOENT: no such file
    【前端进阶】-TypeScript高级类型 | 交叉类型、索引签名类型、映射类型
    java知识3-----核心2-面向对象高级 续1--对象多态性
    【MATLAB教程案例41】语音信号的语谱图matlab仿真与应用分析
    从过滤器初识责任链设计模式
  • 原文地址:https://blog.csdn.net/weixin_42221907/article/details/126316650