PLY文件格式
来源:互联网 发布:c语言中的递归 编辑:程序博客网 时间:2024/06/10 05:22
本文转自 http://topic.csdn.net/u/20070602/13/1e879838-9133-4d79-ad1f-b5f22c4e2758.html
1.找到PLY格式的定义2.用C++的文件流读入并解析3.用OPENGL将解析的顶点,纹理显示出来。
*.ply是Animator
典型的
头部
顶点列表
面片列表
(其他元素列表)
头部是一系列以回车结尾的文本行,用来描述文件的剩余部分。头部包含一个对每个元素类型的描述,包括元素名(如“边”),这个元素在工程里有多少,以及一个与这个元素关联的不同属性的列表。头部还说明这个文件是二进制的或者是ASCII的。头部后面的是一个每个元素类型的元素列表,按照在头部中描述的顺序出现。
下面是一个立方体的完整ASCII描述。相同工程的二进制版本头部的唯一不同是用词“binary_little_endian”或者
ply
format
comment
comment
element
property
property
property
element
property
end_header
0
0
0
0
1
1
1
1
4
4
4
4
4
4
这个例子说明头部的基本组成。头部的每个部分都是以一个关键词开头以回车结尾的ASCII串。即使是头部的开始和结尾(“ply”和 “end_header”)也是以这种形式。因为字符“ply”是文件的魔法数字,必须是文件的头四个字符。跟在文件头部开头之后的是关键词 “format”和一个特定的ASCII或者二进制的格式,接下来是一个版本号。再下面是多边形文件中每个元素的描述,在每个元素里还有多属性的说明。一般元素以下面的格式描述:
element
property
property
property
...
属性罗列在“element”(元素)行后面定义,既包含属性的数据类型也包含属性在每个元素中出现的次序。一个属性可以有三种数据类型:标量,字符串和列表。属性可能具有的标量数据类型列表如下:
名称
-------------------------------
int8
uint8
int16
uint16
int32
uint32
float32
float64
这些字节计数很重要,而且在实现过程中不能修改以使这些文件可移植。使用列表数据类型的属性定义有一种特殊的格式:
property
这种格式的一类例子是上面的立方体文件中的:
property
这表示属性“vertex_index”首先包含一个非负字符报苏在属性里包含多少索引,接下来是一个列表包含许多整数。在这个边长列表里的每个整数都是一个顶点的索引。
另外一个例子
------------
另外一个立方体定义:
ply
format
comment
comment
element
property
property
property
property
property
property
element
property
element
property
property
property
property
property
end_header
0
0
0
0
1
1
1
1
3
3
4
4