PLY格式文件具体解释

链接:http://blog.csdn.net/szchtx/article/details/7587999

http://cdu.net.cn/3D/2014-04-23/705.html

一、PLY简单介绍

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

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

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

二、PLY结构

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

典型的PLY文件结构:

头部

顶点列表

面片列表

(其它元素列表)

头部是一系列以回车结尾的文本行。用来描写叙述文件的剩余部分。

头部包括一个对每一个元素类型的描写叙述,包括元素名(如“边”)。这个元素在project里有多少,以及一个与这个元素关联的不同属性的列表。头部还说明这个文件是二进制的或者是ASCII的。头部后面的是一个每一个元素类型的元素列表,依照在头部中描写叙述的顺序出现。

以下是一个立方体的完整ASCII描写叙述。大括号里的凝视不是文件的一部分,它们是这个样例的注解。文件里的凝视一般在   “comment”開始的关键词定义行里。

[plain] view
plain
copyprint?

  1. <span style="font-size:16px;">ply
  2. format   ascii   1.0   {   ascii/二进制。格式版本号数   }
  3. comment   made   by   anonymous   {   凝视关键词说明,像其它行一样   }
  4. comment   this   file   is   a   cube
  5. element   vertex   8   {   定义“vertex”(顶点)元素,在文件里有8个   }
  6. property   float32   x   {   顶点包括浮点坐标“x”}
  7. property   float32   y   {   y   坐标相同是一个顶点属性   }
  8. property   float32   z   {   z   也是坐标   }
  9. element   face   6   {   在文件中有6个“face”(面片)   }
  10. property   list   uint8   int32   vertex_index   {   “vertex_indices”(顶点素引)是一列整数   }
  11. end_header   {   划定头部结尾   }
  12. 0   0   0   {   顶点列表的開始   }
  13. 0   0   1
  14. 0   1   1
  15. 0   1   0
  16. 1   0   0
  17. 1   0   1
  18. 1   1   1
  19. 1   1   0
  20. 4   0   1   2   3   {   面片列表開始   }
  21. 4   7   6   5   4
  22. 4   0   4   5   1
  23. 4   1   5   6   2
  24. 4   2   6   7   3
  25. 4   3   7   4   0 </span>

这个样例说明头部的基本组成。头部的每一个部分都是一个以关键词开头。以回车结尾的ASCII串。"ply"是文件的头四个字符。

跟在文件头部开头之后的,是关键词“format”和一个特定的ASCII或者二进制的格式,接下来是一个版本。

再以下是多边形文件里每一个元素的描写叙述。在每一个元素里还有多属性的说明。

一般元素以以下的格式描写叙述:

element   <元素名>   <在文件里的个数>

property   <数据类型>   <属性名-1>

property   <数据类型>   <属性名-2>

property   <数据类型>   <属性名-3>

属性罗列在“element”(元素)行后面定义,既包括属性的数据类型,也包括属性在每一个元素中出现的次序。一个属性能够有三种数据类型:标量,字符串和列表。

属性可能具有的标量数据类型列表例如以下:

名称      类型           字节数

-------------------------------

int8        字符                    1

uint8      非负字符           1

int16      短整型               2

uint16    非负短整型       2

int32      整型                   4

uint32    非负整型           4

float32   单精度浮点数   4

float64   双精度浮点数   8

这些字节计数非常重要,并且在实现过程中不能改动以使这些文件可移植。

使用列表数据类型的属性定义有一种特殊的格式:property   list   <数值类型>   <数值类型>   <属性名> ,这样的格式,一个非负字符表示在属性里包括多少索引,接下来是一个列表包括很多整数。在这个边长列表里的每一个整数都是一个顶点的索引。

另外一个立方体定义:

[plain] view
plain
copyprint?

  1. ply
  2. format   ascii   1.0
  3. comment   author:   anonymous
  4. comment   object:   another   cube
  5. element   vertex   8
  6. property   float32   x
  7. property   float32   y
  8. property   float32   z
  9. property   red   uint8   {   顶点颜色開始   }
  10. property   green   uint8
  11. property   blue   uint8
  12. element   face   7
  13. property   list   uint8   int32   vertex_index   {   每一个面片的顶点个数   }
  14. element   edge   5   {   物体里有5条边   }
  15. property   int32   vertex1   {   边的第一个顶点的索引   }
  16. property   int32   vertex2   {   第二个顶点的索引   }
  17. property   uint8   red   {   边颜色開始   }
  18. property   uint8   green
  19. property   uint8   blue
  20. end_header
  21. 0   0   0   255   0   0   {   顶点列表開始   }
  22. 0   0   1   255   0   0
  23. 0   1   1   255   0   0
  24. 0   1   0   255   0   0
  25. 1   0   0   0   0   255
  26. 1   0   1   0   0   255
  27. 1   1   1   0   0   255
  28. 1   1   0   0   0   255
  29. 3   0   1   2   {   面片列表開始,从一个三角形開始   }
  30. 3   0   2   3   {   还有一个三角形   }
  31. 4   7   6   5   4   {   如今是一些四边形   }
  32. 4   0   4   5   1
  33. 4   1   5   6   2
  34. 4   2   6   7   3
  35. 4   3   7   4   0
  36. 0   1   255   255   255   {   边列表開始,从白边開始   }
  37. 1   2   255   255   255
  38. 2   3   255   255   255
  39. 3   0   255   255   255
  40. 2   0   0   0   0   {   以一个黑线结束   }

这个文件为每一个顶点指定一个红、绿、蓝值。

为了说明变长vertex_index(顶点索引)的能力,物体的头两个面片是两个三角形而不是一个四边形。

这意味着物体的面片数是7。

这个物体还包含一个边列表。

每条边包含两个指向说明边的顶点的指针。每条边也有一种颜色。上面定义的五条边指定了颜色,使文件中的两个三角形高亮。

前四条边白色。它们包围两个三角形。最后一条边是黑的,他是切割三角形的边。

三、用户定义元素

上面的样例显示了顶点、面片和边三种元素的使用方法。PLY   格式相同同意用户定义它们自己的元素。定义新元素的格式于顶点、面片和边相同。这是头部定义材料属性的部分:

[plain] view
plain
copyprint" style="color:rgb(160,160,160); text-decoration:none; background-color:inherit; border:none; padding:0px; margin:0px 10px 0px 0px; font-size:9px">?

  1. element   material   6
  2. property   ambient_red   uint8   {   围绕颜色   }
  3. property   ambient_green   uint8
  4. property   ambient_blue   uint8
  5. property   ambient_coeff   float32
  6. property   diffuse_red   uint8   {   扩散(diffuse)颜色   }
  7. property   diffuse_green   uint8
  8. property   diffuse_blue   uint8
  9. property   diffuse_coeff   float32
  10. property   specular_red   uint8   {   镜面(specular)颜色   }
  11. property   specular_green   uint8
  12. property   specular_blue   uint8
  13. property   specular_coeff   float32
  14. property   specular_power   float32   {   Phong   指数   }

这些行应该在头部顶点、面片和边的说明后直接出现。假设我们希望每一个顶点有一个材质说明,我们能够将这行加在顶点属性末尾:property   material_index   int32

这个整数如今是一个到文件内包括的材质列表的索引。这可能诱使一个新应用的作者编制一些信的元素保存在PLY文件里。

转载自:http://blog.csdn.net/lxfyzx/article/details/4997627

http://blog.csdn.net/lxfyzx/article/details/4997780

时间: 2024-08-01 14:04:24

PLY格式文件具体解释的相关文章

PLY格式文件详解

链接:http://blog.csdn.net/szchtx/article/details/7587999 http://cdu.net.cn/3D/2014-04-23/705.html 一.PLY简介 PLY文件格式是Stanford大学开发的一套三维mesh模型数据格式,图形学领域内很多著名的模型数据,比如Stanford的三维扫描数据库(其中包括很多文章中会见到的Happy Buddha, Dragon, Bunny兔子),Geogia Tech的大型几何模型库,北卡(UNC)的电厂模

sam 文件的解释

高通两数据测序之后要map到基因组上,我通常用bwa bowtie和tophat .其实我知道sam 文件有好几个field,每个field代表不同的意思,但是由于各种格式的文件确实太多了,我也记不住每个field具体的意思.每次要用的时候都是上网再去找,或者把相关的资料下载下来,再现学. 今天,我和一个同学讨论我们数据的情况.他们都是用bowtie 去map 的,我之前写了个脚本,是用bwa 做的map,我有点懒散,也懒得再去修改了,于是也没想着要再写一个用bowtie 做map的脚本.与同学

linux 里 /etc/passwd 、/etc/shadow和/etc/group 文件内容解释

•/etc/passwd文件用于存放用户账户信息,每行代表一个账户,每个账户的各项信息用冒号分割,例如: root:x:0:0:root:/root:/bin/bash username:password:uid:gid:allname:homedir:shell 1.用户名. 2.密码,“x”代表密码存储在/etc/shadow中:当该值为其他任意非“x”值时,可以通过root用户切换(不需要密码),但是都无法通过非root用户切换到相应用户,因为无法获得起密码了. 3.uid,用户id,0-

Android音频: 如何使用AudioTrack播放一个WAV格式文件?

翻译 By Long Luo 原文链接:Android Audio: Play a WAV file on an AudioTrack 译者注: 1. 由于这是技术文章,所以有些词句使用原文,表达更准确. 2. 由于水平有效,有些地方可能翻译的不够准确,如有不当之处,敬请批评指正. 3. 针对某些语句,适当补充了上下文及更适合中文阅读,尽量做到信达雅. 如果你已经成功地了解了关于AudioTrack的一些话题,那么你可能享受它带来的好处,例如低延迟(在STATIC(静态)模式),能够生成流式音频

【NLP】Tika 文本预处理:抽取各种格式文件内容

Tika常见格式文件抽取内容并做预处理 作者 白宁超 2016年3月30日18:57:08 摘要:本文主要针对自然语言处理(NLP)过程中,重要基础部分抽取文本内容的预处理.首先我们要意识到预处理的重要性.在大数据的背景下,越来越多的非结构化半结构化文本.如何从海量文本中抽取我们需要的有价值的知识显得尤为重要.另外文本格式常常不一,诸如:pdf,word,excl,xml,ppt,txt等常见文件类型你或许经过一番周折还是有办法处理的.倘若遇到database,html,邮件,RTF,图像,语音

ELF格式文件符号表全解析及readelf命令使用方法

http://blog.csdn.net/edonlii/article/details/8779075 1. 读取ELF文件头: $ readelf -h signELF Header:  Magic:   7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00  Class:                                                  ELF64  Data:                            

快速新建自定义格式文件、右键添加以管理员身份运行命令提示符菜单

大多数Windows用户,右键中默认新建的文件格式就那么几种.这可能对我们爱折腾或者特殊要求的人员来说可能有点不方便,比如说要创建个 .reg .bat .vbs等格式的文件,就需要新建个文本文件修改后缀为或者是通过对应软件保存为 .reg .bat .vbs等.是不是有点麻烦哟,可不可以在右键中的新建选项中添加我们所想要的文件类型呢.在大Windows的环境下,这些没什么问题的. Regedit 注册表是Windows系统下一个好玩而又强大的东西,这里注册表(Registry,繁体中文版Win

Python数据写入csv格式文件

(只是传递,基础知识也是根基) Python读取数据,并存入Excel打开的CSV格式文件内! 这里需要用到bs4,csv,codecs,os模块. 废话不多说,直接写代码!该重要的内容都已经注释了,剩下不懂的可以自己查询一下,或者QQ群内问我.QQ群在以往的博客中! 1 #coding:utf-8 2 from bs4 import BeautifulSoup 3 import bs4 4 import os 5 import time 6 import csv 7 import codecs

正确的打开DWG格式文件用这个办法

CAD文件如今在许多的领域当中都会使用到,DWG格式文件作为最常使用的CAD文件图纸,自然经常会被我们使用到,如果我们想要对DWG格式文件进行查看和编辑,那么我们应该怎么进行操作呢?想要打开DWG格式文件,就需要使用专业的CAD文件编辑器打开.那么打开DWG格式文件正确的方法是什么? 一.什么软件可以打开DWG格式文件 打开DWG格式文件正确的方法就是使用迅捷CAD编辑器(官网:http://cad.xjpdf.com)这款专业的CAD文件编辑软件进行打开.这款软件支持多种CAD文件格式,其中就