【发布时间】:2021-06-05 12:04:27
【问题描述】:
我使用 Meshlab Quadric 边缘折叠来进行简化。这个想法是使用第二个网格来定义网格中的感兴趣区域,然后使用 Hausdorff 距离计算两个网格之间的距离。与加权简化相比,我希望网格的较远部分比较近的部分更简化。不幸的是,我不知道如何到达那里,因为每个顶点的质量在更远的部分上很高,而在靠近定义的感兴趣区域的部分上很低,我需要它反过来。任何想法? 非常感谢!
【问题讨论】:
标签: meshlab
我使用 Meshlab Quadric 边缘折叠来进行简化。这个想法是使用第二个网格来定义网格中的感兴趣区域,然后使用 Hausdorff 距离计算两个网格之间的距离。与加权简化相比,我希望网格的较远部分比较近的部分更简化。不幸的是,我不知道如何到达那里,因为每个顶点的质量在更远的部分上很高,而在靠近定义的感兴趣区域的部分上很低,我需要它反过来。任何想法? 非常感谢!
【问题讨论】:
标签: meshlab
使用Per Vertex Quality Function 过滤器可以轻松实现这一目标。
首先,让我构建一个类似于您的示例。我有两个网格(灰色和黄色石像鬼),将使用 Distance from Reference Mesh 计算一个网格到另一个网格的距离,并将距离值存储为每个顶点的质量。
我们可以渲染质量直方图来查看值。您可以看到有很多距离接近 0.0(蓝色值)的顶点。两个网格之间的最大距离值为 1.83(红色值)。
现在,您希望以低距离值采用高质量值的方式反转这些值。您可以使用Per Vertex Quality Function 过滤器并编写将低值转换为高值的表达式。在您的表达式中,q 表示当前每个顶点的质量值,因此您可以使用q = 1.83 - q 或q = 1 / (1+q) 等公式
在这个例子中,我使用了q = 1.83 - q。这很好,但使公式取决于距离的最大值。如您所见,直方图已经反转,现在是具有低距离高质量值的顶点。
在这里,我使用了q = 1 / (1+q)。我使用这个公式来避免除以零,这将由普通的 1 / q 产生。你也可以去非线性使用q = 1 / (1 + q * q)。
【讨论】: