快速看懂ply格式

来源:互联网 发布:qq刷会员软件 编辑:程序博客网 时间:2024/05/29 04:37

    我们对照着例子来快速的认识一下ply格式,后面会给出详细说明

    首先总体来看,ply的文件结构为: 文件头+数据内容,文件头从 ply 一行开始,到 end_header 为止,里面定义了此 ply文件中数据的组织形式,包括数据类型和个数。之后的数据内容完全按照文件头的定义来组织。


1

plyformat ascii 1.0element vertex 5property float xproperty float yproperty float zproperty uchar redproperty uchar greenproperty uchar blueend_header-0.0856152 0.0246039   0.683328 0 255 0-0.510705 -0.154819  0.806933 0 255 0-0.158854 0.184305   0.77175 0 255 0 0.252752 0.0789101  0.738927 0 255 0-0.388887 -0.120427   0.73772 0 255 0

例一比较简单,只有顶点,

  format关键字后跟着的是数据的编码形式,分为ASCII码和binary两类;

  element关键字后面跟的是元素类型和个数,这里是5个顶点;元素除了顶点(vertex)外还有面片(face);

  property关键字后面跟的是这个元素(element)的数据类型,此处表示每个点(用一行表示)后跟着6个数据,分别为xyzrgb其中xyz坐标用float类型表示,rgb颜色用uchar类型表示;

   

例2、

plyformat binary_little_endian 1.0comment abc.pngelement vertex 300property float32 xproperty float32 yproperty float32 zelement face 600property list uint8 uint32 vertex_indicesproperty list uint8 float32 texcoordend_header


例二是个带贴图的模型,这里只给出文件头,

跟例一一样,

  format指定编码类型,这里用的是二进制压缩编码;

  comment后跟着的是注释信息,带贴图的ply文件需要将贴图文件名放在注释信息后,除此之外comment后还可以跟一些作者、版本等信息;

  element例二出现了两个element,分别为第 4行的vertex和第 8行的face,后面跟的数字是每个元素的个数,即vertex占了 300行,face占了其后的600行;

  vertex后的property与例一不同只有xyz的坐标,没有颜色,用32float表示;

  face后的property有两行,第一行定义了face的顶点列表,第二行定义了face对应贴图的坐标列表;

    第一行 "list uint8uint32 vertex_indices "

    list表示后面跟着的是个列表,vertex_indices指的是这是个顶点列表,本行用一个 uint8的数字打头,指出列表中的元素个数(对于面片来说一般大于三),然后unint32表示的是列表中数据的类型,也就是用32位无符号整形表示此面片顶点对应的vertex元素的编号(按顺序从小到大)。

    第二行 "list uint8float32 texcoord "

    list表示后面跟着的是个列表,texcoord指的是这是个纹理坐标列表,同样用一个uint8的数字打头,指出列表中的元素个数(uv坐标就是2),然后float32表示的是列表中数据的类型,也就是用32float表示纹理坐标值。


==================================

到此看完例子基本上就明白ply文件的组织结构了(如有不清楚的地方我再补充)

关于其中可用的数据类型,可从官网给出的表格中寻找

http://paulbourke.net/dataformats/ply/

原创粉丝点击