Meshlab - 获取所选顶点的ID

dim*_*_tz 6 meshlab

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

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

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

Ela*_*782 11

有两种方法可以在MeshLab中显示顶点id:

  • Render => Show Label,这将显示每个顶点上的顶点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..

  • 为了完整起见,MeshLab具有从0开始的索引. (6认同)

dim*_*_tz 1

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

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

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

结果:

在此输入图像描述