Использование функции meshlab с python
Я новичок в 3D, у меня есть облако точек для этого, я хочу сформировать сетку, используя библиотеки Python. Но я могу использовать функции meshlab: "Фильтры -> Точка -> вычислить нормали для наборов точек" и "Фильтры -> Пересечение, Упрощения и реконструкция -> Реконструкция поверхности::Poission"
Есть ли какие-либо методы для выполнения вышеупомянутых функций meshlab с использованием python для автоматизации?
Спасибо
1 ответ
Вы можете сделать системный вызов meshlabserver, который поставляется с Meshlab (он находится в каталоге установки Meshlab).
Если вы запустите meshlabserver.exe без аргументов, он покажет следующую справочную страницу
Использование: meshlabserver [logargs] [args]
где logargs могут быть:
-d filename dump on a text file a list of all the filtering functions -l filename log of the filters is ouput on a file
где аргументы могут быть:
-p filename meshlab project (.mlp) to be loaded -w filename [-v] output meshlab project (.mlp) to be saved. If -v flag is specified a 3D model meshfile.ext contained in the input project will be overwritten, otherwise it will be saved in the same directory of input mesh as a new file called meshfile_out.ext. All the mesh attributes will be exported in the saved files -i filename mesh that has to be loaded -o filename [-m <opt>] the name of the file where to write the current mesh of the MeshLab document. If -m is specified the specified mesh attributes will be saved in the output file. the param <opt> can be a space separated list of the following attributes: vc -> vertex colors, vf -> vertex flags, vq -> vertex quality, vn-> vertex normals, vt -> vertex texture coords, fc -> face colors, ff -> face flags, fq -> face quality, fn-> face normals, wc -> wedge colors, wn-> wedge normals, wt -> wedge texture coords -s filename the script to be applied
Примеры:
'meshlabserver -i input.obj -o output.ply -m vc fq wn -s meshclean.mlx' the script contained in file 'meshclean.mlx' will be applied to the mesh contained into 'input.obj'. The vertex coordinates and the per-vertex-color, the per-face-quality and the per-wedge-normal attributes will be saved into the output.ply file 'meshlabserver -i input0.obj -i input1.ply -o outproj.mlp -v -s meshclean.mlx' the script file meshclean.mlx will be applied to the document composed by input0.obj and input1.ply meshes. The mesh input1.ply will become the current mesh of the document (e.g. the mesh to which the filters operating on a single model will be applied). A new output project outproj.mlp file will be generated (containing references to the input0.obj an input1.ply). The files input0.obj and input1.ply will be overwritten. 'meshlabserver -l logfile.txt -p proj.mlp -i input.obj -w outproj.mlp -s meshclean.mlx' the mesh file input.obj will be added to the meshes referred by the loaded meshlab project file proj.mlp. The mesh input.obj will become the current mesh of the document, the script file meshclean.mlx will be applied to the meshes contained into the resulting document. the project file outproj.mlp will be generated A 3D model meshfile.ext contained in the input project proj.mlp will be saved in a new file called meshfile_out.ext (if you want to overwrite the original files use the -v flag after the outproject filename) all the attributes of the meshes will be saved into the output files; the log info will be saved into the file logfile.txt.
Примечания: может быть загружено несколько сеток, и порядок их перечисления имеет значение, потому что фильтры, которые используют сетки в качестве параметров, выбирают сетку на основе порядка. Формат выходного меша определяется по используемому расширению. Сценарий не является обязательным и должен быть в формате xml, сохраненном MeshLab.
Сначала загрузите меш с помощью Meshlab, запустите фильтры, которые вы хотите запустить, затем перейдите к filters >> show current filter script
и сохраните скрипт где-нибудь, чтобы вы могли вызвать его с помощью meshlabserver.
Один совет: если вы загружаете файлы.stl, вы должны добавить следующее в качестве самого первого фильтра:
<filter name="Merge Close Vertices">
<Param type="RichAbsPerc" name="Threshold" description="Merging distance" value="0" tooltip="All the vertices that closer than this threshold are merged together. Use very small values, default values is 1/10000 of bounding box diagonal. " min="0" max="0"/>
</filter>