PLY格式

     (以下为网络资源总结,请对号入座)

    Ply文件格式是Stanford大学开发的一套三维mesh模型数据格式,Stanford的三维数据库中Happy Buddha、Dragon、Bunny兔子最初都是基于这个格式的,PLY 是一种电脑档案格式,全名为 多边形档案(Polygon File Format) 或 Stanford Triangle Format。 该格式主要用以储存立体扫描结果的三维数值,透过多边形片面的集合描述三维物体,与其他格式相较之下这是较为简单的方法。它可以储存的资讯包含颜色、透明度、表面法向量、材质坐标与资料可性度,并能对多边形的正反两面设定不同的属性。在档案内容的储存上 PLY 有两种版本,分别是纯文字(ASCII)版本与二元码(binary)版本,其差异在储存时是否以 ASCII 编码表示元素资讯。

       PLY的文件结构:文件头加上元素数据列表。其中文件头中以行为单位描述文件类型、格式与版本、元素类型、元素的属性等,然后就根据在文件头中所列出元素类型的顺序及其属性,依次记录各个元素的属性数据。

PLY档案以PLY单独为一行开始,接着一行为版本资讯,目前有三种写法:

ormat ascii 1.0 format 

binary_little_endian 1.0 format 

binary_big_endian 1.0

其中 ascii, binary_little_endian, binary_big_endian 是档案储存的编码方式,而 1.0 是遵循的标准版本。

在标头中可使用 'comment' 作为一行的开头以编写注解,在元素的数量定义上可使用 'element' 关键字。举例而言,若一个档案包含 12 个端点,则档头必须包含:element vertex 12 vertex 是内定的元素类型。

对于元素的属性定义方式,PLY允许单一属性定义:

property <data-type> <property-name-1>

以及列表属性方式:

property list <numerical-type> <numerical-type> <property-name>

其中第一个数据类型描述列表元素数量,第二个数据类型描述每个列表元素。

属性可能具有的数据类型有char uchar short ushort int uint float double 与具有位元长度的 int8 uint8 int16 uint16 int32 uint32 float32 float64 几种

除了顶点和多边形面两种基本元素外,PLY文件格式允许使用自定义的元素和元素属性,称为Other Element和Other Property。只要遵循文件格式中对元素及元素属性的格式定义,就能够被正常的解析,这也是PLY格式所具备的灵活性特色。

最后标头必须以此行结尾:

end_header 


头部定义材料属性的部分:

element   material   6 
property   ambient_red   uint8
property   ambient_green   uint8 
property   ambient_blue   uint8 
property   diffuse_red   uint8
property   diffuse_green   uint8 
property   diffuse_blue   uint8 
property   specular_red   uint8
property   specular_green   uint8 
property   specular_blue   uint8 
property   specular_power   float32   {   Phong   指数   }

这些行应该在头部顶点、面片和边的说明后直接出现。如果我们希望每个顶点有一个材质说明,我们可以将这行加在顶点属性末尾: 

property   material_index   int32 

下面这个例子是一个典型的ASCII格式的PLY文件,其所描述的是一个立方体。

ply
format ascii 1.0             ...{ 文件类型:ascii或binary,版本号 }
comment made by anonymous   ... { 注释行 }
comment this file is a cube  ...{ 注释行 }
element vertex 8           ...{ 定义“顶点”元素,其数量为8个 }
property float32 x           ...{ 顶点的x属性,数据类型为float32 }
property float32 y           ...{ 顶点的x属性,数据类型为float32 }
property float32 z           ...{ 顶点的x属性,数据类型为float32 }
element face 6               ...{ 定义“面”元素,其数量为6个 }
property list uint8 int32 vertex_index ...{ 面的顶点索引属性,类型为uint8的列表 }
end_header                 ...{ 文件头结束标志 }
0 0 0                        ...{ 顶点元素列表 }
0 0 1
0 1 1
0 1 0
1 0 0
1 0 1
1 1 1
1 1 0
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




  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值