• <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;;;
              }
              }
            }

            欧美777精品久久久久网| 99精品国产免费久久久久久下载| 久久婷婷五月综合色奶水99啪| 97久久国产亚洲精品超碰热| 99久久精品免费观看国产| 一个色综合久久| 青青草国产精品久久久久| 一级做a爰片久久毛片毛片| 成人综合伊人五月婷久久| 色婷婷综合久久久久中文字幕| 成人国内精品久久久久一区 | 亚洲日韩欧美一区久久久久我| 一本一道久久综合狠狠老| 欧美激情精品久久久久| 97精品依人久久久大香线蕉97| 日本福利片国产午夜久久| 色欲av伊人久久大香线蕉影院| 国产99久久久久久免费看| 久久精品人人做人人爽电影蜜月 | 亚洲精品国产综合久久一线| 国产成人精品久久二区二区| 精品国产乱码久久久久久呢| 国产精品久久久福利| 亚洲国产精品无码久久久不卡| 青春久久| 一本综合久久国产二区| 久久久久久亚洲精品无码| 天天综合久久久网| 国产精品99久久99久久久| 精品熟女少妇AV免费久久| 午夜精品久久久久久影视riav| 久久天天日天天操综合伊人av| 国产欧美久久久精品| 亚洲午夜久久影院| 精品久久8x国产免费观看| 久久99精品久久久久久噜噜| 久久精品亚洲精品国产欧美| 思思久久99热免费精品6| 四虎久久影院| 亚洲午夜无码久久久久| 亚洲色欲久久久综合网东京热|