光线追踪RayTracing,基本原理,判断物体与光线相交

光线的三点假设:

  1. 光线按直线传播
  2. 光线之间不会发生碰撞
  3. 光线会经过一系列折射反射进入摄像机
    可以从摄像机发出光线,推出可逆的光路
    在这里插入图片描述
    上图中,透明球在与相机直连的线条处,需要将折射和反射的着色点结果相加,如果有光源直射,需要将光源在该点的着色结果也相加
    在这里插入图片描述
    相机直射出的第一条光线为primary Ray,之后做处理的均被称为secondaryRay,与光源的连线被称为shadowRay
  • 光线定义
    在这里插入图片描述
    对于球表面求光线交点
    在这里插入图片描述
    之后解得t的值:
    在这里插入图片描述
    在这里插入图片描述
    t:首先是正数
    在可以分多种情况讨论,相离相交相切
  • 总过程可总结为:
    在这里插入图片描述
  • 关于光线和物体求交
    如果光源在物体内,则与物体交点一定是奇数个,否则一定为偶数个
  • 光线和物体求交
  • 与三角形求交
    可以首先将这个问题转化为光线和平面求交,再判断交点是否在三角形内
  • 如何定义一个平面?
    记录该平面上一个点p,和该平面的法线,即可定义一个平面
    在这里插入图片描述
    上图中,N为法线,p’为平面上的一个点,平面内任意一个点p可以满足该式子
    带入光线射入的公式可得出t的值,从而可得光线与该平面的焦点
    在这里插入图片描述
    最后根据重心坐标的知识得出该点是否在三角形内。
  • 另一种方法Moller Trumbore算法
    解这个式子主要通过矩阵形式解
    在这里插入图片描述
  • AABB包围盒(包围体积)
    Axis-Aligned Bounding Box轴对齐包围盒
    如果针对物体上每一个三角形都判断是否会被光线照射到,那么带来的消耗将会非常大,所以引入AABB包围盒机制来对判断光线照射这个过程进行加速,如果光线碰不到包围盒的话,就不可能碰到物体上任何一个三角形
    在这里插入图片描述
  • 光线和包围盒相交
    在这里插入图片描述
    上图中,找到光线经过x0,x1平面的时间,找到光线经过y0,y1的时间,通过交集的性质求得tmin和tmax,如果最后的结果是tmax > tmin,那么说明光线穿过了包围盒
    那么对于3D包围盒求tmin和tmax:
    在这里插入图片描述
    如果光线进入时间为负,离开时间为正,则说明光源在包围盒内
    那么有:
    在这里插入图片描述
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

KamikazePilot

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

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

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

打赏作者

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

抵扣说明:

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

余额充值