osgAnimation.TemplateCubicBezierInterpolator是OpenSceneGraph中的一个插值器,用于在动画中插值平滑的三次贝塞尔曲线。这是一个模板类,可以用于任何数值类型的属性动画。
template<typename KeyframeValueType>
class TemplateCubicBezierInterpolator : public osgAnimation::Interpolator
#include <osgAnimation/TemplateCubicBezierInterpolator>
构造函数。
TemplateCubicBezierInterpolator()
构造函数。
TemplateCubicBezierInterpolator(
const KeyframeValueType& start,
const KeyframeValueType& middle1,
const KeyframeValueType& middle2,
const KeyframeValueType& end)
设置贝塞尔曲线起点的值。
void setStart(const KeyframeValueType& start)
获取贝塞尔曲线起点的值。
const KeyframeValueType& getStart() const
设置贝塞尔曲线第一个中间点的值。
void setMiddle1(const KeyframeValueType& middle1)
获取贝塞尔曲线第一个中间点的值。
const KeyframeValueType& getMiddle1() const
设置贝塞尔曲线第二个中间点的值。
void setMiddle2(const KeyframeValueType& middle2);
获取贝塞尔曲线第二个中间点的值。
const KeyframeValueType& getMiddle2() const
设置贝塞尔曲线终点的值。
void setEnd(const KeyframeValueType& end)
获取贝塞尔曲线终点的值。
const KeyframeValueType& getEnd() const
插值函数。
virtual void interpolate(
double ratio,
const KeyframeValueType& startValue,
const KeyframeValueType& endValue,
KeyframeValueType& outValue) const
osg::ref_ptr<osgAnimation::TemplateCubicBezierInterpolator<float> > interpolator =
new osgAnimation::TemplateCubicBezierInterpolator<float>(
0.0f, 0.0f, 1.0f, 1.0f);
float ratio = 0.5;
float startValue = 0.0f;
float endValue = 1.0f;
float outValue;
interpolator->interpolate(ratio, startValue, endValue, outValue);