相關資料:
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)); }