【问题标题】:Meshlabserver: How to convert STL to PLY and unify vertices?Meshlabserver:如何将 STL 转换为 PLY 并统一顶点?
【发布时间】:2020-02-17 19:17:12
【问题描述】:

我有几个.stl 文件,我想通过从命令行调用meshlabserver 将它们转换为.ply。当我走直路时

> meshlabserver -i cube-binary.stl -o cube.ply

(其中 cube.stl 是下面给出的带有 12 个面的示例文件),生成的网格有 12 个面和 36 个顶点。这意味着没有发生重复顶点的统一,尽管这正是我想使用.ply 而不是.stl 的原因。

现在,我认为这是不可能的,出于同样的原因,不可能在 Meshlab GUI 中将顶点统一设为默认值(我前段时间 asked 谈到了它,尽管后来发现这样的问题 @987654322 @)。但也许有人知道一些技巧?在-om 之后浏览可能的过滤器,我没有找到解决方案。

在 Open SU​​SE 上使用 Meshlab 2016 和在 Ubuntu 上使用 Meshlab v1.3.2_64bit 测试了该行为。

示例文件

(同样由 Meshlab 创建)

solid vcg
  facet normal  0.000000e+00  0.000000e+00  1.000000e+00
    outer loop
      vertex   5.000000e-01  5.000000e-01  5.000000e-01
      vertex  -5.000000e-01  5.000000e-01  5.000000e-01
      vertex   5.000000e-01 -5.000000e-01  5.000000e-01
    endloop
  endfacet
  facet normal  0.000000e+00  0.000000e+00  1.000000e+00
    outer loop
      vertex  -5.000000e-01 -5.000000e-01  5.000000e-01
      vertex   5.000000e-01 -5.000000e-01  5.000000e-01
      vertex  -5.000000e-01  5.000000e-01  5.000000e-01
    endloop
  endfacet
  facet normal  1.000000e+00  0.000000e+00  0.000000e+00
    outer loop
      vertex   5.000000e-01  5.000000e-01  5.000000e-01
      vertex   5.000000e-01 -5.000000e-01  5.000000e-01
      vertex   5.000000e-01  5.000000e-01 -5.000000e-01
    endloop
  endfacet
  facet normal  1.000000e+00  0.000000e+00  0.000000e+00
    outer loop
      vertex   5.000000e-01 -5.000000e-01 -5.000000e-01
      vertex   5.000000e-01  5.000000e-01 -5.000000e-01
      vertex   5.000000e-01 -5.000000e-01  5.000000e-01
    endloop
  endfacet
  facet normal  0.000000e+00  1.000000e+00  0.000000e+00
    outer loop
      vertex   5.000000e-01  5.000000e-01  5.000000e-01
      vertex   5.000000e-01  5.000000e-01 -5.000000e-01
      vertex  -5.000000e-01  5.000000e-01  5.000000e-01
    endloop
  endfacet
  facet normal  0.000000e+00  1.000000e+00  0.000000e+00
    outer loop
      vertex  -5.000000e-01  5.000000e-01 -5.000000e-01
      vertex  -5.000000e-01  5.000000e-01  5.000000e-01
      vertex   5.000000e-01  5.000000e-01 -5.000000e-01
    endloop
  endfacet
  facet normal  0.000000e+00  0.000000e+00 -1.000000e+00
    outer loop
      vertex  -5.000000e-01 -5.000000e-01 -5.000000e-01
      vertex  -5.000000e-01  5.000000e-01 -5.000000e-01
      vertex   5.000000e-01 -5.000000e-01 -5.000000e-01
    endloop
  endfacet
  facet normal -0.000000e+00 -0.000000e+00 -1.000000e+00
    outer loop
      vertex   5.000000e-01  5.000000e-01 -5.000000e-01
      vertex   5.000000e-01 -5.000000e-01 -5.000000e-01
      vertex  -5.000000e-01  5.000000e-01 -5.000000e-01
    endloop
  endfacet
  facet normal  0.000000e+00 -1.000000e+00  0.000000e+00
    outer loop
      vertex  -5.000000e-01 -5.000000e-01 -5.000000e-01
      vertex   5.000000e-01 -5.000000e-01 -5.000000e-01
      vertex  -5.000000e-01 -5.000000e-01  5.000000e-01
    endloop
  endfacet
  facet normal -0.000000e+00 -1.000000e+00 -0.000000e+00
    outer loop
      vertex   5.000000e-01 -5.000000e-01  5.000000e-01
      vertex  -5.000000e-01 -5.000000e-01  5.000000e-01
      vertex   5.000000e-01 -5.000000e-01 -5.000000e-01
    endloop
  endfacet
  facet normal -1.000000e+00  0.000000e+00  0.000000e+00
    outer loop
      vertex  -5.000000e-01 -5.000000e-01 -5.000000e-01
      vertex  -5.000000e-01 -5.000000e-01  5.000000e-01
      vertex  -5.000000e-01  5.000000e-01 -5.000000e-01
    endloop
  endfacet
  facet normal -1.000000e+00 -0.000000e+00 -0.000000e+00
    outer loop
      vertex  -5.000000e-01  5.000000e-01  5.000000e-01
      vertex  -5.000000e-01  5.000000e-01 -5.000000e-01
      vertex  -5.000000e-01 -5.000000e-01  5.000000e-01
    endloop
  endfacet
endsolid vcg

【问题讨论】:

    标签: mesh meshlab stl-format


    【解决方案1】:

    最简单的方法是使用应用Remove Duplicate Vertices 过滤器的脚本。

    尝试将其保存到名为 cleanVertex.mlx 的文件中

    <!DOCTYPE FilterScript>
    <FilterScript>
     <filter name="Remove Duplicate Vertices"/>
     <filter name="Remove Unreferenced Vertices"/>
    </FilterScript>
    
    

    然后使用命令:

    > meshlabserver -i cube-binary.stl -o cube.ply -s cleanVertex.mlx
    

    【讨论】:

    • 太好了,谢谢。我对扩展感到惊讶(我本来希望 .xml 而不是 .mlx)。
    猜你喜欢
    • 2018-10-11
    • 2019-11-19
    • 1970-01-01
    • 1970-01-01
    • 2018-12-28
    • 2017-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多