由于最新的 meshlab 已经没有了 Meshlabserver.exe, 所以不能用这种方式进行批量处理了。
可以用PyMeshLab (PyMeshLab — PyMeshLab documentation)
用命令
pip3 install pymeshlab
安装。
批量处理代码如下:
import numpy as np
import pymeshlab as ml
mesh_obj= 'abc'
index_num = np.linspace(0, 5, 6, dtype=int)
ms = ml.MeshSet()
ms.load_filter_script('my_script.mlx')
for x in index_num:
ms.load_new_mesh(f"{mesh_obj}{x}.obj")
ms.apply_filter_script()
ms.save_current_mesh(f"{mesh_obj}s{x}.obj")
其中my_script.mlx是脚本文件,参考使用meshlabserver批量处理三维模型(附代码)_DivinerShi的博客-CSDN博客_meshlab server
新版的meshlab还加入了将处理操作的功能变为PyMeshLab的函数并存入剪切板的功能。比如,重新计算顶点法向,如下图
点击这个按钮,将这句代码复制出来,得到
ms.compute_normal_per_vertex(weightmode = 3)
其中,括号中是函数的参数,也就是上图中的Weighting Mode对应的选择。
而整体的批量处理代码变为:
import numpy as np
import pymeshlab as ml
mesh_obj= 'abc'
index_num = np.linspace(0, 5, 6, dtype=int)
ms = ml.MeshSet()
for x in index_num:
ms.load_new_mesh(f"{mesh_obj}{x}.obj")
ms.compute_normal_per_vertex(weightmode = 3)
ms.save_current_mesh(f"{mesh_obj}s{x}.obj")