在 python 中使用 meshlab 函数

Posted

技术标签:

【中文标题】在 python 中使用 meshlab 函数【英文标题】:Using meshlab function with python 【发布时间】:2019-06-06 04:18:58 【问题描述】:

我是 3D 新手,我有一个点云,我想使用 python 库形成一个网格。但我可以使用 meshlab 函数,这些函数是“过滤器 --> 点集 --> 计算点集的法线”和“过滤器 --> 重新划分网格、简化和重建 --> 表面重建 ::Poission”

是否有任何方法可以使用 python 来实现上述 meshlab 功能使其自动化。

谢谢

【问题讨论】:

【参考方案1】:

您可以对Meshlab附带的meshlabserver进行系统调用(它在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

args 可以是:

-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.

注意事项: 可以加载多个网格并按顺序列出 很重要,因为 使用网格作为参数的过滤器根据 命令。 输出网格的格式由使用的扩展名猜测。 脚本是可选的,必须是MeshLab保存的xml格式。

首先,使用 Meshlab 加载网格,运行您要运行的过滤器,然后转到 filters &gt;&gt; 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>

【讨论】:

以上是关于在 python 中使用 meshlab 函数的主要内容,如果未能解决你的问题,请参考以下文章

通过 .ply 格式将 3D 点导出到 Blender 会创建一个空对象,而它在 MeshLab 中工作

使用局部轴将 collada 导入到 meshlab

在meshlab中将顶点颜色转换为UV纹理

使用 MeshLab 结果将 .wrl (VRML) 转换为 .dae (COLLADA) 缺少颜色

meshlab v1.3.4官方版 附使用教程

Meshlab在使用泊松曲面重建时会产生怪异的气泡