PLY

维基百科,自由的百科全书
跳转至: 导航搜索

PLY 是一種電腦檔案格式,全名為 多邊形檔案(Polygon File Format)史丹佛三角形檔案(Stanford Triangle Format)

史丹佛大學的The Digital Michelangelo Project 計畫採用 PLY 格式儲存極高解析度之 米開朗基羅 的作品 "大衛" 雕塑。

該格式主要用以儲存立體掃描結果的三維數值,透過多邊形片面的集合描述三維物體,與其他格式相較之下這是較為簡單的方法。它可以儲存的資訊包含顏色、透明度、表面法向量、材質座標與資料可性度,並能對多邊形的正反兩面設定不同的屬性。

在檔案內容的儲存上 PLY 有兩種版本,分別是純文字(ASCII)版本與二元碼(binary)版本,其差異在儲存時是否以 ASCII 編碼表示元素資訊。

檔案格式 [编辑]

(本文並未提供完整的格式描述,以下僅介紹 PLY 的基本概念與格式)

每個 PLY 檔都包含檔頭(header),用以設定網格模型的元素與屬性。在檔頭後接著是一連串的元素,一般而言這些元素就是端點(vertices)和面(faces),另外還可能包含有邊(edges)、深度圖樣本(samples of range maps)與三角帶(triangle strips)等元素。無論是純文字與二元碼的 PLY 檔,檔頭資訊都是以 ASCII 編碼編寫,接續其後的數值資料才有編碼之分。PLY 檔案以此行:

 ply

開頭作為 PLY 格式的識別。接著第二行是版本資訊,目前有三種寫法:

 format ascii 1.0
 format binary_little_endian 1.0
 format binary_big_endian 1.0

其中 ascii, binary_little_endian, binary_big_endian 是檔案儲存的編碼方式,而 1.0 是遵循的標準版本(現階段僅有 PLY 1.0 版)。在標頭中可使用 'comment' 作為一行的開頭以編寫註解,例如:

 comment This is a comment!

在元素的數量定義上可使用 'element' 關鍵字。舉例而言,若一個檔案包含 12 個端點,則檔頭必須包含:

 element vertex 12
 property float x
 property float y
 property float z

其中 vertex 是內定的元素類型,而這裡也出現了 'property' 關鍵字,其功用是描述構成 vertex 元素的數值欄位及其形態,例如上述範例定義 x, y, z 三欄位為浮點數資料形態。內定的資料形態有 char uchar short ushort int uint float double 與具有位元長度的 int8 uint8 int16 uint16 int32 uint32 float32 float64 幾種。另一個常使用的元素是,例如一個具有十個多邊面的物體,其 PLY 檔頭可能包含:

 element face 10
 property list uchar int vertex_index

此處的 'list' 表示該元素 face 的 vertex_index 欄位是一數值資料列表,並以 'uchar' 開頭表示列表的項目數,而每個項目的資料形態是 'int' 類型。最後標頭必須以此行結尾:

 end_header

檔頭後接著的是元素資料(端點座標、拓譜連結等)。在 ASCII 格式中各個端點與面的資訊都是以獨立的一行描述,而二元編碼格式則連續儲存這些資料,載入時須以 'element' 定義的元素數目以及 'property' 中設定的資料形態計算各筆欄位的長度。一個典型的 PLY 檔案結構是:

 檔頭
 端點元素列表
 面元素列表

其中的 端點元素列表 一般以 x y z 方式排列,形態如檔頭所定義;而 面元素列表 是以

<組成面的端點數 N> <端點#1的索引> <端點#2的索引> ... <端點#N的索引>

表示,舉例如下:

 ply
 ... (一些檔頭資訊)
 end_header
 0 0 1
 0 1 1
 ... (更多的端點元素)
 3 0 1 2
 3 0 1 3
 4 1 2 3 5
 ... (更多的面元素)

參見 [编辑]

  • Blender: 免費而功能強大 3D 編輯工具,可以用來匯入 PLY 檔案
  • MeshLab: 在 Windows、Mac OS X 與 Linux 平台上開放原始碼的網格編修與展示工具,可用來編輯轉換 PLY 檔案

外部連結 [编辑]