MeshLabServer - Упрощение: отказ от децимации краевого коллапса квадратов (с текстурой)
Я тестирую некоторые инструменты прореживания / упрощения, чтобы уменьшить количество треугольников во многих файлах OBJ, которые программно представляют 3D-модель.
У меня проблема с функцией "Simplification: Quadric Edge Collapse Decimation (с текстурой)" в MeshLab.
Когда я запускаю функцию, я получаю сообщение: Сообщение об ошибке фильтра.
Я нашел обходной путь с IDE, я применяю функцию Filters / Texture / Converts PerVertex UV в PerWedge UV, а затем применяю фильтр упрощения... Но в API MeshLabXML я не могу найти фильтр для преобразования координат текстуры UV...
У кого-нибудь была проблема? И решил это?
2 ответа
У вас есть две альтернативы:
Сначала нужно сделать два шага:
- Преобразуйте вашу сетку в клинную текстуру с помощью команды
meshlabserver -i inputMesh.obj -o tmpMesh.obj -m wt
- Примените другие фильтры, используя
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 задокументирован здесь.