<span style="font-size: 14px; font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">今天试验了一下OSG的回调函数和几个旋转平移函数,用于实时更新节点状态;</span>
首先回调函数要用到osg中的回调函数类osg::NodeCallBack。我们要重写回调类中的operator()虚函数来实现功能。
同时我们需要在osg::Node类中使用setUpdateCallback()函数来将回调类添加到场景中去。
下面我们实现一个模型旋转的动画。首先我们要重写回调类。
class RotateCallBack: public osg::NodeCallback
{
public:
RotateCallBack():m_rotate(0.0){}
virtual void operator()(osg::Node *node,osg::NodeVisitor *viewer)
{
osg::PositionAttitudeTransform *p_transform = dynamic_cast<osg::PositionAttitudeTransform*>(node);//向下转型
osg::Quat p_Quat(osg::DegreesToRadians(m_rotate),osg::Z_AXIS);//Z_AXIS是指Z轴的单位向量
p_transform->