1

这是场景:

我在 Blender 中有一个视频游戏关卡设计,需要定义物理边界。现在,我通过获取尽可能多的相邻面来完成此操作,这些面总体上形成三/四边形并提取到单独的网格中。这个单独的网格将成为它的物理墙。

我想为它写一个 Python 脚本。基本上,该脚本将为每个三边形/四边形的表面创建一个物理边界。

条件是:

  1. 网格中的每个面都必须是三角形。
  2. 如果物理墙有多个面,每个面必须具有相同的法线。
  3. 如果物理墙有多个面,每个面都必须具有整体的三边形/四边形。

因此,如果您在 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

在我开始编写这个脚本之前,现有的脚本或我想做的部分是否已经存在?有没有人看到以这种方式编写脚本有问题?

4

0 回答 0