相关资料:
https://blog.csdn.net/yang_sen_/article/details/84328233
原文:
EarthManipulator默认的操作是向里滚动,地球远了,向外滚动,地球进了。 我不太习惯这种操作,我个人认为向里滚动,地球近了,向外滚动,地球远了。 查找了一下EarthManipulator的源码,在初始化的时候简单修改一下。 _scroll_sens ( 1.0 ) 1 将1.0改为-1.0即可。 _scroll_sens ( -1.0 ) 1 按道理来说,_scroll_sens为1.0是合理的,我们可以使用另外一种方法: 在这里插入图片描述 // zoom with the scroll wheel: // _settings->bindScroll(ACTION_ZOOM_IN, osgGA::GUIEventAdapter::SCROLL_DOWN); // _settiong->bindScroll(ACTION_ZOOM_OUT, osgGA::GUIEventAdapter::SCROLL_UP); // 向里滚动放大视图, 向外滚动缩小视图 _settings->bindScroll(ACTION_ZOOM_IN, osgGA::GUIEventAdapter::SCROLL_up); _settiong->bindScroll(ACTION_ZOOM_OUT, osgGA::GUIEventAdapter::SCROLL_DOWN); 查看源码发现,ACTION_ZOOM_IN配置的是SCROLL_DOWN,ACTION_ZOOM_OUT配置的是SCROLL_UP。 注释的代码是系统原有的。我们将ACTION_ZOOM_IN配置SCROLL_UP,ACTION_ZOOM_OUT配置为SCROLL_DOWN即可。
我的用法是修改了QT提供的osgQOpenGL库
void OSGRenderer::wheelEvent(QWheelEvent* event) { setKeyboardModifiers(event); m_osgWinEmb->getEventQueue()->mouseMotion(event->x() * m_windowScale, event->y() * m_windowScale); m_osgWinEmb->getEventQueue()->mouseSceoll( event->orientation() == Qt::Vertical ? (event->delta() > 0 ? osgGA::GUIEventAdapter::SCROLL_DOWN : // 修改处 osgGA::GUIEventAdapter::SCROLL_UP): // 修改处 (event->delta() > 0 ? osgGA::GUIEventAdapter::SCROLL_LEFT : osgGA::GUIEventAdapter::SCROLL_RIGHT)); }