ply補全為立方體 PLY 檔案結構

2021-10-18 21:28:29 字數 3409 閱讀 2705

典型的 ply 檔案結構:

頭部頂點列表

麵片列表

(其他元素列表)

頭部是一系列以回車結尾的文字行,用來描述檔案的剩餘部分。頭部包含乙個對每個元素型別的描述,包括元素名(如「邊」),這個元素在工程裡有多少,以及乙個與這個元素關聯的不同屬性的列表。頭部還說明這個檔案是二進位制的或者是ascii的。頭部後面的是乙個每個元素型別的元素列表,按照在頭部中描述的順序出現。

plyformat ascii 1.0

comment this file is a cube

element vertex 8

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

這種格式的一類例子是上面的立方體檔案中的:

property list uint8 int32 vertex_index

這表示屬性「vertex_index」首先包含乙個非負字元報蘇在屬性裡包含多少索引,接下來是乙個列表包含許多整數。在這個邊長列表裡的每個整數都是乙個頂點的索引。

另外乙個例子

另外乙個立方體定義:

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格式檔案具體解釋

一 ply簡單介紹 ply多邊形檔案格式的開發目標是建立一套針對多邊形模型的,結構簡單可是可以滿足大多數圖形應用須要的模型格式,並且它同意以ascii碼格式或二進位制形式儲存檔案。ply的開發人員希望。這樣一套既簡單又靈活的檔案格式,可以幫助開發人員避免反覆開發檔案格式的問題。然而因為各種各樣的原因...

資料立方體

總體介紹 首先模擬乙個資料分析場景,某企業積累了如下 所示的銷售資料 中每一行表示某個時間段內某種商品在某個地區的銷售情況。很明顯,這些資料涉及到了時間 地區 產品三個業務角度。在對這樣的資料進行分析時,不同的角色都會基於自己所感興趣的業務角度提出問題 銷售經理關心各個地區的銷售情況,希望找出銷售增...

建立立方體

imanualobject cube cube scenemgr.createmanualobject cube cube.begin examples anchor operationtype.ot list 頂點 cube.position 100,100,100 0 cube.position...