9

我想选择网格的一个区域并获取所选顶点的 ID,以便我可以在我的自定义 c++ 处理管道中使用它们。

例如,如果有一个 3d 手部网格,可以选择属于每个指尖的顶点。获取这些顶点的 ID 对于一些应用程序非常有用,例如跟踪、动画等。

Meshlab 显然在后台使用了这些顶点的 ID,但是这些信息可以暴露给用户吗?网上有很多关于如何(以各种方式)选择网格的某些区域并应用一些处理功能的教程,但我没有找到有关获取有关所选区域的原始信息的内容。

4

3 回答 3

13

在 MeshLab 中显示顶点 id 有两种方式:

  • 渲染 => 显示标签,这将在每个顶点上显示顶点 ID。
  • 单击黄色的“获取信息”按钮,然后单击一个三角形。如果您的网格很密集,那么它虽然不是真正可读的。

小心基于 0 和 1 的索引,我不确定它们在 MeshLab 中基于什么。

2017 年更新:使用新的 MeshLab 版本 (2016.12),可以使输出更具可读性。单击“获取信息”按钮后,可以按 键Space从面拾取切换到顶点拾取。然后您可以按p将顶点 ID 和坐标记录到小日志窗口。

另一方面, Render => Show Label 不再起作用,它给出了一个错误CANNOT START DECORATOR: the layer contains too many faces and vertices.

于 2015-11-24T00:50:39.807 回答
2

使用“获取信息”按钮并按照左侧的说明按“t”并选择顶点并按 p。选择一个顶点

于 2017-02-11T19:00:44.457 回答
1

我找到的解决方案相当乏味。

看起来,虽然 Meshlab 显然在幕后使用了这些 ID,但这些信息并没有暴露给用户。所以我遵循这个启发式:

  • 使用标准 MeshLab 工具选择感兴趣的顶点。
  • 反转选择。
  • 删除所有顶点,并得到一个 1 点点云/网格作为结果。
  • 将此导出为 .off 文件。
  • 打开导出的文件并读取这个独特点的坐标。一个坐标(例如 X)就足够了。
  • 在您的原始 .off 文件或原始网格/点云结构中搜索以找到具有此坐标的点/顶点。
  • 你有它,你有原始结构中所选顶点的ID。
  • 然后(这是特定于应用程序,根据我的需要),使用 PCL,我为我的点云创建了一个 Kd-Tree,使用选定的点(红色)作为“查询”来获取一些最近的邻居(绿色)。

结果:

在此处输入图像描述

于 2014-04-07T20:57:58.783 回答