2. Creating Nodes and Trees(创建节点和树)

来源:互联网 发布:妙趣横生的算法怎么样 编辑:程序博客网 时间:2024/05/17 02:26
 

2. Creating Nodes and Trees(创建节点和树)
要开始创建节点和建立树结构,你需要检查网格中的每一个多边形。不用担心,你只需这样做一次,当然总体上的速度不是一个因素。你的目标是怎样在一个数中放置这些节点。

 

在网格中的每一个多边形都被附上一个盒子(Bounding Box),如图:

这个盒子可以描述这个多边形在任何角度的范围。只要在一个节点的3D空间中这个多边形的盒子被附上(要么完整的,要么部分的),那这个多边形就属于这个节点。所以一个多边形可以属于多个节点,因为它的范围可以跨越多个节点。

 

到你在进行对多边形分组到个节点时,要注意,无论是这个空间包含了许多大的多边形,还是许多多边形在一个大的空间,你需要将这个节点分裂成更多的节点,并再次扫描多边形列表,考虑加入新的节点。重复这个过程直到成组的多边形充足的小,并且个节点包含的多边形都足够小。

TIP: 要优化tree结构,可以删除那些不包含任何多边形的节点。删除空节点不仅可以节约内存,还可以是你快速的浏览整棵树。因为你知道,节约内存和时间是十分重要的。

 

看下图:

他演示了一些多边形,世界(根节点)被一个正方形环绕。这个正方形被分成几个小的节点,依次轮流,继续被分成更小的其他的节点。这些节点可以被分成要被使用的(包含多边形的节点)和不被使用的(不包含任何多边形的节点)。

 

因为图中的这些多边形离得很远,所以你可以你可以将根节点继续分裂成四个更小的节点(好像是一个quadtree mode)。然后验证每个节点并继续分裂较大的一个。你可以跳过空节点以便加快处理速度。最后,你就拥有了一个完美的tree结构供你使用了。
原创粉丝点击