Games101 作业6 提高内容(SAH算法)

本文只应用于个人学习总结。

目录

一、模型分析

1、按空间平均分配(NAIVE)

2、按物体平均分配

二、SAH

1、原理分析

2、代码实现


作业7​​​​​​中的BVHAccel模块中已经分析了BVH树的构建过程,其仅仅采用了简单粗暴的NAIVE方式(按最长轴空间等分)去对一个节点构建左右子树,这种方法在构建时是很快的,但在渲染的过程中就体现了其缺点。这里参考了这篇文章,对其进行了分析,并引出了这篇文章所提及的基于表面积的启发式评估划分方法(Surface Area Heuristic,SAH)。

一、模型分析

1、按空间平均分配(NAIVE)

 在NAIVE的建树情况下会出现如图这种情况,那么就会存在这样一种情况:如果光线与右边包围盒相交,在下一次迭代的过程中会计算3个物体的划分;而如果光线与左边包围盒相交,则只需要直接返回一个物体即可。

那么问题就出现了,我们会发现所构建的BVH树是不平衡的。在学习搜索树的过程中,我们了解到要使得搜索时间达到最优解,就需要构建的二叉搜索树是平衡二叉树。同样的,BVH树需要最快速的搜索到与光线相交的包围盒,如何使BVH树达到平衡就变成了解决问题的关键。

2、按物体平均分配

要使BVH树达到平衡,最简单的方法就是,将物体按数量进行等分。这样确实可以获得所期望的平衡树,但在执行过程中仍会出现一些问题。

 如图所示,我们将物体按数量划分成了两个包围盒。但由于是空间划分,两个包围盒会产生重叠的部分,那么问题便产生了,如果一个光线相交于中间物体的P点,那么在查询物体交点的时候会经历了怎样的一个过程?P点在左右包围盒重叠的部分,所以两个包围盒都会与光线相交,整个过程在最坏情况下查询了所有的物体才能得到点P,这个查询过程花费的时间甚至大过了NAIVE所花费的时间,所以这种划分方式也不理想。

二、SAH

分析了以上两种简易划分方式,我们了解到,不论是按空间平均划分还是按数量平均划分,如果光线与两包围盒重叠位置相交,则都需要

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值