ply文件介绍
PLY是一种三维mesh模型数据格式,全名为多边形档案(Polygon File Format)或 斯坦福三角形档案(Stanford Triangle Format)。
该格式主要用以储存立体扫描结果的三维数值,透过多边形片面的集合描述三维物体,与其他格式相较之下这是较为简单的方法。它可以储存的资讯包含颜色、透明度、表面法向量、材质座标与资料可信度,并能对多边形的正反两面设定不同的属性。
在档案内容的储存上PLY有两种版本,分别是纯文字(ASCII)版本与二元码(binary)版本,其差异在储存时是否以ASCII编码表示元素资讯。
ply文件的基本格式如下
1 | This is the structure of a typical PLY file: |
从ply到end_header是头部,element可以有多个property,例如vertex可以有xyz三个property。ply示例如下:
1 | ply |
这里是一个对ply文件的解释
http://paulbourke.net/dataformats/ply/
这里有一个ply文件的示例
http://paulbourke.net/dataformats/ply/example1.ply
代码示例
1 | from plyfile import PlyData |
使用plydata.read读取ply文件,可以看到ply_data是头部信息
1 | ply_data = PlyData.read('../repo/bun_zipper.ply') |
# 输出
ply
format ascii 1.0
comment zipper output
element vertex 35947
property float x
property float y
property float z
property float confidence
property float intensity
element face 69451
property list uchar int vertex_indices
end_header
读取顶点信息
1 | vertex = ply_data['vertex'] |
可以看到输出的是顶点vertex及它的property的信息
# 输出
element vertex 35947
property float x
property float y
property float z
property float confidence
property float intensity
读取面的信息
1 | face = ply_data['face'] |
# 输出
element face 69451
property list uchar int vertex_indices
将三个坐标合在一起并输出
1 | x = np.asarray(vertex['x']) |
#输出
(35947,)
(35947, 3)