資源描述:
《骨骼蒙皮動(dòng)畫(skinnedmesh)的原理解析》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、3.1x文件模板和數(shù)據(jù)下面是一個(gè)神秘的X文件://----------------------自行分割的,以下是X文件說明-------------------xof0302txt0032//----------------------以下是模板聲明-------------------templateHeader{<3D82AB43?62DA?11cf?AB39?0020AF71E433>DWORDmajor;DWORDminor;DWORDflags;}templateFrame{<3D82AB46?62D
2、A?11cf?AB39?0020AF71E433>[FrameTransformMatrix][Mesh]}//----------------------以下是數(shù)據(jù)對象-------------------Header{//11;0;1;}//1FrameScene_Root{//1FrameTransformMatrix{//21.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1
3、.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;}//2FramePyramid_Frame{//2FrameTransformMatrix{1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;}MeshPyramid
4、Mesh{//35;0.00000;10.00000;0.00000;,?10.00000;0.00000;10.00000;,10.00000;0.00000;10.00000;,?10.00000;0.00000;?10.00000;,10.00000;0.00000;?10.00000;;6;3;0,1,2;,3;0,2,3;,3;0,3,4;,3;0,4,1;,3;2,1,4;,3;2,4,3;;MeshMaterialList{//41;6;0,0,0,0,0,0;;MaterialMaterial0
5、{//51.000000;1.000000;1.000000;1.000000;;0.000000;0.050000;0.050000;0.050000;;0.000000;0.000000;0.000000;;}//5}//4}//3}//2}//1有點(diǎn)復(fù)雜,可以把X文件分解成一小撮容易理解和處理的組件。解釋一下,X文件開始像這樣:xof0302txt0032xof是X文件標(biāo)記,證明它是X文件。0302說明使用的是DirectX3.2版本的模板。txt說明是以文本格式保存的,區(qū)別于二進(jìn)制。32說明定義浮點(diǎn)數(shù)值
6、的位數(shù):32位。Template說明是一個(gè)模板,X文件的模板像C++中的結(jié)構(gòu),而數(shù)據(jù)對象就像結(jié)構(gòu)的實(shí)例。模板定義了數(shù)據(jù)對象的布局,我們看Header模板的聲明:templateHeader{<3D82AB43?62DA?11cf?AB39?0020AF71E433>//GUID全球唯一標(biāo)識(shí)符DWORDmajor;DWORDminor;DWORDflags;}它的實(shí)例:Header{1;//主要的0;//次要的1;//標(biāo)志}在Header中定義的數(shù)據(jù),順序必須與模板定義的一樣。再看另一個(gè)重要的模板(相當(dāng)重要):F
7、rame,這是個(gè)特殊的模板,它不定義數(shù)據(jù)類型,而是引用其他的模板類。templateFrame{<3D82AB46?62DA?11cf?AB39?0020AF71E433>[FrameTransformMatrix][Mesh]}它引用了2個(gè)模板類:FrameTransformMatrix和Mesh。跟C的結(jié)構(gòu)一樣,結(jié)構(gòu)中可以包含結(jié)構(gòu)。FrameTransformMatrix對象和Mesh對象都已經(jīng)嵌入到Scene_Root中了,但這里沒有給出它們的定義,為什么呢?因?yàn)樗荄irectX的標(biāo)準(zhǔn)模板,沒有必要將所
8、有的模板都定義到文件自身,可以在程序中定義那些模板。通過這個(gè)例子,可以知道:模板完全可以由用戶自定義。3.1.1定義模板X文件是具擴(kuò)展性的,所以必須預(yù)先定義好要使用的模板,好讓DirectX所理解,知道怎么訪問模板的數(shù)據(jù)??梢栽赬文件中定義,也可以在程序中定義。例如:TemplateContactEnty{這只是開頭,然后要給一個(gè)GUID,可以用guidgen.exe程序,它在MSVC