xupeng1001 发表于 2013-4-16 22:59:16

COOKBook 那本书

COOKBook 那本书里的osg+physics的例子,我想加个节点更新回调,让场景中的节点运动,不行啊,是不是应该放在void PhysXInterface::simulate( double step )
{
        _scene->simulate( step );
        _scene->flushStream();
        _scene->fetchResults( NX_RIGID_BODY_FINISHED, false );
}里呢

xupeng1001 发表于 2013-4-16 23:00:18

class RotateCB:public osg::NodeCallback
{
public:
        RotateCB(){}
        virtual void operator()(osg::Node* node, osg::NodeVisitor* nv)
        {
                osg::MatrixTransform* mtLeft = dynamic_cast<osg::MatrixTransform*>(node);
                osg::Matrix mR, mT;
                mT.makeTranslate(-2., 0., 0.);
                mR.makeRotate(angle, osg::Vec3(0., 0., 1.));
                mtLeft->setMatrix(mR * mT);
                traverse(node, nv);
        }
};

xupeng1001 发表于 2013-4-16 23:00:24

class RotateCB:public osg::NodeCallback
{
public:
        RotateCB(){}
        virtual void operator()(osg::Node* node, osg::NodeVisitor* nv)
        {
                osg::MatrixTransform* mtLeft = dynamic_cast<osg::MatrixTransform*>(node);
                osg::Matrix mR, mT;
                mT.makeTranslate(-2., 0., 0.);
                mR.makeRotate(angle, osg::Vec3(0., 0., 1.));
                mtLeft->setMatrix(mR * mT);
                traverse(node, nv);
        }
};

liuzhiyu123 发表于 2013-4-17 07:45:08

可以每一帧进行一次物理计算,然后各个节点的update获取计算结果更新自己的matrix

xupeng1001 发表于 2013-4-17 09:49:32

liuzhiyu123 发表于 2013-4-17 07:45 static/image/common/back.gif
可以每一帧进行一次物理计算,然后各个节点的update获取计算结果更新自己的matrix

这个更新 放在更新回调里么,好像setUpcallBack不能用啊,貌似physics里有相关的更新回调内容,所以setUpcallBack不起作用了

liuzhiyu123 发表于 2013-4-17 09:51:43

什么不能调用?physics里有相关的更新回调内容 跟node的更新有什么关系?
页: [1]
查看完整版本: COOKBook 那本书