查看: 1865|回复: 3

添加自定义漫游器问题

[复制链接]

该用户从未签到

发表于 2012-9-29 09:54:27 | 显示全部楼层 |阅读模式
本帖最后由 siucan 于 2012-9-29 09:59 编辑

想在程序里添加多个漫游器,但是在添加自定义漫游器时一直有问题,添加的就是OSG三维渲染引擎编程指南里的自定义漫游器。程序void cOSG::InitManipulators(void)
{

        // Create a trackball manipulator
        trackball = new osgGA::TrackballManipulator();

        // Create a Manipulator Switcher
        keyswitchManipulator = new osgGA::KeySwitchMatrixManipulator;

        //自定义漫游器
        TravelManipulator* defined =        TravelManipulator::TravelToScene(mViewer);

        // Add our trackball manipulator to the switcher
        keyswitchManipulator->addMatrixManipulator( '1', "Trackball", trackball.get());//可以添加漫游器,按1,2,3切换
        keyswitchManipulator->addMatrixManipulator( '2', "Fdafd",defined);

        // Init the switcher to the first manipulator (in this case the only manipulator)
        keyswitchManipulator->selectMatrixManipulator(0);  // Zero based index Value       
}
但切换后,自定义漫游器只有左右键可以旋转,前进、后退、上、下的其它功能都不好用。并且在退出程序时报指针错误。如图 QQ截图20120929094745.bmp 这是什么情况???

该用户从未签到

 楼主| 发表于 2012-9-29 10:00:18 | 显示全部楼层
QQ截图20120929094745.bmp

该用户从未签到

发表于 2012-9-29 17:51:49 | 显示全部楼层
你贴这段代码看不出任何问题。。。。肯定是你漫游器写的问题,贴漫游器的关键源代码。。。
还有退出报错的的问题是你指针没有释放完全,强烈建议全部使用超级指针,最忌讳两种指针混用!

该用户从未签到

 楼主| 发表于 2012-11-20 21:01:45 | 显示全部楼层
我明白了,添加自定义的漫游器应该在InitCameraConfig()函数中:
osg::ref_ptr<TravelManipulator> defined =TravelManipulator::TravelToScene(mViewer);
        mViewer->setCameraManipulator(defined.get());
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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