作為擴展名
X檔案有文本和二進制兩種存儲形式.
X檔案內部結構如下:
·Frame
定義框架容器,用來裝Mesh對象。可以包含多個Mesh對象,也可以包含子框架。在骨骼動畫中可以裝載一塊骨骼,和一系列骨骼(如手臂),可以沒有Mesh對象(表示骨骼時)。
包括兩部分:
1、Mesh對象。
2、轉換矩陣,本地轉換矩陣,初始化最初動作狀態。
FrameTransformMatrix
定義框架的本地轉換矩陣,是一個4X4矩陣(Matrix4x4類型),共16個浮點數據
(注意這裡的4X4矩陣是行主的)
AnimationKey
動畫鍵
定義具體的動作數據,包括一系列旋轉、移動、放縮、矩陣變換。
包括三部分:
1、動作鍵類型,包括旋轉、移動、放縮、矩陣
2、指示有幾個鍵數值
3、具體的鍵值列表(FloatKeys類型,包含時間值)
AnimationSet
動作組合,包括一個或多個動作(Animation)。每一個動作組合表示一個完整的動作
FloatKeys
定義浮點數組,它用來定義動作鍵數值。
包括兩部分
1、浮點值個數
2、浮點值列表
Coords2d
定義紋理坐標向量,包括兩個Float值,分別是 u、v 。
ColorRGBA
定義RGBA對象。包括四個Float值,分別是R、G、B、alpha
ColorRGB
定義RGB對象。包括三個Float值,分別是R、G、B
Boolean2d
二維Boolean類型,用來定義faceWrapvalues鍵值
Boolean
定義Boolean類型,0或1。
IndexedColor
索引顏色定義,包含兩部分:1、索引號 2、RGB值
·Material
定義材質信息,可以被套用到一個完整的Mesh對象,也可以套用到其中的一個面。
包含五部分:
1、FaceColor,環境光,包括四個浮點值,其中有Alpha值
2、Power,鏡面反射的光澤度,控制亮點大小,一個浮點值
3、specularcolor,鏡面反射
4、發射光
·Matrix4x4
定義四乘四矩陣,共16個值。
Mesh
功能及組成
定義一個Mesh對象。
共有9個部分組成:
1、包含的頂點數
2、頂點列表,一個頂點包含三個浮點值
3、面數
4、面的頂點索引列表,每個面包含三個頂點
5、MeshFaceWraps 結構,暫時無用
6、MeshTextureCoords 紋理坐標,可選
7、MeshNormals 法向,可選
8、MeshVertexColors 頂點顏色,默認為白色
9、MeshMaterialList 材質,不提供的話默認為白色
10、MeshFace
面索引,在Mesh結構中用於定義面索引
包括兩部分,1、面數 2、頂點索引構成的面數組
·MeshFaceWraps
暫時不用
·MeshTextureCoords
定義紋理坐標
1、紋理坐標的個數
2、紋理坐標,每個紋理坐標有兩個浮點值
·MeshMaterialList
定義材質套用
1、定義多少個材質被使用
2、材質影響面的個數
3、面索引
·MeshNormals
定義Mesh的法向量,包括四部分
1、nNormals,法向量的個數=頂點數
2、Normals,頂點法向量列表
3、nFaceNormals,面的個數=面數
4、FaceNormals,面對應的法向量
·MeshVertexColors
指定頂點的顏色代替原來的材質
1、頂點數目
2、顏色索引
·Patch
定義一個Bezier曲線控制面片
· PatchMesh
定義一個Bezier Patch定義的Mesh
·Quaternion
定義四元數
·SkinWeights
定義骨骼影響權重
功能及組成
定義骨骼影響權重。
包括以下幾個部分:
1、骨骼的名字
2、有多少個權重值
3、頂點的索引列表
4、相對應的影響頂點索引列表
5、本地轉換矩陣,轉換到骨骼空間
·TextureFilename
紋理的名稱,字元串類型,加雙引號如:“C:\\demo.dds”
·TimedFloatKeys
時間值,用於Animaterkey中定義時間間隔
·Vector
三維向量,三個浮點值
·VertexDuplicationIndices
保留副本,用於精簡Mesh的操作
1、原始頂點數
2、實際頂點數
3、數組(數組中元素為頂點的索引值)
·XSkinMeshHeader
描述被導出的SkinMesh相關信息
1、影響一個頂點的最多變換數目
2、影響每個面三個頂點的最大變換數目
3、影響一個頂點的骨骼數