根据三角形表面网格四面体化,是进行很多后处理的关键步骤。目前很多python库都开发了相关功能,比如基于tetgen的一些库,基于gmsh的一些库。trimesh就是基于gmsh-sdk的。
import trimesh
v = []
f = []
mesh = trimesh.Trimesh(vertices=v, faces=f)
from trimesh.interfaces import gmsh
msh = gmsh.to_volume(mesh,"bdf_name.msh")#
import meshio
self.mesh = meshio.read("bdf_name.msh")
v和f分别是三角形网格的顶点和索引数组。
trimesh转四面体网格依赖gmsh,因此要先安装gmsh。
gmsh生成的四面体网格为msh数据,trimesh不能直接读取。可以通过导出为一个.msh文件,再通过meshio读取。
导出的,msh文件包括了四面体所有顶点和四面体的索引数据,并不包含四面体所有的边数据。
此外,四面体网格化还会在三角形网格的内部新增点。
这种方法算是最简单的一种四面体化的方法,生成的网格基本上是依据提供的三角形网格(但会新增一些点)。
对网格质量要求不高的可以使用。