到此为止,我们离制作动画就只有一步之遥了。我们在前面做的立方体的基础上添加一个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 改成以下: