检查3D网格是否从上到下填充

问题描述 投票:0回答:1

我有一个用于表示形状/网格的3D网格,该网格在python中使用类型为bool的ndarray(20,20,20)表示。网格中的每个元素代表是否存在材料。我希望能够检查给定的网格是否代表从网格顶部到底部一直连接的形状。我希望能够丢弃那些从网格顶部到底部不连续或不占用连续单元格的单元格。

稍后,我将使用trimesh将网格转换为网格。是否可以直接在python中或通过trimesh来识别以上内容?

python mesh voxel trimesh
1个回答
0
投票

[我首先编写了一个辅助函数bucket_fill_2d(),该函数将带material信息的切片作为切片,给定起始索引(i,j),则像在任何旧的绘图程序中一样,用斗式填充材料。

  1. 引入形状的空布尔数组connected
  2. True数组的底部切片为material的地方设置底部切片True
  3. 然后从上一步的每一个bucket_fill_2d() connected开始,再向上(i,j)上移。
  4. 重复(3),直到到达顶部。
  5. 检查顶部是否有connected

注意,顾名思义,trimesh仅支持triangular单元格。

© www.soinside.com 2019 - 2024. All rights reserved.