考虑 3D 中的闭合表面网格 (
mesh1
),由两个合并块组成,如图所示。
网格以 STL 文件形式给出,并细分为不同的补丁。每个补丁都作为单独的主体保存在 STL 文件中。
此外,我有一个由 STL 文件给出的弯曲 2D 表面网格 (
mesh2
),它与闭合表面网格完全相交,因此将其分为上下两部分,如下图所示:
如何在给定 2D 曲面上对闭合曲面进行切片,同时保留有关面片的信息?
对于网格操作,我将 Python 中的 trimesh 包与 Blender API 结合使用,但我愿意接受其他包/程序的建议。到目前为止我尝试的是以下过程:
mesh1
和 mesh2
mesh2
放大1%,保证与mesh1
完全相交并保存mesh1
作为工具,将修剪网格布尔差异修改器应用于 mesh2
使用此方法,我得到了修剪网格错误,即
mesh1
和 mesh2
没有体积。我尝试的下一个方法如下:
3. 使用 Blender 固化修改器将 mesh2
稍微加厚。
4. 使用 mesh1
合并 trimesh.grouping.merge_vertices(mesh1)
的顶点。这里的问题是,trimesh 不认为 mesh1
是无懈可击的,因为不同面片之间的面没有连接。
5. 使用 mesh1
作为工具,将修剪网格布尔差异修改器应用于 mesh2
。
在此方法的第 4 步中,我丢失了有关补丁从属关系的信息。
总结:有没有一种方法可以在弯曲的 2D 表面上分割更大的物体,同时保留有关补丁的信息?
要在 Python 中对 2D 表面上的 3D 体积进行切片,请使用 NumPy 或 SciPy 等库。首先,定义 3D 体积和 2D 表面方程。使用 scipy.图像来插值体积数据并应用表面方程来提取交集以获得切片。