.PLY文件格式剖析(二)
来源:互联网 发布:java 8中文版实战 编辑:程序博客网 时间:2024/04/30 05:01
在很多书上介绍的三维图形数据都是.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文件格式剖析
- PLY文件格式
- ply 文件格式
- PLY文件格式
- PLY文件格式
- PLY文件格式
- PLY文件格式及其解析
- ply文件格式详细说明
- ply文件格式详细说明
- ply 点云文件格式
- ply文件格式详细说明
- ply文件格式详细说明
- ply 点云文件格式
- PLY文件格式及其MATLAB读写操作
- MATLAB对ply文件格式的读取和显示
- WAVE文件格式剖析
- Linux人才需求高涨 Unix与Win需求持平
- hibernate组建映射
- 截屏工具____FastStone Capture (屏幕截图)V6.5 Final绿色汉化特别版
- 求助,这种mD5是如何解密? 或者是什么加密方式
- 跟 LFJ 的赌约 以及LFJ的回家
- .PLY文件格式剖析(二)
- 取指定字符串的指定长度
- 浅谈软件测试流程
- 批处理实现自动关机
- 想到什么写什么
- chrome.exe模块的功能
- 网站美工应该遵守的工作边界
- #pragma once介绍
- SQL SERVER 与ACCESS、EXCEL的数据转换