查看: 2114|回复: 6

节点跟随

[复制链接]

该用户从未签到

发表于 2010-8-29 18:00:52 | 显示全部楼层 |阅读模式
我用了那个教程(海军教程)原例子,但是没有成功……
郁闷中……
其中matrix=osg::computeLocalToWorld(nv->getNodePath());这一句提示有错,运行能通过,但结果不对。就是把这一句去掉,结果也还是一样
请问一下怎么会事?(我用的是osg 2.8.3,可以吗?)
谁有现成的节点跟随例子,可以让我拜读一下。非常感谢

该用户从未签到

发表于 2010-8-29 19:47:22 | 显示全部楼层
这一句提示有错,运行能通过
这一句提示有什么错误?

要实现节点跟随,只需要根据另一个节点的位置在回调中计算MatrixTransform的变换矩阵就可以了,并不是很复杂的

该用户从未签到

 楼主| 发表于 2010-8-30 08:44:14 | 显示全部楼层
下面是我的main()

int main()
{
        osg::ref_ptr<osgViewer::CompositeViewer> viewer=new osgViewer::CompositeViewer;
        osg::ref_ptr<osgViewer::View> view1=new osgViewer::View;
       
        osg::ref_ptr<osg::Group> group=new osg::Group();
       
        osg::ref_ptr<osg::Node> node=osgDB::readNodeFile("cow.osg");

        group->addChild(node.get());
        transformAccumulator* tankWorldCoords = new transformAccumulator();
        tankWorldCoords->attachToGroup(group.get());

        followNodeMatrixManipulator* followTank =
                new followNodeMatrixManipulator(tankWorldCoords);
        osgGA::KeySwitchMatrixManipulator *ksmm = new osgGA::KeySwitchMatrixManipulator();
        if (!ksmm)
                return -1;
        // 添加跟随坦克的矩阵控制器的。按下“m”键即可实现视口切换到该控制器。
        ksmm->addMatrixManipulator('m',"tankFollower",followTank);
       
        view1->setSceneData(group.get());
       
        view1->setCameraManipulator(ksmm);
       
        viewer->addView(view1);
        viewer->realize();
        viewer->run();
       
        return 0;
}

其它部分都的教程上的。我把
class updateAccumulatedMatrix : public osg::NodeCallback
{
public:
        virtual void operator()(osg::Node* node, osg::NodeVisitor* nv)
        {
                               //这两行注释掉还是一样的效果
                //matrix=osg::computeLocalToWorld(nv->getNodePath());
                //traverse(node,nv);
        }
        osg::Matrix matrix;
};

还想请教一下:
bool transformAccumulator::attachToGroup(osg::Group* g)
这个Group 里面node 一直是空的

该用户从未签到

 楼主| 发表于 2010-8-30 08:49:39 | 显示全部楼层
matrix=osg::computeLocalToWorld(nv->getNodePath());
提示是( computeLocalToWorld  )  :Refactoring not available on symbol.

谢谢

该用户从未签到

 楼主| 发表于 2010-8-30 11:31:25 | 显示全部楼层
main ()写错了

该用户从未签到

发表于 2010-8-30 12:17:22 | 显示全部楼层
Refactoring not available on symbol

我不认为这是一个编译错误,而是您的编程辅助工具(Visual Assist?)没有配置好而已。您的编译错误提示是什么

该用户从未签到

 楼主| 发表于 2010-8-31 11:31:34 | 显示全部楼层
非常感谢array  终于搞定了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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