MeshLabServer - Упрощение: отказ от децимации краевого коллапса квадратов (с текстурой)

Я тестирую некоторые инструменты прореживания / упрощения, чтобы уменьшить количество треугольников во многих файлах OBJ, которые программно представляют 3D-модель.

У меня проблема с функцией "Simplification: Quadric Edge Collapse Decimation (с текстурой)" в MeshLab.

Когда я запускаю функцию, я получаю сообщение: Сообщение об ошибке фильтра.

Я нашел обходной путь с IDE, я применяю функцию Filters / Texture / Converts PerVertex UV в PerWedge UV, а затем применяю фильтр упрощения... Но в API MeshLabXML я не могу найти фильтр для преобразования координат текстуры UV...

У кого-нибудь была проблема? И решил это?

2 ответа

Решение

У вас есть две альтернативы:

Сначала нужно сделать два шага:

  1. Преобразуйте вашу сетку в клинную текстуру с помощью команды meshlabserver -i inputMesh.obj -o tmpMesh.obj -m wt
  2. Примените другие фильтры, используя meshlabserver -i tmpMesh.obj -o outputMesh.obj -m wt -s myScript.mlx

Вторая альтернатива - сделать все за один шаг, вызвав фильтр Convert PerVertex UV into PerWedge UV в вашем mlx скрипте перед вызовом Simplification: Quadric Edge .... Также предлагаю позвонитьRemove Unreferenced Verticesпросто по рассудку.

Попробуйте сохранить этот сценарий в файл с именем textureSimplify.mlx

<!DOCTYPE FilterScript>
<FilterScript>
 <filter name="Remove Unreferenced Vertices"/>
 <filter name="Convert PerVertex UV into PerWedge UV"/>
 <filter name="Simplification: Quadric Edge Collapse Decimation (with texture)">
  <Param value="3000" name="TargetFaceNum" description="Target number of faces" isxmlparam="0" tooltip="" type="RichInt"/>
  <Param value="0" name="TargetPerc" description="Percentage reduction (0..1)" isxmlparam="0" tooltip="" type="RichFloat"/>
  <Param value="0.3" name="QualityThr" description="Quality threshold" isxmlparam="0" tooltip="" type="RichFloat"/>
  <Param value="1" name="Extratcoordw" description="Texture Weight" isxmlparam="0" tooltip="" type="RichFloat"/>
  <Param value="false" name="PreserveBoundary" description="Preserve Boundary of the mesh" isxmlparam="0" tooltip="" type="RichBool"/>
  <Param value="1" name="BoundaryWeight" description="Boundary Preserving Weight" isxmlparam="0" tooltip="" type="RichFloat"/>
  <Param value="true" name="OptimalPlacement" description="Optimal position of simplified vertices" isxmlparam="0" tooltip="" type="RichBool"/>
  <Param value="true" name="PreserveNormal" description="Preserve Normal" isxmlparam="0" tooltip="" type="RichBool"/>
  <Param value="true" name="PlanarQuadric" description="Planar Simplification" isxmlparam="0" tooltip="" type="RichBool"/>
  <Param value="false" name="Selected" description="Simplify only selected faces" isxmlparam="0" tooltip="" type="RichBool"/>
 </filter>

</FilterScript>

Отредактируйте строку <Param value="3000" name="TargetFaceNum" чтобы изменить значение 3000 на желаемое количество лиц, а затем выполнить сценарий с помощью команды:

> meshlabserver -i inputMesh.obj -o outputMesh.obj -m wt -s textureSimplify.mlx

Начиная с Мешлаб 2020.12,meshlabserverбыл заменен PyMeshLab.

Quadric Edge Collapse задокументирован здесь.

Другие вопросы по тегам