计算机图形学 Ray Trace 学习笔记

屏幕上的一个像素,是通过各种反射、折射而共同组成的,每个反射折射的点,都会考虑光源是否有直接照射到反射折射的点上,反射与折射之间会存在能量衰减,最终汇总在屏幕的像素上。

计算是哪一个三角形被射线打中,则在三角形上扩展成一个与三角形位置平行且完全包含三角形的平面,N为平面的法线,pPre是在平面上的任意一点,若射线OD打到平面上的交点与pPre组成向量与N相乘为0(由于垂直,向量相乘为0),则表明射线OD打中平面,再判断是否打中三角形,世界中每一个在玩家视口中的三角形都会这样判断。

为了加快运算效率,提出了Bounding Volume的概念,将一个规则的集合体包裹在物体上,若射线没有打到包围盒上,那么肯定也没有打到物体上的三角面,当只移动玩家视角的时候,这整个物体的三角面就不用得到重新计算。 


KD-Tree就是先绕X轴分一个横线,然后在Y轴分一个竖线,以此往复,如果是3维,就是X,Y,Z轴依次用平面来切割,以此往复

蓝色块与射线有入射线和出射线,进行判断蓝色快内是否有物体与射线有交点。

到下一个节点去,射线在B的范围内同时也有入射线和出射线,所以判断B中是否有交点,B中分为2和C部分,先看2中是否存在射线与物体的交点 

找C块,C块又分为D部分和3,先看3,3与射线有入射点和出射点,所以判断3中是否存在物体与射线的交点,很明显是存在的

接着判断4和5,5没有入射点和出射点,所以5这一块不用做交点判断


为了防止和KD-Tree一样,一个object有多个树节点存储它的信息,所以有了Bounding Volume Hierarchy算法,只有完全框到的才能算在树节点内

每次取最长的一个框的一条轴取划分这是一个BVH算法的其中一个划分方法

每次取一个框的中位线也是BVH的一种划分方法


眼睛看到的光最终是物体自身的发射的光线,和全局光照(各个地方反射过来的光线)


反射一次的效果:

只反射两次次的效果:

反射三次的效果:

可以看出反射二次和三次效果差别已经不明显,为了性能考虑,不会将反射无限递归下去,而是反射规定次数则停止反射

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值