如何使用Meshlab在.ply文件中绘制线条?

8
例如,我想从所有点云中选择两个点,并在它们之间绘制一条线。我正在使用Meshlab处理.ply文件,但我不知道如何完成这个任务。我可以使用Meshlab或其他方法来实现吗?
2个回答

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

这是一个更复杂的例子,每个顶点都有颜色,并且在立方体的四个角上有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 

这是之前的示例如何通过MeshLab进行光栅化。

Output of sample 2

正如我所说,MeshLab仅部分支持edge元素,因此存在一些问题:

  • MeshLab可以加载具有边缘元素的.ply文件,但不会将它们保存为.ply文件格式。它只会将顶点和面导出到文件中。
  • MeshLab在表示同时具有edgeface元素的文件时存在问题。只有当边缘在与面不同的图层中(如下图所示)时,它才能正确绘制它们。因此,如果您需要绘制既有面又有线条的.ply文件,则必须执行以下操作:

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

Edges and faces are show only in separate layers


我将你的代码复制到一个 .txt 文件中,然后拖入 MeshLab 编辑器中,但是我没有看到任何点/立方体,有什么想法吗? - Ilan Aizelman WS
请尝试使用 .ply 扩展名代替 .txt。 - Rockcat

0

如果你只是想在任何网格上绘制一些临时线段,你可以使用 测量工具 来绘制一些线条。请记住,如果你退出测量工具,这些线条将会丢失。

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接