日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ply补全为立方体_PLY文件格式

發(fā)布時(shí)間:2025/3/12 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ply补全为立方体_PLY文件格式 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、PLY簡(jiǎn)介

PLY文件格式是Stanford大學(xué)開發(fā)的一套三維mesh模型數(shù)據(jù)格式,圖形學(xué)領(lǐng)域內(nèi)很多著名的模型數(shù)據(jù),比如Stanford的三維掃描數(shù)據(jù)庫(其中包括很多文章中會(huì)見到的Happy?Buddha, Dragon, Bunny兔子),Geogia Tech的大型幾何模型庫,北卡(UNC)的電廠模型等,最初的模型都是基于這個(gè)格式的。

PLY多邊形文件格式的開發(fā)目標(biāo)是建立一套針對(duì)多邊形模型的,結(jié)構(gòu)簡(jiǎn)單但是能夠滿足大多數(shù)圖形應(yīng)用需要的模型格式,而且它允許以ASCII碼格式或二進(jìn)制形式存儲(chǔ)文件。PLY的開發(fā)者希望,這樣一套既簡(jiǎn)單又靈活的文件格式,能夠幫助開發(fā)人員避免重復(fù)開發(fā)文件格式的問題。然而由于各種各樣的原因,在工業(yè)領(lǐng)域內(nèi),新的文件格式仍然在不斷的出現(xiàn),但是在圖形學(xué)的研究領(lǐng)域中,PLY還是種常用且重要的文件格式。

PLY作為一種多邊形模型數(shù)據(jù)格式,不同于三維引擎中常用的場(chǎng)景圖文件格式和腳本文件,每個(gè)PLY文件只用于描述一個(gè)多邊形模型對(duì)象(Object),該模型對(duì)象可以通過諸如頂點(diǎn)、面等數(shù)據(jù)進(jìn)行描述,每一類這樣的數(shù)據(jù)被稱作一種元素(Element)。相比于現(xiàn)代的三維引擎中所用到的各種復(fù)雜格式,PLY實(shí)在是種簡(jiǎn)單的不能再簡(jiǎn)單的文件格式,但是如果仔細(xì)研究就會(huì)發(fā)現(xiàn),就像設(shè)計(jì)者所說的,這對(duì)于絕大多數(shù)的圖形應(yīng)用來說已經(jīng)是足夠用了。

二、PLY結(jié)構(gòu)

PLY的文件結(jié)構(gòu)簡(jiǎn)單:文件頭加上元素?cái)?shù)據(jù)列表。其中文件頭中以行為單位描述文件類型、格式與版本、元素類型、元素的屬性等,然后就根據(jù)在文件頭中所列出元素類型的順序及其屬性,依次記錄各個(gè)元素的屬性數(shù)據(jù)。

典型的PLY文件結(jié)構(gòu):

頭部

頂點(diǎn)列表

面片列表

(其他元素列表)

頭部是一系列以回車結(jié)尾的文本行,用來描述文件的剩余部分。頭部包含一個(gè)對(duì)每個(gè)元素類型的描述,包括元素名(如“邊”),這個(gè)元素在工程里有多少,以及一個(gè)與這個(gè)元素關(guān)聯(lián)的不同屬性的列表。頭部還說明這個(gè)文件是二進(jìn)制的或者是ASCII的。頭部后面的是一個(gè)每個(gè)元素類型的元素列表,按照在頭部中描述的順序出現(xiàn)。

下面是一個(gè)立方體的完整ASCII描述。大括號(hào)中的注釋不是文件的一部分,它們是這個(gè)例子的注解。文件中的注釋一般在

“comment”開始的關(guān)鍵詞定義行里。

ply

format???ascii???1.0???{???ascii/二進(jìn)制,格式版本數(shù)???}

comment???made???by???anonymous???{???注釋關(guān)鍵詞說明,像其他行一樣???}

comment???this???file???is???a???cube

element???vertex???8???{???定義“vertex”(頂點(diǎn))元素,在文件中有8個(gè)???}

property???float32???x???{???頂點(diǎn)包含浮點(diǎn)坐標(biāo)“x”}

property???float32???y???{???y???坐標(biāo)同樣是一個(gè)頂點(diǎn)屬性???}

property???float32???z???{???z???也是坐標(biāo)???}

element???face???6???{???在文件里有6個(gè)“face”(面片)???}

property???list???uint8???int32???vertex_index???{???“vertex_indices”(頂點(diǎn)素引)是一列整數(shù)???}

end_header???{???劃定頭部結(jié)尾???}

0???0???0???{???頂點(diǎn)列表的開始???}

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?

這個(gè)例子說明頭部的基本組成。頭部的每個(gè)部分都是一個(gè)以關(guān)鍵詞開頭,以回車結(jié)尾的ASCII串。"ply"是文件的頭四個(gè)字符。

跟在文件頭部開頭之后的,是關(guān)鍵詞“format”和一個(gè)特定的ASCII或者二進(jìn)制的格式,接下來是一個(gè)版本號(hào)。

再下面是多邊形文件中每個(gè)元素的描述,在每個(gè)元素里還有多屬性的說明。一般元素以下面的格式描述:

element ? ?

property ? ?

property ? ?

property ? ?

屬性羅列在“element”(元素)行后面定義,既包含屬性的數(shù)據(jù)類型,也包含屬性在每個(gè)元素中出現(xiàn)的次序。一個(gè)屬性可以有三種數(shù)據(jù)類型:標(biāo)量,字符串和列表。屬性可能具有的標(biāo)量數(shù)據(jù)類型列表如下:

名稱 ???? 類型 ????????? 字節(jié)數(shù)

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

int8 ?????? 字符??????????????????? 1

uint8 ???? 非負(fù)字符 ????????? 1

int16 ???? 短整型 ????????????? 2

uint16 ?? 非負(fù)短整型 ????? 2

int32 ???? 整型 ????????????????? 4

uint32 ?? 非負(fù)整型 ????????? 4

float32 ? 單精度浮點(diǎn)數(shù) ? 4

float64 ? 雙精度浮點(diǎn)數(shù) ? 8

這些字節(jié)計(jì)數(shù)很重要,而且在實(shí)現(xiàn)過程中不能修改以使這些文件可移植。

使用列表數(shù)據(jù)類型的屬性定義有一種特殊的格式:property ? list ? ? ? ,這種格式,一個(gè)非負(fù)字符表示在屬性里包含多少索引,接下來是一個(gè)列表包含許多整數(shù)。在這個(gè)邊長列表里的每個(gè)整數(shù)都是一個(gè)頂點(diǎn)的索引。

另外一個(gè)立方體定義:

ply

format???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???{???頂點(diǎn)顏色開始???}

property???green???uint8

property???blue???uint8

element???face???7

property???list???uint8???int32???vertex_index???{???每個(gè)面片的頂點(diǎn)個(gè)數(shù)???}

element???edge???5???{???物體里有5條邊???}

property???int32???vertex1???{???邊的第一個(gè)頂點(diǎn)的索引???}

property???int32???vertex2???{???第二個(gè)頂點(diǎn)的索引???}

property???uint8???red???{???邊顏色開始???}

property???uint8???green

property???uint8???blue

end_header

0???0???0???255???0???0???{???頂點(diǎn)列表開始???}

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???{???面片列表開始,從一個(gè)三角形開始???}

3???0???2???3???{???另一個(gè)三角形???}

4???7???6???5???4???{???現(xiàn)在是一些四邊形???}

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???{???以一個(gè)黑線結(jié)束???}

這個(gè)文件為每個(gè)頂點(diǎn)指定一個(gè)紅、綠、藍(lán)值。

為了說明變長vertex_index(頂點(diǎn)索引)的能力,物體的頭兩個(gè)面片是兩個(gè)三角形而不是一個(gè)四邊形。這意味著物體的面片數(shù)是7。這個(gè)物體還包括一個(gè)邊列表。每條邊包括兩個(gè)指向說明邊的頂點(diǎn)的指針。每條邊也有一種顏色。上面定義的五條邊指定了顏色,使文件里的兩個(gè)三角形高亮。前四條邊白色,它們包圍兩個(gè)三角形。最后一條邊是黑的,他是分割三角形的邊。

三、用戶定義元素

上面的例子顯示了頂點(diǎn)、面片和邊三種元素的用法。PLY ? 格式同樣允許用戶定義它們自己的元素。定義新元素的格式于頂點(diǎn)、面片和邊相同。這是頭部定義材料屬性的部分:

element???material???6

property???ambient_red???uint8???{???環(huán)繞顏色???}

property???ambient_green???uint8

property???ambient_blue???uint8

property???ambient_coeff???float32

property???diffuse_red???uint8???{???擴(kuò)散(diffuse)顏色???}

property???diffuse_green???uint8

property???diffuse_blue???uint8

property???diffuse_coeff???float32

property???specular_red???uint8???{???鏡面(specular)顏色???}

property???specular_green???uint8

property???specular_blue???uint8

property???specular_coeff???float32

property???specular_power???float32???{???Phong???指數(shù)???}

這些行應(yīng)該在頭部頂點(diǎn)、面片和邊的說明后直接出現(xiàn)。如果我們希望每個(gè)頂點(diǎn)有一個(gè)材質(zhì)說明,我們可以將這行加在頂點(diǎn)屬性末尾:property ? material_index ? int32

這個(gè)整數(shù)現(xiàn)在是一個(gè)到文件內(nèi)包含的材質(zhì)列表的索引。這可能誘使一個(gè)新應(yīng)用的作者編制一些信的元素保存在PLY文件中。

以下是常用的elements 和 properties 原地址?http://www.mathworks.com/matlabcentral/fx_files/5459/1/content/ply.htm

Common Elements and Properties

While the PLY format has the flexibility to define many types of elements and properities, a common set of elements are understood between programs to communicate common 3D data types. Turk suggests elements and

property names that programs should try to make standard.

Element

Property

Data Type

Property Description

vertex

x

y

z

float

float

float

x,y,z coordinates

nx

ny

nz

float

float

float

x,y,z components of normal

red

green

blue

alpha

uchar

uchar

uchar

uchar

vertex color

amount of transparency

material_index

int

index to list of materials

face

vertex_indices

list of int

indices to vertices

back_red

back_green

back_blue

uchar

uchar

uchar

backside color

edge

vertex1

vertex2

int

int

index to vertex

index to other vertex

crease_tag

uchar

crease in subdivision surface

material

red

green

blue

alpha

uchar

uchar

uchar

uchar

material color

amount of transparency

reflect_coeff

refract_coeff

refract_index

extinct_coeff

float

float

float

float

amount of light reflected

amount of light transmitted

index of refraction

extinction coefficient

*?- required "core" properties in red

For most applications, the minimum necessary information is vertex and face data. To make it easier for programs to interpret PLY files, the element properties listed in red should always be included. If there is

no face data (as in the case of point-cloud data) the face element could be defined with an element count of zero. The other elements and properties are suggested names for often used information like material parameters and edge information.

總結(jié)

以上是生活随笔為你收集整理的ply补全为立方体_PLY文件格式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。