|
我之前发了个帖子可能问题 问的不太明确 我把代码整理了出来
我用osg::HeightField做了个地形模型,当我用鼠标旋转这个模型时要实时获取旋转过程中的地形模型姿态 代码如下
double angle=0.0;//全局变量
osg::Vec3 axis; //全局变量
bool handle(const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdapter& aa) {
osg::ref_ptr < osgViewer::Viewer > viewer =
dynamic_cast<osgViewer::Viewer*> (&aa);
osg::ref_ptr < osg:ositionAttitudeTransform > mt
= dynamic_cast<osg::PositionAttitudeTransform*> (viewer->getSceneData());
if (ea.getEventType() == osgGA::GUIEventAdapter::PUSH) {
if (ea.getButton() == 1) {
mt->getAttitude().getRotate(angle,axis);
cout<<angle<<endl;
}
}
主函数:
osg::ref_ptr <osg::PositionAttitudeTransform> position_heightmap = new osg::PositionAttitudeTransform();
position_heightmap->addChild(node.get());
position_heightmap->setEventCallback(new GetpositionCallback());
viewer->setSceneData(position_heightmap.get());
viewer_run();
按鼠标左键输出angle始终是0 无法做到用鼠标旋转模型实时获取模型的姿态 改怎么解决这个问题 |
|