Meshlabserver: Как преобразовать STL в PLY и объединить вершины? - PullRequest
0 голосов
/ 16 февраля 2020

У меня есть несколько .stl файлов, которые я хотел бы преобразовать в .ply, вызвав meshlabserver из командной строки. Когда I go прямым путем

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

(где cube.stl - это приведенный ниже пример файла с 12 гранями), результирующее me sh имеет 12 граней и 36 вершин. Это означает, что не произошло объединения повторяющихся вершин, хотя именно по этой причине я хотел go для .ply вместо .stl.

Теперь я предполагаю, что это невозможно по той же причине невозможно было сделать объединение вершин по умолчанию в Meshlab GUI (я спросил об этом некоторое время go, хотя позже выяснилось, что такой вопрос уже существовал ). Но может кто-то знает какой-то трюк? Просматривая возможные фильтры после -om, я не нашел решения.

Поведение было протестировано с Meshlab 2016 на Open SUSE и с Meshlab v1.3.2_64bit на Ubuntu.

Пример файл

(также созданный 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

1 Ответ

1 голос
/ 17 февраля 2020

Самый простой способ - использовать скрипт, который применяет фильтр 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
...