这是场景:
我在 Blender 中有一个视频游戏关卡设计,需要定义物理边界。现在,我通过获取尽可能多的相邻面来完成此操作,这些面总体上形成三/四边形并提取到单独的网格中。这个单独的网格将成为它的物理墙。
我想为它写一个 Python 脚本。基本上,该脚本将为每个三边形/四边形的表面创建一个物理边界。
条件是:
- 网格中的每个面都必须是三角形。
- 如果物理墙有多个面,每个面必须具有相同的法线。
- 如果物理墙有多个面,每个面都必须具有整体的三边形/四边形。
因此,如果您在 Blender 中获取一个立方体并多次细分面,但实际上并未移动任何顶点,则脚本将生成原始立方体,但面位于单独的网格中。
我一直在尝试为此提出一种算法,而我能想到的最好的方法是:
for each unprocessed face starting from -axii to +axii (distance from origin):
select face
while selected faces have adjacent faces with the same normal:
select adjacent faces with the same normal
traverse outermost edges on all faces starting from -axii
while more than 4 edges with different directions are found
deselect outermost-face with the greatest +axii (distance from origin)
traverse outermost edges on all faces starting from -axii
create a physics wall with the 3 or 4 outermost verticies
mark all selected faces as processed
deselect all faces
在我开始编写这个脚本之前,现有的脚本或我想做的部分是否已经存在?有没有人看到以这种方式编写脚本有问题?