PLY文件格式

PLY 是一种计算机文件格式,称为多边形文件格式或斯坦福三角格式。 它主要设计用于存储来自 3D 扫描仪的 3D 数据,可以存储各种属性,包括颜色和透明度、表面法线、纹理坐标和数据置信度值。 文件格式有两种版本,一种是 ASCII,另一种是二进制。

格式解析

典型的 PLY 文件由如下三部分构成:文件头、顶点列表、面片列表。如下所示:

1
2
3
4
Header
Vertex List
Face List
(lists of other elements)

文件头

文件头是由一系列以回车结尾(Windows 中为 “\r\n”,Linux 中为 “\n”,Mac中为 “\r”)的文本行,用于描述文件的其他部分。文件头包括每个元素类型的描述,包括元素的名称、数量。此外文件头还说明了文件是哪种存储类型。典型的文件头如下所示:

1
2
3
4
5
6
7
8
9
10
ply
format ascii 1.0
comment made by AbandonSSR
element vertex 8
property float x
property float y
property float z
element face 6
property list uchar int vertex_indices
end_header
  • PLY 文件始终以 “ply” 字符为起始,可通过此行判断是否为 PLY 文件

  • 第 2 行为 PLY 文件的格式说明,以 “format” 为开头,后面跟格式和版本号。目前有三种格式 ascii、binary_little_endian、binary_big_endian,以及唯一的版本号 1.0

    1
    2
    3
    format ascii 1.0
    format binary_little_endian 1.0
    format binary_big_endian 1.0
  • 第 3 行为 PLY 文件的附加说明,以 “comment” 开头,后面跟说明文字。此行可空缺

  • 第 4 - 9 行为 PLY 文件的某种数据元素。元素说明行:以 “element” 开头,后面跟元素的名称和数量。元素属性行:以 “property” 开头,后面跟属性的数据类型和名称。属性行有两种类型,一种由 3 列构成,后面两列为数据类型和名称;另一种由 5 列构成的列表属性,其中第二列为列表属性标识符,第三列为列表属性由多少列构成,第四列为列表属性中的数据类型,第五列为列表属性的名称

  • 第 10 行为 PLY 文件头结束标记

数据区

文本类型

文本类型的 PLY 文件数据区是由一系列以回车结尾(Windows 中为 “\r\n”,Linux 中为 “\n”,Mac中为 “\r”)的文本行。典型的数据区如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
0 0 0
0 0 1
0 1 1
0 1 0
1 0 0
1 0 1
1 1 1
1 1 0
4 0 1 2 3
4 7 6 5 4
4 0 4 5 1
4 1 5 6 2
4 2 6 7 3
4 3 7 4 0
  • 第 1- 8 行为第一种数据元素,第 9 - 14 行为第二种数据元素。每一个数据列的所代表的含义,在文件头中的已说明。

二进制类型

在二进制版本中,所有数据按照文件头中的顺序依次存储,必须严格按照数据类型所占字节的大小读写。

数据类型

类型 字节 类型 字节 类型 字节 类型 字节
char 1 uchar 1 int8 1 uint8 1
short 2 ushort 2 int16 2 uint16 2
int 4 uint 4 int32 4 uint32 4
long 8 ulong 8 int64 8 uint64 8
float 4 double 8 float32 4 float64 8

参考