osgAnimation.StackedTransformElement是OpenSceneGraph的osgAnimation库中的一个类,它是一个带有层叠变换的节点,可以被添加到场景图中。StackedTransformElement组织了许多osgAnimation库中的动画属性,使其可以被应用于节点的变换中。
osg::Referenced
— osgAnimation::StackedElement
— osgAnimation::StackedTransformElement
StackedTransformElement(const std::string& name = "");
构造一个名字为name的StackedTransformElement对象。
virtual unsigned int addMove(const osg::Vec3f& translate, osgAnimation::Interpolator* interpolator = nullptr);
添加移动动画。translate指定要移动的距离,并使用动画进行处理。interpolator参数是一个可选的差值器对象,用于设定移动过渡时使用的插值方式。该函数返回一个非负整数,是添加的动画的ID。
virtual unsigned int addRotate(const osg::Quat& rotation, osgAnimation::Interpolator* interpolator = nullptr);
添加旋转动画。rotation参数指定旋转的角度与轴。interpolator参数是一个可选的差值器对象,用于设定旋转过渡时使用的插值方式。该函数返回一个非负整数,是添加的动画的ID。
virtual unsigned int addScale(const osg::Vec3f& scale, osgAnimation::Interpolator* interpolator = nullptr);
添加缩放动画。scale参数指定沿每个轴上的缩放因子。interpolator参数是一个可选的差值器对象,用于设定缩放过渡时使用的插值方式。该函数返回一个非负整数,是添加的动画的ID。
virtual unsigned int addPivot(const osg::Vec3f& pivot, osgAnimation::Interpolator* interpolator = nullptr);
添加旋转中心动画。pivot参数指定旋转中心的坐标。interpolator参数是一个可选的差值器对象,用于设定旋转中心过渡时使用的插值方式。该函数返回一个非负整数,是添加的动画的ID。
virtual void update(unsigned int mask = 0xffffffff);
使用StackedTransformElement中的动画属性更新节点的变换。mask参数指定哪些动画需要被更新。节点的变换将与加过的动画属性相结合。
void reset();
将节点归零为原始状态。移动、旋转、缩放和旋转中心动画都将被清除。
const osg::Vec3f& getPivot() const;
获取节点的旋转中心。
void setPivot(const osg::Vec3f& pivot);
设置节点的旋转中心。
void setMatrix(const osg::Matrixf& matrix);
设置节点的变换矩阵。
osg::Matrixf getMatrix() const;
获取节点的变换矩阵。
virtual std::string getName() const;
获取节点的名称。
virtual osgAnimation::StackedTransformElement* asStackedTransform();
将该StackedTransformElement对象转换为osgAnimation::StackedTransformElement指针。
virtual osgAnimation::StackedMatrixElement* asStackedMatrix();
将该StackedTransformElement对象转换为osgAnimation::StackedMatrixElement指针。
osgAnimation::FloatKeyframeContainer* getOrCreateFloatKeyframeContainer(unsigned int id) const;
获取当前动画的FloatKeyframeContainer。
bool hasKeyframeContainer(unsigned int id) const;
检查动画是否具有FloatKeyframeContainer。
void removeAnimationAtIndex(unsigned int i);
在指定索引处删除动画。
void setName(const std::string& name);
设置节点的名称。
osg::ref_ptr<osg::PositionAttitudeTransform> pat = new osg::PositionAttitudeTransform;
osg::ref_ptr<osgAnimation::StackedTransformElement> ste = new osgAnimation::StackedTransformElement();
pat->setUpdateCallback(new osgAnimation::StackedTranslateElementUpdateCallback(ste));