查看: 1488|回复: 6

动态旋转的问题。。

[复制链接]

该用户从未签到

发表于 2009-8-11 14:18:26 | 显示全部楼层 |阅读模式
#include <osgDB/ReadFile>
#include <osgViewer/Viewer>
#include <osg/Node>
#include <osg/MatrixTransform>
class RotateCallback: public osg::NodeCallback {
public:
    RotateCallback(): osg::NodeCallback(), enabled_(true) {}
    void operator()(osg::Node* node, osg::NodeVisitor *nv)
    {
        osg::MatrixTransform *xform = dynamic_cast<osg::MatrixTransform *>(node);
        if (xform && enabled_) {
            double t = nv->getFrameStamp()->getSimulationTime();
            xform->setMatrix(osg::Matrix::rotate(t, osg::Vec3(0, 0, 1)));
        }
        traverse(node, nv);
    }
    bool enabled_;
};

RotateCallback *rotate_cb;

void main()
{
        osgViewer::Viewer viewer;
        osg::ref_ptr<osg::Node> node = new osg::Node;
        node = osgDB::readNodeFile("cow.osg");

    osg::ref_ptr<osg::MatrixTransform> xform = new osg::MatrixTransform;
    rotate_cb = new RotateCallback;
    xform->setUpdateCallback(rotate_cb);
    xform->addChild(node.get());

        viewer.setSceneData(node.get());
        viewer.realize();
        viewer.run();

}
哪里写的不对呀  为啥那头牛不转呀。。

该用户从未签到

发表于 2009-8-11 14:52:44 | 显示全部楼层
viewer.setSceneData(node.get()); ---------> viewer.setSceneData(xform.get());

该用户从未签到

发表于 2009-8-11 15:15:04 | 显示全部楼层
楼上的分析应该是正确的

该用户从未签到

 楼主| 发表于 2009-8-11 16:18:06 | 显示全部楼层
这个弄出来了。。。好多函数不熟悉

该用户从未签到

 楼主| 发表于 2009-8-11 16:19:10 | 显示全部楼层
怎么让这头牛围绕自己的中心点旋转 ????

该用户从未签到

 楼主| 发表于 2009-8-11 16:21:34 | 显示全部楼层

该用户从未签到

 楼主| 发表于 2009-8-11 16:43:15 | 显示全部楼层
出来了 。。对opengl的了解不多。。好多函数没见过
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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