-
ply
格式总结
一、
ply
格式简介
PLY
文件格式是
Stanford
大学开发的一套三维
mesh
模型数据格式,
图形学领域内很多
著名的模型数据,比如
Stanfo
rd
的三维扫描数据库(其中包括很多文章中会见到的
Happ
y
Buddha,
Dragon,
Bunny
兔子)
,
Geogia
Tech
的大型几何模型库,北卡
(U
NC)
的电厂模型等,
最初的模型都是基于这个格式的。
PLY
作为一种多边形模型数据格式,
p>
不同于三维引擎中常用的场景图文件格式和脚本文
件,
每个
PLY
文件只用于描述一个多边形模型对象
p>
(Object)
,
该模型对象可以通过诸
如顶点、
面等数据进行描述,每一类这样的数据被称作一种元素
(Element)
。
二、
ply
格式
1
、
PLY
的文件结构简单:文件头加上元素数
据列表。其中文件头中以行为单位描述文件类
型、格式与版本、元素类型、元素的属性等
,
然后就根据在文件头中所列出元素类型的顺序
及其属性,依次
记录各个元素的属性数据。
2
、典型
的
PLY
文件结构:
头部
顶点列表
面片列表
(其他元素列表)
3
、举例
ply
{
头部的开始,是文件的识别字符
}
format ascii 1.0
{
关键词
format
,特定的
ascii
或二进制格式(见说明
1
)
,版本号
}
comment
made by anonymous {
关键词
comment
,要注释的内容。
}
comment this file is a cube
{
注释内容可有可无
}
elementvertex 8 {
描述一个元素开始:关
键词
element
,元素名,元素在文件中的个数
}
property float32 x {
元素属性:关键词
property
,
数据类型
(见说明
2
)<
/p>
,属性名
}
property
float32 y
property float32 z
element face 6
{
第二个元素
}
property
list uint8 int32 vertex_index
{
列表数据类型,见说明
3}
end_header {
结尾,与
p
ly
呼应
}
{
以上是
头部
的全部内容
}
{
顶点列表开始
}
0 0 0
0 0 1
0 1 1
0 1 0
1 0 0
1 0 1
1 1 1
1 1 0
p>
{
面片列表开始:顶点个数,顶点索引号
}
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.
例子中文件使用的是
ascii
,
二进制版本头部的唯一不同是用词
“
binary_little_endian
”
或者“
binary_big_endian
”替换词
“
ascii
”
。
2.
属性可能具有的标量数据类型列表如下:
名称
类型
字节数
-------------------------------
int8
字符
1
uint8
非负字符
1
int16
短整型
2
uint16
非负短整型
2
int32
整型
4
uint32
非负整型
4
float32
单精度浮点数
4
float64
双精度浮点数
8
3.
列表数据类型的属性定义有一种特殊的格式:
property list <
数值类型
><
数值类型
><
属性名
>
这种格式的一类例子是上面文件中的:
property list uint8 int32
vertex_index
这表示属性
“
vertex_index
”
首先包含一个非负字符报苏在
属性里包含多少索引,
接下来是
一个列表包含许多整数。在这个
边长列表里的每个整数都是一个顶点的索引。
三、
ply
格式的读写
1.
首先是所需数据结构的定义
(
1
)点结构
struct Point3d
{
public:
float X;
float Y;
float Z;
Point3d(float x, float y, float z)
{
this->X=x;
this->Y=y;
this->Z=z;
}
-
-
-
-
-
-
-
-
-
上一篇:Hypermesh总结-网格划分篇
下一篇:契约面前亲子互惠-新