X檔案結構解析

2022-09-14 23:57:12 字數 3164 閱讀 1762

在三維圖形程式設計中,網格模型占有非常重要的地位,而且也是比較複雜的部分,特別是包含動畫和蒙皮資訊的網格模型。

.x檔案格式分析

.x檔案格式最初是為傳統的direct3d保留模式而設計的,在directx 6.0問世後,針對立即模式對它作過一次擴充套件。

要想在direct3d程式中靈活自如地使用網格模型,應當深入理解.x檔案格式。

.x檔案是由模板(template)驅動的,模板定義了如何儲存乙個資料物件,這樣使用者便可以自己定義具體的格式。direct3d預定義了許多模板,這些預定義的模板位於中,模板識別符號都在中,通用檔案包含了這兩個標頭檔案。

模板所允許的資料型別稱為可選成員(optional member),這些可選成員作為資料物件的子物件來儲存,子物件可以是另一種資料型別或對先前資料物件的引用,或是乙個二進位制物件。

來看乙個.x檔案(cube_的完整內容:

xof 0302txt 0064

header

mesh cube

該模型的效果圖如下:

第一行檔案頭中的 "xof"告訴程式,它載入的檔案是乙個.x檔案,"0302"表示它使用的是directx 3.2 版本的模板,"txt"表示這些資料是以文字形式儲存的,"0064"定義了浮點數的位數是64位。

檔案頭後面的乙個資料塊涉及了模板和資料物件等內容。乙個模板和乙個資料物件之間的差異在於所有的模板都是以乙個template單詞開始,模板看起來很像乙個c語言的結構定義,資料物件就是那些模板的例項。使用模板定義包含在.

x檔案裡的資料物件(乙個模板定義了資料物件的布局),每個模板都可以通過乙個資料型別的集合去定義並容納任何型別的資料。同時,任何資料型別的組合都可以在乙個模板裡使用。

模板header的定義如下:

template header

各成員分別表示.x檔案最大版本,最小版本,以及定義方式。

.x檔案中涉及模板的概念,它由四部分組成:第一部分是模板的名字,可是由數字、字元、下劃線構成,但不能以數字開頭,第二部分是guid(global unique identifier,全域性唯一識別符號),第三部分由各個資料項構成,最後一部分用於控制模板的限制程度,乙個模板可以是開放的、閉合的或受限的。

開放模板的定義在結束部位有乙個待展開的方括號[...]表示它可以包含其他資料型別,封閉模板不能包含其他任何資料型別,受限模板只能包含特定的資料型別。模板的使用與結構體有相似之處。

一般情況下,.x檔案都至少包含乙個mesh模板,其定義如下:

template mesh

where:

nvertices - number of vertices.

array vector vertices[nvertices] - array of vertices, each of type vector.

nfaces - number of faces.

array meshface faces[nfaces] - array of faces, each of type meshface.

any .x file template can be used here. this makes the architecture extensible.

material and texturefilename templates are typically used.

mesh模板是乙個開放的模板,同時它還用到了vector模板和meshface模板,它們的定義如下:

defines a vector.

template vector

template meshface

where:

nfacevertexindices - number of indices.

array dword facevertexindices[nfacevertexindices] - array of indices.

因為沒有為網格模型設定材質和紋理等資訊,所以該檔案顯示效果是乙個黑色立方體,接下來將為該立方體新增材質、法線和紋理資訊。

我們在cube_的基礎上新增材質、法線和紋理,構成cube_

效果圖如下:

可以看到在mesh模板中巢狀著乙個子模板meshmateriallist,它是mesh模板的一部分,用來將每個面與材質相關聯,其定義如下:

template meshmateriallist

where:

nmaterials - a dword. the number of materials.

nfaceindexes - a dword. the number of indices.

faceindexes[nfaceindexes] - an arrray of dwords containing the face indices.

meshmateriallist是乙個受限的模板,它只能包含material模板,其定義如下:

template material

where:

facecolor - face color. a colorrgba template.

power - material specular color exponent.

specularcolor - material specular color. a colorrgb template.

emissivecolor - material emissive color. a colorrgb template.

template colorrgba

template colorrgb

在cube_中,首先定義了兩個材質redmaterial和greenmaterial:

material redmaterial第一塊材料

1.000000;0.000000;0.000000;1.000000r = 1.0, g = 0.0, b = 0.0

0.000000;

0.000000;0.000000;0.000000;;

0.000000;0.000000;0.000000;;

texturefilename

material greenmaterial第二塊材料

0.000000;1.000000;0.000000;1.000000r = 0.0, g = 1.0, b = 0.0

0.000000;

0.000000;0.000000;0.000000;;

0.000000;0.000000;0.000000;;

整理職業安全健康管理體系檔案的結構 x

一 審核規範要求 4.4.4 檔案化 用人單位應以適當的方式 如書面或電子形式 建立並保持下列資訊 1 對管理體系核心要素及其相互作用的描述 2 提供查詢相關檔案的途徑。職業安全健康管理體系檔案在滿足充分性和有效性的前提下,應做到最小化。二 理解要點 1 職業安全健康管理體系檔案是保證職業安全健康管...

X線影片檔案管理度

1 線片和錄盤系醫學資料之一,必須妥善保管,為加強檔案管理工作,特別制定本條例。2凡來科檢查者的 線片,必須於次日上午交檔案室內歸檔,歸卡。3當時檢查的 線片未經評片或 和未寫報告的影片均不辦理借片手續。若遇有急診者,由急診值班醫師來科閱片。4院內各臨床科醫師對所主管病人的 線片若要閱片,必須到檔案...

解析渣漿幫浦的組成結構

渣漿幫浦的幫浦頭部分 1 m bh bhp hp h hh型渣漿幫浦為雙幫浦殼結構,即幫浦體 幫浦蓋帶有可更換的耐磨金屬內襯 包括葉輪 護套 護板等 幫浦體 幫浦蓋根據事情壓了採用灰鑄或球墨鑄鐵打造,垂直中開,用螺栓連線。幫浦體有止口與托架用螺栓連線。幫浦的吐出口可按八個角度旋轉安裝。葉輪前後蓋板帶...