MeshLabServer - 简化:二次边折叠抽取(带纹理)失败

MeshLabServer - Simplification : Quadric Edge Collapse Decimation (WITH TEXTURE) Failure

提问人:Clement 提问时间:2/11/2020 更新时间:7/12/2022 访问量:2808

问:

我测试了一些抽取/简化工具,以减少以编程方式表示 3D 模型的许多 OBJ 文件的三角形数量。

我在 MeshLab 中的“简化:二次边折叠抽取(带纹理)”功能有问题。

当我运行该函数时,我收到消息:过滤器失败消息

我找到了IDE的解决方法,我应用了过滤器/纹理/将PerVertex UV转换为PerWedge UV功能,然后应用简化过滤器... 但是在 MeshLabXML api 中,我找不到转换 UV 纹理坐标的过滤器......

有人遇到过这个问题吗?并解决了它?

MeshLab UV映射 抽取

评论


答:

0赞 Rockcat 2/18/2020 #1

有两种方法可以做到这一点:

首先采取两个步骤:

  1. 使用命令将网格转换为 per-wedge-texturedmeshlabserver -i inputMesh.obj -o tmpMesh.obj -m wt
  2. 使用以下方法应用其他过滤器meshlabserver -i tmpMesh.obj -o outputMesh.obj -m wt -s myScript.mlx

第二种选择是一步完成所有操作,方法是在调用之前在 mlx 脚本中调用过滤器。另外,我建议只凭理智打电话。Convert PerVertex UV into PerWedge UVSimplification: 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>

编辑该行,将值 3000 更改为所需的面数,然后使用以下命令执行脚本:<Param value="3000" name="TargetFaceNum"

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

评论

0赞 Clement 2/20/2020
感谢您的回复。它有效。但是很难自动化,因为您必须检查 OBJ 文件是在 PerVertex UV 中还是在 PerWedge UV 中,否则命令会崩溃,我需要处理许多文件......没有纹理,使用 PerVertex UV 或 PerWedge UV...
0赞 sebastian 7/12/2022 #2

自 Meshlab 2020.12 起,已被 PyMeshLab 取代。meshlabserver

此处记录了二次边坍缩