|
|
@@ -2295,9 +2295,33 @@ $t_{quit} = max(t_{x_{max}}, t_{y_{max}}, t_{z_{max}})$
|
|
|
10. C节点下的右节点3 判断是否与光线相交 发现相交,与3区域所有物体求交
|
|
|
11. 结束
|
|
|
|
|
|
-按照上图,虽然成功进行了空间划分,但是也暴露的一些问题
|
|
|
+需要注意的点是,上图中的空间划分是 **横一刀**,**竖一刀** 循环来的,保证空间均匀划分,如果所有包围盒都是 横着切/竖着切 那么就从树形结构退化成链表的表现效果了
|
|
|
|
|
|
-1. 有些物体横框了多个包围盒,也就是说每个包围盒叶子节点都要存一份该物体,但其实最好一个物体就存在一个叶子节点中
|
|
|
+按照上图,虽然成功进行了空间划分,但是也**暴露一些问题**
|
|
|
+
|
|
|
+1. 有些物体横跨了多个包围盒,也就是说每个包围盒叶子节点都要存一份该物体,但其实最好一个物体就存在一个叶子节点中
|
|
|
2. 如何计算物体与包围盒相交,这个计算其实比较复杂
|
|
|
|
|
|
+#### 物体划分 (Object Partition) & Bounding Volume Hierarchy(BVH)
|
|
|
+
|
|
|
+**常用**
|
|
|
+
|
|
|
+将包围盒中所有物体划分成两个部分
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+如上图所示, 将原本一个大的包围盒中的所有物体划分成两部分, 并且将两部分重新定义包围盒, 之后再次重复包围盒划分操作, 直到划分后的包围盒达到某种要求
|
|
|
+
|
|
|
+这样子可以保证一个物体只会在记录一个包围盒中(**包围盒可以重叠**),并且包围盒的范围更好计算(取所有物体点坐标的最小x、最小y、最大x、最大y就是包围盒的范围)
|
|
|
+
|
|
|
+但是 BVH 引入了一个新问题那就是 **包围盒可以相交**,那么如何进行空间划分能够让包围盒重叠尽可能少?
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
# 动画模拟、仿真
|