.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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章