osgAnimation.UpdateBone
类是OpenSceneGraph中用于骨骼动画更新的类。它继承自osgAnimation.AnimationUpdateCallback
,并重载了其中的update
函数,用于更新骨骼动画。
以下是osgAnimation.UpdateBone
的成员函数:
UpdateBone(const std::string& bonename)
构造函数,用于创建一个UpdateBone
对象,并指定所要更新的骨骼名称。
bonename
:要更新的骨骼名称。UpdateBone(const UpdateBone& ub, const osg::CopyOp& copyop = osg::CopyOp::SHALLOW_COPY)
复制构造函数,用于创建一个UpdateBone
对象的副本。
ub
:要复制的UpdateBone
对象。copyop
:拷贝选项。osg::Object* cloneType() const
返回当前对象类型的实例对象,用于在复制对象时创建新的实例。
osg::Object* clone(const osg::CopyOp& copyop) const
创建当前对象的一个副本,并返回其实例对象。
copyop
:拷贝选项。void setBone(const std::string& bonename)
设置要更新的骨骼名称。
bonename
:要更新的骨骼名称。const std::string& getBone() const
返回当前要更新的骨骼名称。
virtual void update(osg::NodeVisitor* nv, osg::Drawable* drawable = NULL)
更新骨骼动画。
nv
:用于访问场景图节点的节点访问器。drawable
:绘制对象,通常为NULL。以下是一个使用osgAnimation.UpdateBone
的示例代码:
osg::ref_ptr<osgAnimation::Skeleton> skeleton = new osgAnimation::Skeleton;
skeleton->setName("skeleton");
osg::MatrixTransform* bone1 = new osg::MatrixTransform;
bone1->setName("bone1");
skeleton->addChild(bone1);
osg::MatrixTransform* bone2 = new osg::MatrixTransform;
bone2->setName("bone2");
skeleton->addChild(bone2);
osgAnimation::UpdateBone* updateBone = new osgAnimation::UpdateBone("bone1");
// 设置动画数据...
bone1->setUpdateCallback(updateBone);
viewer.setSceneData(skeleton);
viewer.realize();
while(!viewer.done())
{
viewer.frame();
}