我有一组构成游戏关卡的多面体,我想分区。基本上,我需要一种通用的方法来划分玩家可以进入标记区域的区域。这样做有什么算法或既定的程序吗?
假设没有任何标准,我会很感激如何解决这个问题,因为我对这个领域并不熟悉。我已经在CGAL中看到了一些我喜欢的多边形分区算法,所以我的直觉是从地板生成多边形然后使用这些算法。
这是我的计划:
找到地面多面体的所有朝上的面:从已知地面多面体上的初始点开始,其中玩家可以并且以足够平滑的角度(即不是墙壁)穿过相交的多面体。在天空中选取一个点,并遍历地面多面体的所有面,其中该点位于正面(我有面部的方向数据)。
找到平面以沿z轴分隔重叠的楼层区域。我有一些关于如何解决这个问题的想法,但我怀疑有一种算法可以做到这一点。
使用现在划分的楼层的前两个坐标来制作多边形并在每个坐标上运行分区算法。
示例:
假设我有一个办公楼的3D形状数据,有两层楼和连接楼层的楼梯。一切都是3D的,因此地板由多面体和墙壁和楼梯组成。我想分隔每层楼的向上面,以便规划出隔间位置。我真的不在乎一楼的隔间与另一层的隔间相关。我没有将一个3D空间划分为区域,而是将其分解为两个2D空间以进行单独分区。
注意:这个例子并不完美,因为在这个例子中我并不关心分区楼梯,但在我的游戏世界中我做到了。所以我不能只是拆除楼梯并将我的两个分开的地板,但我可以,例如,切片并用飞机将地板分开。