ply格式相关内容.docx

ply格式相关内容.docx

ID:51674009

大小:21.72 KB

页数:5页

时间:2020-03-14

ply格式相关内容.docx_第1页
ply格式相关内容.docx_第2页
ply格式相关内容.docx_第3页
ply格式相关内容.docx_第4页
ply格式相关内容.docx_第5页
资源描述:

《ply格式相关内容.docx》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、ply格式总结一、ply格式简介PLY文件格式是Stanford大学开发的一套三维mesh模型数据格式,图形学领域内很多著名的模型数据,比如Stanford的三维扫描数据库(其中包括很多文章中会见到的HappyBuddha,Dragon,Bunny兔子),GeogiaTech的大型几何模型库,北卡(UNC)的电厂模型等,最初的模型都是基于这个格式的。PLY作为一种多边形模型数据格式,不同于三维引擎中常用的场景图文件格式和脚本文件,每个PLY文件只用于描述一个多边形模型对象(Object),该模型对象可

2、以通过诸如顶点、面等数据进行描述,每一类这样的数据被称作一种元素(Element)。二、ply格式1、PLY的文件结构简单:文件头加上元素数据列表。其中文件头中以行为单位描述文件类型、格式与版本、元素类型、元素的属性等,然后就根据在文件头中所列出元素类型的顺序及其属性,依次记录各个元素的属性数据。2、典型的PLY文件结构:头部顶点列表面片列表(其他元素列表)3、举例ply{头部的开始,是文件的识别字符}formatascii1.0{关键词format,特定的ascii或二进制格式(见说明1),版本号}

3、commentmadebyanonymous{关键词comment,要注释的内容。}commentthisfileisacube{注释内容可有可无}elementvertex8{描述一个元素开始:关键词element,元素名,元素在文件中的个数}propertyfloat32x{元素属性:关键词property,数据类型(见说明2),属性名}propertyfloat32ypropertyfloat32zelementface6{第二个元素}propertylistuint8int32vertex_i

4、ndex{列表数据类型,见说明3}end_header{结尾,与ply呼应}{以上是头部的全部内容}{顶点列表开始}000001011010100101111110{面片列表开始:顶点个数,顶点索引号}401234765440451415624267343740说明:1.例子中文件使用的是ascii,二进制版本头部的唯一不同是用词“binary_little_endian”或者“binary_big_endian”替换词“ascii”。2.属性可能具有的标量数据类型列表如下:名称类型字节数------

5、-------------------------int8字符1uint8非负字符1int16短整型2uint16非负短整型2int32整型4uint32非负整型4float32单精度浮点数4float64双精度浮点数83.列表数据类型的属性定义有一种特殊的格式:propertylist<数值类型><数值类型><属性名>这种格式的一类例子是上面文件中的:propertylistuint8int32vertex_index这表示属性“vertex_index”首先包含一个非负字符报苏在属性里包含多少索引

6、,接下来是一个列表包含许多整数。在这个边长列表里的每个整数都是一个顶点的索引。一、ply格式的读写1.首先是所需数据结构的定义(1)点结构structPoint3d{public:floatX;  floatY;  floatZ;Point3d(floatx,floaty,floatz)  {  this->X=x;  this->Y=y;  this->Z=z;  }};(2)三角形结构三角形结构按常理理解应该是包含了3个Point3d,不过这里有两种方式来定义这个Triangle结构。一种是采用点

7、地址:structTriangle{public:Point3d*P0;Point3d*P1;Point3d*P2;Triangle(Point3d*p0,Point3d*p1,Point3d*p2)  {    this->P0=p0;    this->P1=p1;    this->P2=p2;  }};第二种是使用索引:structTriangle{public:intP0Index;intP1Index;intP2Index;Triangle(intp0index,intp1index,in

8、tp2index)  {  this->P0Index=p0index;  this->P1Index=p1index;  this->P2Index=p2index;}};(3)mesh结构classMesh{public:std::vectorVertices;std::vectorFaces;Mesh();~Mesh();voidAddVertex(Point3d*toAdd);voidAddFace(Tr

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。