一、ply簡單介紹
ply多邊形檔案格式的開發目標是建立一套針對多邊形模型的,結構簡單可是可以滿足大多數圖形應用須要的模型格式,並且它同意以ascii碼格式或二進位制形式儲存檔案。ply的開發人員希望。這樣一套既簡單又靈活的檔案格式,可以幫助開發人員避免反覆開發檔案格式的問題。然而因為各種各樣的原因,在工業領域內,新的檔案格式仍然在不斷的出現,可是在圖形學的研究領域中,ply還是種經常使用且關鍵的檔案格式。
ply作為一種多邊形模型資料格式,不同於三維引擎中經常使用的場景**件格式和指令碼檔案。每乙個ply檔案僅僅用於描寫敘述乙個多邊形模型物件(object),該模型物件能夠通過諸如頂點、麵等資料進行描寫敘述,每一類這種資料被稱作一種元素(element)。相比於現代的三維引擎中所用到的各種複雜格式。ply實在是種簡單的不能再簡單的檔案格式,可是假設細緻研究就會發現,就像設計者所說的,這對於絕大多數的圖形應用來說已經是足夠用了。
二、ply結構
ply的檔案結構簡單:檔案頭加上元素資料列表。當中檔案頭中以行為單位描寫敘述檔案型別、格式與版本號、元素型別、元素的屬性等,然後就依據在檔案頭中所列出元素型別的順序及其屬性,依次記錄各個元素的屬性資料。
典型的ply檔案結構:
頭部頂點列表
麵片列表
(其它元素列表)
頭部是一系列以回車結尾的文字行。用來描寫敘述檔案的剩餘部分。
頭部包括乙個對每乙個元素型別的描寫敘述,包括元素名(如「邊」)。這個元素在project裡有多少,以及乙個與這個元素關聯的不同屬性的列表。頭部還說明這個檔案是二進位制的或者是ascii的。頭部後面的是乙個每乙個元素型別的元素列表,依照在頭部中描寫敘述的順序出現。
plyformat ascii 1.0
comment this file is a cube
element vertex 8
property float32 x
property float32 y
property float32 z
element face 6
property list uint8 int32 vertex_index
end_header
0 0 0
0 0 1
0 1 1
0 1 0
1 0 0
1 0 1
1 1 1
1 1 0
4 0 1 2 3
4 7 6 5 4
4 0 4 5 1
4 1 5 6 2
4 2 6 7 3
4 3 7 4 0
再以下是多邊形檔案裡每乙個元素的描寫敘述。在每乙個元素裡還有多屬性的說明。
一般元素以以下的格式描寫敘述:
element
property
property
property
屬性羅列在「element」(元素)行後面定義,既包括屬性的資料型別,也包括屬性在每乙個元素**現的次序。乙個屬性能夠有三種資料型別:標量,字串和列表。
屬性可能具有的標量資料型別列表例如以下:
名稱 型別 位元組數
int8 字元 1
uint8 非負字元 1
int16 短整型 2
uint16 非負短整型 2
int32 整型 4
uint32 非負整型 4
float32 單精度浮點數 4
float64 雙精度浮點數 8
這些位元組計數非常重要,並且在實現過程中不能改動以使這些檔案可移植。
使用列表資料型別的屬性定義有一種特殊的格式:property list ,這樣的格式,乙個非負字元表示在屬性裡包括多少索引,接下來是乙個列表包括很多整數。在這個邊長列表裡的每乙個整數都是乙個頂點的索引。
另外乙個立方體定義:
plyformat ascii 1.0
comment author: anonymous
comment object: another cube
element vertex 8
property float32 x
property float32 y
property float32 z
property red uint8
property green uint8
property blue uint8
element face 7
property list uint8 int32 vertex_index
element edge 5
property int32 vertex1
property int32 vertex2
property uint8 red
property uint8 green
property uint8 blue
end_header
0 0 0 255 0 0
0 0 1 255 0 0
0 1 1 255 0 0
0 1 0 255 0 0
1 0 0 0 0 255
1 0 1 0 0 255
1 1 1 0 0 255
1 1 0 0 0 255
3 0 1 2
3 0 2 3
4 7 6 5 4
4 0 4 5 1
4 1 5 6 2
4 2 6 7 3
4 3 7 4 0
0 1 255 255 255
1 2 255 255 255
2 3 255 255 255
3 0 255 255 255
2 0 0 0 0
這個檔案為每乙個頂點指定乙個紅、綠、藍值。
為了說明變長vertex_index(頂點索引)的能力,物體的頭兩個麵片是兩個三角形而不是乙個四邊形。
這意味著物體的麵片數是7。
這個物體還包含乙個邊列表。
每條邊包含兩個指向說明邊的頂點的指標。每條邊也有一種顏色。上面定義的五條邊指定了顏色,使檔案中的兩個三角形高亮。
前四條邊白色。它們包圍兩個三角形。最後一條邊是黑的,他是切割三角形的邊。
三、使用者定義元素
上面的樣例顯示了頂點、麵片和邊三種元素的使用方法。ply 格式相同同意使用者定義它們自己的元素。定義新元素的格式於頂點、麵片和邊相同。這是頭部定義材料屬性的部分:
element material 6
property ambient_red uint8
property ambient_green uint8
property ambient_blue uint8
property ambient_coeff float32
property diffuse_red uint8
property diffuse_green uint8
property diffuse_blue uint8
property diffuse_coeff float32
property specular_red uint8
property specular_green uint8
property specular_blue uint8
property specular_coeff float32
property specular_power float32
這些行應該在頭部頂點、麵片和邊的說明後直接出現。假設我們希望每乙個頂點有乙個材質說明,我們能夠將這行加在頂點屬性末尾:property material_index int32
這個整數如今是乙個到檔案內包括的材質列表的索引。這可能誘使乙個新應用的作者編制一些信的元素儲存在ply檔案裡。
ply補全為立方體 PLY 檔案結構
典型的 ply 檔案結構 頭部頂點列表 麵片列表 其他元素列表 頭部是一系列以回車結尾的文字行,用來描述檔案的剩餘部分。頭部包含乙個對每個元素型別的描述,包括元素名 如 邊 這個元素在工程裡有多少,以及乙個與這個元素關聯的不同屬性的列表。頭部還說明這個檔案是二進位制的或者是ascii的。頭部後面的是...
資料立方體
總體介紹 首先模擬乙個資料分析場景,某企業積累了如下 所示的銷售資料 中每一行表示某個時間段內某種商品在某個地區的銷售情況。很明顯,這些資料涉及到了時間 地區 產品三個業務角度。在對這樣的資料進行分析時,不同的角色都會基於自己所感興趣的業務角度提出問題 銷售經理關心各個地區的銷售情況,希望找出銷售增...
建立立方體
imanualobject cube cube scenemgr.createmanualobject cube cube.begin examples anchor operationtype.ot list 頂點 cube.position 100,100,100 0 cube.position...