osgAnimation.UpdateMatrixTransform
是指一个OpenSceneGraph的节点更新器,可自动更新节点的矩阵变换。该节点更新器是 osg::NodeCallback
的一种实现。
osg::MatrixTransform
通常需要手动更新其矩阵的变换。但是,如果节点更新器 osgAnimation.UpdateMatrixTransform
被设置为矩阵变换节点的回调函数,它将自动计算矩阵并更新变换,从而让开发者从矩阵变换的更新逻辑中解放出来。
以下是一个简单的示例程序,展示了如何在 osg::MatrixTransform
节点上使用 osgAnimation.UpdateMatrixTransform
。
#include <osg/Animation>
#include <osg/MatrixTransform>
#include <osgDB/ReadFile>
int main()
{
osg::ref_ptr<osg::Node> model = osgDB::readNodeFile("myModel.osg");
osg::ref_ptr<osg::MatrixTransform> transform = new osg::MatrixTransform;
// 设置矩阵变换节点的回调函数为 osgAnimation.UpdateMatrixTransform
transform->setUpdateCallback(new osgAnimation::UpdateMatrixTransform());
// 将读取的模型节点添加到矩阵变换节点下
transform->addChild(model.get());
// ...
}
osgAnimation.UpdateMatrixTransform
osgAnimation.UpdateMatrixTransform
的定义如下:
class UpdateMatrixTransform : public osg::NodeCallback {
public:
UpdateMatrixTransform();
UpdateMatrixTransform(const UpdateMatrixTransform& copy, const osg::CopyOp& copyop=osg::CopyOp::SHALLOW_COPY);
META_Object(osgAnimation,UpdateMatrixTransform)
virtual void operator()(osg::Node* node, osg::NodeVisitor* nv);
};
UpdateMatrixTransform()
默认构造函数。
UpdateMatrixTransform(const UpdateMatrixTransform& copy, const osg::CopyOp& copyop=osg::CopyOp::SHALLOW_COPY)
构造函数。
operator()(osg::Node* node, osg::NodeVisitor* nv)
节点回调函数。在每帧更新时被调用。
node
:节点指针
nv
:节点遍历器指针