到此為止,我們離制作動畫就只有一步之遙了。我們在前面做的立方體的基礎上添加一個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即可,
上面實現的是旋轉動畫,如果我們要實現縮放動畫,則可以把AnimationSet 改成以下內容即可:
如果要改成平移動畫,則把AnimationSet 改成以下: