MeshLabServer - Упрощение: сбой Quadri c Edge Collapse (С ТЕКСТУРОЙ) Сбой - PullRequest
0 голосов
/ 11 февраля 2020

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

У меня проблема с функцией "Упрощение: Quadri c Обрезание кромок при деформации (с текстура) в MeshLab.

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

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

У всех был проблема? И решена ли она?

1 Ответ

0 голосов
/ 18 февраля 2020

У вас есть две альтернативы для этого:

Сначала нужно выполнить два шага:

  1. Преобразовать ваш me sh в текстуру на клин с помощью команды 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
...