快速看懂ply格式

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012750702/article/details/72717296

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

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


1

ply
format ascii 1.0
element vertex 5
property float x
property float y
property float z
property uchar red
property uchar green
property uchar blue
end_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类型表示;

   

扫描二维码关注公众号,回复: 3187229 查看本文章

例2、

ply
format binary_little_endian 1.0
comment abc.png
element vertex 300
property float32 x
property float32 y
property float32 z
element face 600
property list uint8 uint32 vertex_indices
property list uint8 float32 texcoord
end_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/

猜你喜欢

转载自blog.csdn.net/u012750702/article/details/72717296
今日推荐