.PLY文件格式剖析(二)

本文介绍了PLY文件格式的特点和结构,包括其在图形学领域的应用,以及如何解析这种格式的文件来获取三维模型数据。

在很多书上介绍的三维图形数据都是.obj,3ds格式,.dxf等格式的,真正讲解如何读取的就只有.obj格式文件的。但是我现在所做的内容,要求从.ply文件中读取初始塞维图形数据,这我就不会了,虽然对.ply文件格式有了了解:

Ply文件格式是Stanford大学开发的一套三维mesh模型数据格式,图形学领域内很多著名的模型数据,比如Stanford的三维扫描数据库(其中包括很多文章中会见到的Happy   Buddha、Dragon、Bunny兔子),Geogia   Tech的大型几何模型库,北卡(UNC)的电厂模型等,最初的模型都是基于这个格式的。

PLY多边形文件格式的开发目标是建立一套针对多边形模型的,结构简单但是能够满足大多数图形应用需要的模型格式,而且它允许以ASCII码格式或二进制形式存储文件。PLY的开发者希望,这样一套既简单又灵活的文件格式,能够帮助开发人员避免重复开发文件格式的问题。然而由于各种各样的原因,在工业领域内,新的文件格式仍然在不断的出现,但是在图形学的研究领域中,PLY还是种常用且重要的文件格式。

PLY作为一种多边形模型数据格式,不同于三维引擎中常用的场景图文件格式和脚本文件,每个PLY文件只用于描述一个多边形模型对象(Object),该模型对象可以通过诸如顶点、面等数据进行描述,每一类这样的数据被称作一种元素(Element)。相比于现代的三维引擎中所用到的各种复杂格式,PLY实在是种简单的不能再简单的文件格式,但是如果仔细研究就会发现,就像设计者所说的,这对于绝大多数的图形应用来说已经是足够用了。

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

 

 

但是需要注意,由于PLY格式的开放性,有些PLY文件的解析程序不支持全部的数据类型,也有的PLY文件采用自定义的数据类型,这些都有可能导致文件解析过程的失败。(我在一次将PLY文件加载到Ogre应用的时候,出于测试的目的手动写了一个PLY文件,加载总是失败,反复查找才发现原来是文件中写的顶点格式为uint32,加载程序根本不支持。)

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

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

以及列表属性方式:

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

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

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


PLY文件格式的规范及其解析的源代码都是开放的,可以从参考文献中找到相关的下载。最著名的就是Greg Turk在1994年发布的解析代码,Turk似乎也是PLY格式的开发者之一,因为我参考的“The PLY Polygon File Format”就是他写的。我现在用的就是Turk的代码,很方便也挺稳定的,有机会会把结构分析一下。

 


参考文献

1.The Stanford 3D Scanning Repository

2.MAC+PC+UNIX PLY reading/writing

3. Large Geometry Models Archieve

4. Power Plant Model

5. The PLY Polygon File Format

 

### .ply格式文件的内容和用途 PLY格式是一种用于存储和交换三维几何模型和点云数据的文件格式。其设计目标是简单、灵活,并且易于解析和使用。通过定义元素类型、属性字段和文件头中的元数据,PLY格式能够描述和存储点云中的几何信息和附加属性[^1]。 #### 文件组成 PLY文件由两部分组成:文件头(Header)和元素数据(Element Data)。 - **文件头**:文件头包含了描述性的元数据信息,用于定义点云的结构和属性。这些信息包括文件格式的版本、元素的类型(例如点、面等)、元素的数量以及每个元素的属性(如坐标、颜色、法向量等)。文件头的作用是为解析器提供足够的信息,以正确地读取和理解文件内容[^1]。 - **元素数据**:元素数据部分包含实际的点云数据或几何数据。根据文件头的定义,这些数据可以是点的坐标(如x、y、z)、颜色(如红、绿、蓝)、法向量等属性。这些数据按照文件头定义的顺序和格式存储,解析器可以根据这些信息提取数据并进行处理。 #### 用途 PLY格式广泛应用于三维几何模型和点云数据的存储和交换,尤其适合需要存储大量三维数据的场景。它支持存储点云中的几何信息(如点的位置)以及附加属性(如颜色、强度等),这使得它成为点云数据处理、三维建模、计算机视觉和增强现实等领域的常用文件格式[^1]。 PLY格式的灵活性和简单性使其成为一种通用的三维数据存储格式。与其他格式(如STL或PCD)相比,PLY格式不仅支持存储几何信息,还可以通过自定义属性字段存储额外的数据。这种能力使其在需要处理复杂三维数据的应用中非常有用,例如三维扫描、机器人导航和虚拟现实。 #### 示例 以下是一个PLY文件的文件头和元素数据的示例: ``` ply format ascii 1.0 comment author: John Doe element vertex 8 property float x property float y property float z property uchar red property uchar green property uchar blue end_header 0.0 0.0 0.0 255 0 0 1.0 0.0 0.0 0 255 0 0.0 1.0 0.0 0 0 255 1.0 1.0 0.0 255 255 0 0.0 0.0 1.0 255 0 255 1.0 0.0 1.0 0 255 255 0.0 1.0 1.0 255 255 255 1.0 1.0 1.0 128 128 128 ``` 该示例描述了一个包含8个顶点的立方体,每个顶点包括位置(x, y, z)和颜色(红、绿、蓝)信息。通过这种方式,PLY格式能够灵活地描述复杂的三维模型和点云数据。 #### 相关工具 PLY格式的文件可以使用多种工具进行查看和处理,例如CloudCompare、MeshLab等。这些工具能够读取PLY文件并显示点云数据,同时提供进一步的数据分析和处理功能[^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值