//DEMO19
//功能:自己定义一个NodeCallBack派生的类,完成一个对Transform的node的改变,然后完成的
// 功能是让Transform下的一个模型来回动
#include <osgViewer/Viewer>
#include <osg/Math>
#include <osgDB/ReadFile>
#include <osg/NodeCallBack>
#include <osg/MatrixTransform>
//申请一个雷,从NodeCallBack下派生而来
class MyTransformCallback:public osg::NodeCallback
{
public:
//构造函数,传入一个角度,这个角度为计算移动值的,移动的原理是,每一次时间变化乘以这个角度的量纲
MyTransformCallback(float angularVelocity)
{
m_angularVelocity = angularVelocity;
}
//nodevisitor可以判断出那个是需要的点
virtual void operator() (osg::Node* node,osg::NodeVisitor* nv)
{
//验证得到的结点是不是MatrixTransform
osg::MatrixTransform* transform = dynamic_cast<osg::MatrixTransform*>(node);
//如果是的
if(nv && transform && nv->getFrameStamp())
{
double time = nv->getFrameStamp()->getReferenceTime();
transform->setMatrix(osg::Matrix::translate(0.0f,1.0f
osg demo19 回调,使一个node来回动
最新推荐文章于 2022-11-02 11:02:07 发布