简述
如题,我在自己尝试自动化调用MeshLab时,通过网络搜索,发现了两种手段:
- 使用批量化工具 meshlabserver;
- 使用官方Python库 pymeshlab.
这两种方法按时间顺序先后是官方提供的批量化调用MeshLab程序的方式,其中,meshlabserver 自从在官方发布的MeshLab 2020.12版本中被删除,之后再也没有被提供过。因此要使用的话必须安装较低的版本的MeshLab,我使用的版本是 MeshLab 2020.09。
MeshLab 官方各版本发布仓库: 点此跳转
两种方法各自的优势和缺点
- meshlabserver
- 优势:支持命令行调用或者cmd脚本,同时理论上支持原MeshLab软件支持的所有功能.
- 缺点:每种功能都必须导入对应的,且较新版本meshlab不支持。
- PyMeshLab
- 优势:打包成python库方便使用python脚本进行批量且较复杂的操作,官方文档比较全面。
- 缺点:我一开始有点没弄清楚文件类型,比如nvm文件应该作为project导入,但我很长时间都没有发现这点。
1. meshlabserver
- 文件位置: 通常与meshlab.exe同级,同样是executable
调用方法(二选一):
- 将meshlabserver.exe加入环境变量
- 直接用文件路径
📘 以下假设已将meshlabserver.exe加入环境变量:
示例
完成已导出的脚本功能(批处理脚本如何导出参见此篇CSDN博客)
1
$ meshlabserver -p path/to/meshlab/project -i mesh/file/to/be/loaded -o output/filename [optional args such as vc(vertex color)] -s path/to/script-o 的参数有很多,下面给出常用的:
1
2
3
4vc -> vertex colors,
fc -> face colors,
fn-> face normals,
sa -> save in ascii formatexe的帮助功能中给出了完整的调用方法,可作为参考
1
$ meshlabserver --help
📘 如果直接使用文件路径,把上述指令中的 meshlabserver 改成 PATH/TO/YOUR/MESHLABSERVER 即可。
2. pymeshlab
官方github仓库:点此进入
详细的技术文档可见PyMeshLab官方网站:点此进入
安装方法
1
$ pip3 pymeshlab使用示例
1
2
3
4
5
6
7
8
9import pymeshlab as ml
ms = ml.MeshSet()
ms.load_new_raster('path_to_your_raster') #加载纹理文件
ms.load_new_mesh('path_to_your_mesh') #加载网格
ms.load_filter_script('path_to_your_mlx_script') #加载脚本文件
ms.apply_filter_script() #执行脚本文件
# 也可以直接执行封装好的方法如generate_convex_hull()
ms.save_current_mesh('output_filename') #导出
碎碎念
原本是为了自动化某项目中纹理映射步骤,没想到直到翻阅官方文档、查看meshlabserver的help信息才发现nvm文件应该作为工程导入(╯°口°)╯(┴—┴,不过也算学到一点教训咯。最后有请樱小姐帮我表达当时的心情😇: