查看: 1609|回复: 5

COOKBook 那本书

[复制链接]

该用户从未签到

发表于 2013-4-16 22:59:16 | 显示全部楼层 |阅读模式
COOKBook 那本书里的osg+physics的例子,我想加个节点更新回调,让场景中的节点运动,不行啊,是不是应该放在void PhysXInterface::simulate( double step )
{
        _scene->simulate( step );
        _scene->flushStream();
        _scene->fetchResults( NX_RIGID_BODY_FINISHED, false );
}里呢

该用户从未签到

 楼主| 发表于 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);
        }
};

该用户从未签到

 楼主| 发表于 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);
        }
};

该用户从未签到

发表于 2013-4-17 07:45:08 | 显示全部楼层
可以每一帧进行一次物理计算,然后各个节点的update获取计算结果更新自己的matrix

该用户从未签到

 楼主| 发表于 2013-4-17 09:49:32 | 显示全部楼层
liuzhiyu123 发表于 2013-4-17 07:45
可以每一帧进行一次物理计算,然后各个节点的update获取计算结果更新自己的matrix

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

该用户从未签到

发表于 2013-4-17 09:51:43 | 显示全部楼层
什么不能调用?physics里有相关的更新回调内容 跟node的更新有什么关系?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表