PLY文件格式
PLY 是一种计算机文件格式,称为多边形文件格式或斯坦福三角格式。 它主要设计用于存储来自 3D 扫描仪的 3D 数据,可以存储各种属性,包括颜色和透明度、表面法线、纹理坐标和数据置信度值。 文件格式有两种版本,一种是 ASCII,另一种是二进制。
格式解析
典型的 PLY 文件由如下三部分构成:文件头、顶点列表、面片列表。如下所示:
1 | Header |
文件头
文件头是由一系列以回车结尾(Windows 中为 “\r\n”,Linux 中为 “\n”,Mac中为 “\r”)的文本行,用于描述文件的其他部分。文件头包括每个元素类型的描述,包括元素的名称、数量。此外文件头还说明了文件是哪种存储类型。典型的文件头如下所示:
1 | ply |
PLY 文件始终以 “ply” 字符为起始,可通过此行判断是否为 PLY 文件
第 2 行为 PLY 文件的格式说明,以 “format” 为开头,后面跟格式和版本号。目前有三种格式 ascii、binary_little_endian、binary_big_endian,以及唯一的版本号 1.0
1
2
3format 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 | 0 0 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 |