目的
pybullet中导入vtk网格时,被要求只能是四面体网格,对文件内部格式要求更加严格,导致以前有些可用的vtk几何网格无法导入,因此须重新绘制网格并转换成vtk格式,并对文件内部格式进行调整。
工具
- gmsh: 用于绘制并导出.msh网格:
sudo apt-get install gmsh - vtk: 会被调用
pip3 install vtk - msh2vtk: 下载地址
网格转换步骤
- 打开gmsh,绘制集合体,生成网格,将网格保存为msh格式文件
- 编辑msh2vtk中的module文件:打开下载的msh2vtk代码中的module.py,将其中的所有_file.next()替换为next(_file), 因python3升级后,next方法升级为自带方法,不在文件类中;
- 将msh_convert_test.py 与 module.py 均放到msh网格文件所在的目录;
- 将msh_convert_test.py 中GMSH目录更换为gmsh安装的实际目录,查找方式:
whereis gmsh - 将msh_convert_test.py 中converter行中.msh文件所对应的名称修改正确
- 运行msh_convert_test.py,跳错后运行完成,保存的vtk文件名称与.msh文件相同,仅后缀变化
- 网格转换完成
vtk文件调整
- 原因:pybullet中vtk文件只支持四面体,然而保存时可能会保存其他的点/线/面等单元
- 文本编辑.vtk文件,在 CELLS 一大列,删除其他所有不是以4开头的行,留下的即对四面体顶点的定义,同时更新四面体的个数声明,为 CELLS n n*5
- CELL_TYPES一列,删除所有不是10的行,留下的10就是CELL对应的TYPE,个数与四面体个数相等,同样修改类型的数量声明,为 CELL_TYPES n
- 完成
|