• <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 閱讀(490) 評論(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;;;
              }
              }
            }

            久久夜色精品国产噜噜噜亚洲AV | 久久久久久伊人高潮影院| 久久夜色精品国产噜噜噜亚洲AV | 久久精品无码一区二区无码| 久久国产精品无| 少妇久久久久久被弄高潮| 欧美日韩中文字幕久久久不卡| 无码人妻久久一区二区三区蜜桃| 综合久久一区二区三区| 久久久亚洲裙底偷窥综合| 久久91精品久久91综合| 天天久久狠狠色综合| 久久婷婷五月综合成人D啪| 69久久夜色精品国产69| 久久精品国产免费观看三人同眠| 色婷婷久久久SWAG精品| 97久久精品午夜一区二区| 欧洲人妻丰满av无码久久不卡| 久久国产精品偷99| 久久综合九色综合久99| 久久婷婷国产综合精品| 久久99亚洲网美利坚合众国| 亚洲中文字幕久久精品无码APP | 人妻精品久久无码区| 国产精品99久久久久久宅男小说| 一本久久综合亚洲鲁鲁五月天亚洲欧美一区二区 | 久久精品卫校国产小美女| 久久精品女人天堂AV麻| 2021国内久久精品| 伊人久久大香线蕉AV色婷婷色| 色综合久久综精品| 精品无码久久久久久国产| 亚洲国产精品无码久久一线| 2021国内久久精品| 亚洲国产另类久久久精品| 国产三级久久久精品麻豆三级| …久久精品99久久香蕉国产| 久久综合狠狠色综合伊人| 久久精品国产亚洲AV无码娇色| 国产精品嫩草影院久久| 久久这里有精品|