如何使用Meshlab在.ply文件中画线?

Yiz*_*zhi 6 3d mesh 3d-reconstruction meshlab ply-file-format

例如,我想从所有点云中选择两个点,并在它们之间画一条线。我正在使用 Meshlab 处理 .ply 文件,但我不知道如何完成。我可以使用 Meshlab 或其他方式做到这一点吗?

Roc*_*cat 5

有一种方法可以将行添加到 .ply 文件中。.ply 文件中最常用的元素是vertexface,但.ply 文件格式还允许使用 来定义段,edge而Meshlab仅部分支持这些元素。

这是具有两个顶点和一个边元素的 .ply 文件的最小示例

ply
format ascii 1.0
comment object: A single line
element vertex 2
property float x
property float y
property float z
element edge 1                        
property int vertex1                  
property int vertex2                  
end_header
0 0 0 
0 0 1 
0 1
Run Code Online (Sandbox Code Playgroud)

这是一个更复杂的示例,每个顶点都有颜色,立方体的角上有 4 条线。

ply
format ascii 1.0
comment object: 4 edges with color per vertex
element vertex 8
property float x
property float y
property float z
property uchar red                   
property uchar green
property uchar blue
element edge 4
property int vertex1                  
property int vertex2                  
end_header

0 0 0 255 0 0 
0 0 1 255 0 0
0 1 1 255 0 0
0 1 0 255 0 0
1 0 0 0 0 255
1 0 1 0 0 255
1 1 1 0 0 255
1 1 0 0 0 255

0 4 
1 5 
2 6 
3 7 
Run Code Online (Sandbox Code Playgroud)

这就是 meshlab 对前面的示例进行光栅化的方式

样本2的输出

正如我所说,meshlabedge仅部分支持 element,因此它存在一些问题:

  • Meshlab 将加载带有边缘元素的 .ply 文件,但不会保存为 ply 文件格式。它只会将顶点和面导出到文件。
  • Meshlab 在表示具有edgeface元素的文件时存在问题。仅当边缘位于与面不同的图层中时,它才会正确绘制它们(如下图所示)。因此,如果您需要绘制包含面和线的 .ply 文件,则必须:

    1. 复制当前图层。
    2. 从新图层中选择所有面并将其删除(Del 键),以便edge元素在该图层上可见。这些face元素在原始图层中仍然可见。

边和面仅显示在单独的图层中