Hello:

I am trying to move a vehicle on scene by means of an update callback. It
should be a realistic simulation, and I want the vehicle to move, for
instance, at a constant velocity of 5 m/s.
The callback function I have written has the following aspect:

osg::Matrix mT, dmT;  // global variables containing the current and
differential translations of the vehicle
class myUpdateCallback : public osg::NodeCallback {
public:
    myUpdateCallback() {
        vehSpeed=5/3.6;  // 5 km/h in m/s
        tLast=0.;
    }
    virtual void operator()( osg::Node* node, osg::NodeVisitor* nv ) {
        osg::MatrixTransform* mTransf = dynamic_cast<osg::MatrixTransform*>(
node );

        double t = osg::Timer::instance()->time_m()/1000;
        double dt=t-tLast;
        dmT.makeTranslate( vehSpeed*dt, 0., 0. );
        mT=mT*dmT;
        tLast=t;

        mTransf->setMatrix( mT );
        traverse( node, nv );
    }
protected:
    double tLast;
    double vehSpeed;
};

The thing is that the resulting movement is not smooth, it has
discontinuities like little "jumps". I think this can be related with the
frequency the program performs the callback (around 62 Hz), but I don't know
how to solve it.
Thank you in advance for your help.
Fusu
_______________________________________________
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to