|
不好意思,又来打扰各位了 ,问题描述如下:
我自己自定义了一个漫游器,从osgGA::MatrixManipulator中派生而来,自己仿照FreeSouth的例子写完了这个漫游器(CTravelManipulator类)后,发现camera的初始化并不符合我实际的要求,因此我对这个类的构造函数进行了一下修改,改动部分如下:
- CTravelManipulator::CTravelManipulator(osgViewer::Viewer* currentViewer):m_fMoveSpeed(1.5f)
- ,m_fAngle(2.5f)
- {
- m_vPosition = osg::Vec3(0.0f, 0.0f,5.0f);//初始位置
- m_vRotation = osg::Vec3(osg::PI_2, 0.0f, 0.0f); //初始角度
- m_viewer = currentViewer;//将main函数中的viewer传入
- m_viewer->getCamera()->setViewMatrixAsLookAt(osg::Vec3d(0.0f,0.0f,30.0f),osg::Vec3d(50.0f,0.0f,30.0f),osg::Vec3d(0.0f,0.0f,1.0f));//根据我的需要初始化camera
- }
复制代码
main函数中的情况是:
- root->addChild(node);
- viewer->setSceneData(root);
- viewer->setCameraManipulator(new CTravelManipulator(viewer)) ;
复制代码
我预期的目标是,当我在main函数中将viewer传入给这个漫游器类进行构造时,在构造函数中可以将camera按照我的需要进行重新设定。
不过,运行的效果与未作改动之前一样,感觉camera还是在(0,0,0),向Y轴的负方向看的~~(不过不设置的话这个应该是初始状况吧,惶恐不对。。)
不知道这是什么原因导致的呢?
附注:
我也做了如下实验:
在漫游器类的构造函数中并不改变camera的设置,而是在main函数中设置,发现这样的效果还是没有改变,代码如下:
- root->addChild(node);
- viewer->setSceneData(root);
- viewer->setCameraManipulator(new CTravelManipulator(viewer)) ;
- viewer->getCamera()->setViewMatrixAsLookAt(osg::Vec3d(0.0f,0.0f,30.0f),osg::Vec3d(50.0f,0.0f,30.0f),osg::Vec3d(0.0f,0.0f,1.0f));
复制代码
麻烦各位了~~~~ |
|