• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            手動創建X文件(3)

            Posted on 2008-12-01 00:18 Herbert 閱讀(475) 評論(0)  編輯 收藏 引用 所屬分類: DirectX
               到此為止,我們離制作動畫就只有一步之遙了。我們在前面做的立方體的基礎上添加一個Frame以及一些動畫時間貞就可以做出平移、旋轉、縮放或者三者組合的動畫了。下面先來看一下幾個模板的定義吧!
             

            模板 Frame 定義如下:

            template Frame
            {
                < 3D82AB46-62DA-11CF-AB39-0020AF71E433 >
                [...]               
            }

             

            模板FrameTransformMatrix 定義如下:

            template FrameTransformMatrix
            {
                < F6F23F41-7686-11cf-8F52-0040333594A3 >
                Matrix4x4 frameMatrix;
            }

             

            模板Matrix4x4 定義如下:

            template Matrix4x4
            {
                < F6F23F45-7686-11cf-8F52-0040333594A3 >
                array float matrix[16];
            }

             

            模板AnimationSet 定義如下:

            template AnimationSet
            {
                < 3D82AB50-62DA-11cf-AB39-0020AF71E433 >
                [ Animation < 3D82AB4F-62DA-11cf-AB39-0020AF71E433 > ]
            }

             

            模板AnimationKey 定義如下:

            template AnimationKey
            {
                < 10DD46A8-775B-11CF-8F52-0040333594A3 >
                DWORD keyType; //動畫鍵類型(0:旋轉鍵;1:縮放鍵;2:平移鍵;3:矩陣變換鍵)
                DWORD nKeys; //鍵的個數
                array TimedFloatKeys keys[nKeys]; //鍵數組
            }

             

            模板TimedFloatKeys 定義如下:

            template TimedFloatKeys
            {
                < F406B180-7B3B-11cf-8F52-0040333594A3 >
                DWORD time; //時間貞
                FloatKeys tfkeys;
            }

             

            模板FloatKeys 定義如下:

            template FloatKeys
            {
                < 10DD46A9-775B-11cf-8F52-0040333594A3 >
                DWORD nValues; //一次變換需要的數值個數
                array float values[nValues]; //數值列表
            }

             

            當AnimationKey 的keyType 為0時(即旋轉鍵), FloatKeys 的 nValues 為4(即通過4個值來控制旋轉:x,y,z 確定一個向量以及轉過的角度angle);

            當 AnimationKey 的 keyType 為 1時(即縮放鍵),FloatKeys的 nValues 為3(即通過3個值來控制縮放:x,y,z方向的縮放倍數);

            當 AnimationKey 的 keyType 為 2時(即平移鍵), FloatKeys 的 nValues 為3(即通過3個值來控制平移:x,y,z坐標)。

            我們在之前做的立方體的Mesh外面包裹一層 Frame 命名為 CubeFrame,再在CubeFrame 下面添加一個 AnimationSet即可,

            cube_rot.xxof 0302txt 0064

            Header
            {
            1;
            0;
            1;
            }

             


            Material YelloImage {
            1.000000;1.000000; 0.000000;1.000000;; //顏色: R G B A      
            0.000000;      // specular color 指數
            0.000000;0.000000;0.000000;; // specularColor
            0.000000;0.000000;0.000000;; // emissiveColor

             TextureFilename
             {
             "Herbert.png";
             }
            }


            Material PurpleImage
            {
            1.000000; 0.000000; 1.000000; 1.000000;; //顏色: R G B A  
            0.000000;
            0.000000; 0.000000; 0.000000;;
            0.000000; 0.000000; 0.000000;;

             TextureFilename
             {
             "Candy.png";
             }
            }


            Frame CubeFrame
            {
             FrameTransformMatrix{
             1.0, 0.0, 0.0, 0.0,
             0.0, 1.0, 0.0, 0.0,
             0.0, 0.0, 1.0, 0.0,
             0.0, 0.0, 0.0, 1.0;;
             }
             
             Mesh Cube_Mesh
             {
              8; //8 個頂點
               2.0;-2.0; 2.0;,
               2.0;-2.0;-2.0;,
              -2.0;-2.0;-2.0;,
              -2.0;-2.0; 2.0;,
               2.0; 2.0; 2.0;,
               2.0; 2.0;-2.0;,
              -2.0; 2.0;-2.0;,
              -2.0; 2.0; 2.0;;

              12; // 12 個面
              3;0,2,1;,
              3;0,3,2;,
              3;4,5,6;,
              3;4,6,7;,
              3;0,1,5;,
              3;0,5,4;,
              3;3,7,6;,
              3;3,6,2;,
              3;1,2,6;,
              3;1,6,5;,
              3;0,4,7;,
              3;0,7,3;;

             

              MeshMaterialList
              {
               2; //材質個數
               12; //面個數
               0,
               0,
               0,
               0,
               0,
               0,
               1,
               1,
               1,
               1,
               1,
               1;;
               {YelloImage}
               {PurpleImage}
              }


              MeshNormals
              {
               8;  //8個法線向量
                 
                1.0;-1.0; 1.0;,
                1.0;-1.0;-1.0;,
               -1.0;-1.0;-1.0;,
               -1.0;-1.0; 1.0;,
                1.0; 1.0; 1.0;,
                1.0; 1.0;-1.0;,
               -1.0; 1.0;-1.0;,
               -1.0; 1.0; 1.0;;


               12; //12個面
               3;0,2,1;, //12個面中每個頂點對應一個向量索引
               3;0,3,2;,
               3;4,5,6;,
               3;4,6,7;,
               3;0,1,5;,
               3;0,5,4;,
               3;3,7,6;,
               3;3,6,2;,
               3;1,2,6;,
               3;1,6,5;,
               3;0,4,7;,
               3;0,7,3;;

              }

             


              MeshTextureCoords
              {
               8; //8個紋理坐標
               0.0; 0.0;
               0.0; 1.0;
               0.0; 0.0;
               0.0; 1.0;

               1.0; 0.0;
               1.0; 1.0;
               1.0; 0.0;
               1.0; 1.0;;
              }

             }


            }

             

            AnimationSet AnimSet0
            {

             
             Animation Anim_RotByX
             {
                 { CubeFrame}
             
              AnimationKey
              {
               0; //鍵類型為:旋轉鍵
               8; // 8 個時間貞
               // 時間貞 決定旋轉需要4個值 x y z angle
               1000; 4; 0.0, 0.0, 1.0, 0.785;;,
               2000; 4; 0.0, 0.0, 1.0, 1.57 ;;,
               3000; 4; 0.0, 0.0, 1.0, 2.355;;,
               4000; 4; 0.0, 0.0, 1.0, 3.14  ;;,
               5000; 4; 0.0, 0.0, 1.0, 3.925;;,
               6000; 4; 0.0, 0.0, 1.0, 4.71 ;;,
               7000; 4; 0.0, 0.0, 1.0, 5.495;;,
               8000; 4; 0.0, 0.0, 1.0, 0.0  ;;;
              }
              }

             


             

             

               上面實現的是旋轉動畫,如果我們要實現縮放動畫,則可以把AnimationSet 改成以下內容即可:

            AnimationSet AnimSet0
            {

             
              Animation Anim_Scale
              {
              {CubeFrame}
              AnimationKey
              {
               1; //縮放鍵
               6; //六個時間點
               // 時間貞 決定縮放需要3個值 x y z
               1000; 3; 0.75, 0.75, 0.75;;,
               2000; 3; 0.5 , 0.5 , 0.5 ;;,
               3000; 3; 0.25, 0.25, 0.25;;,
               4000; 3; 0.5 , 0.5 , 0.5 ;;,
               5000; 3; 0.75, 0.75, 0.75;;,
               6000; 3; 1.0 , 1.0 , 1.0 ;;;
              }
              }
            }

               如果要改成平移動畫,則把AnimationSet 改成以下:

            AnimationSet AnimSet0
            {

             
              Animation Anim_Trans
              {
              {CubeFrame}
              AnimationKey
              {
               2; //平移鍵
               6; //六個時間點
               // 時間貞 決定平移需要3個值 x y z
               1000; 3; 0.0, 1.0, 1.0;;,
               2000; 3; 0.0, 2.0, 2.0;;,
               3000; 3; 0.0, 3.0, 3.0;;,
               4000; 3; 0.0, 2.0, 2.0;;,
               5000; 3; 0.0, 1.0, 1.0;;,
               6000; 3; 0.0, 0.0, 0.0;;;
              }
              }
            }

            精品久久久久久无码中文字幕| 91精品国产91久久综合| 久久久WWW免费人成精品| 无码精品久久一区二区三区| 综合久久一区二区三区| 99精品国产在热久久| 99久久精品国产综合一区| 蜜臀久久99精品久久久久久| 性色欲网站人妻丰满中文久久不卡 | 国内精品人妻无码久久久影院| 国产欧美久久一区二区| 婷婷久久五月天| 久久99免费视频| 日韩精品久久无码人妻中文字幕| 成人精品一区二区久久| 久久99国产综合精品女同| 亚洲午夜久久久| 国产精品99久久久久久董美香| 久久久www免费人成精品| 国产精品美女久久久网AV| 久久久久99精品成人片试看| 久久这里的只有是精品23| 精品无码久久久久久久久久| 久久精品国产亚洲av水果派| 久久久久久精品无码人妻| 亚洲欧美日韩精品久久亚洲区| 91久久成人免费| 国产精品一区二区久久精品无码 | 国产精品狼人久久久久影院| 久久夜色精品国产欧美乱| 亚洲精品无码专区久久久| 伊人久久大香线蕉综合影院首页 | 久久综合狠狠综合久久激情 | 大香伊人久久精品一区二区| 久久国产精品免费一区| 国产精品综合久久第一页 | 亚洲AV无码久久精品成人 | 久久久久国产视频电影| 国产精品久久久久久久午夜片 | …久久精品99久久香蕉国产| 久久婷婷成人综合色综合|