该例子演示了渐变动画。
应用osgAnimation::Animation库
这个库是专门的动画库,里面有几个关键的概念:
KeyFrame关键帧,记录一个运动中指定时间的几个关键的值,根据这几个值其他的时间就可以进行插值运算。
由于关键帧值的类型不确定,可以是值、点、旋转等等等等,因此class TemplateKeyframe : public Keyframe实现一个模板类,用于不同类型关键帧的值。
FloatKeyframe
DoubleKeyframe
Vec2Keyframe
Vec3Keyframe
Vec4Keyframe
QuatKeyframe
MatrixKeyframe
Vec3PackedKeyframe
FloatCubicBezierKeyframe
DoubleCubicBezierKeyframe
Vec2CubicBezierKeyframe
Vec3CubicBezierKeyframe
Vec4CubicBezierKeyframe
有了关键帧,就应该有包含关键帧的容器
KeyframeContainer,同样,通过模板定义一个不同类型的关键帧容器class TemplateKeyframeContainer : public std::vector<TemplateKeyframe<T> >, public KeyframeContainer
继承了std::vector因此具有了容器的功能。
上面说到了通过关键帧进行插值,因此,应该有一个插值器,根据关键帧的类型可以进行指定算法的插值。
Interpolator中的TemplateInterpolatorBase插值器
应用osgAnimation::Animation库
这个库是专门的动画库,里面有几个关键的概念:
KeyFrame关键帧,记录一个运动中指定时间的几个关键的值,根据这几个值其他的时间就可以进行插值运算。
由于关键帧值的类型不确定,可以是值、点、旋转等等等等,因此class TemplateKeyframe : public Keyframe实现一个模板类,用于不同类型关键帧的值。
FloatKeyframe
DoubleKeyframe
Vec2Keyframe
Vec3Keyframe
Vec4Keyframe
QuatKeyframe
MatrixKeyframe
Vec3PackedKeyframe
FloatCubicBezierKeyframe
DoubleCubicBezierKeyframe
Vec2CubicBezierKeyframe
Vec3CubicBezierKeyframe
Vec4CubicBezierKeyframe
有了关键帧,就应该有包含关键帧的容器
KeyframeContainer,同样,通过模板定义一个不同类型的关键帧容器class TemplateKeyframeContainer : public std::vector<TemplateKeyframe<T> >, public KeyframeContainer
继承了std::vector因此具有了容器的功能。
上面说到了通过关键帧进行插值,因此,应该有一个插值器,根据关键帧的类型可以进行指定算法的插值。
Interpolator中的TemplateInterpolatorBase插值器