OSG-修改osg鼠標中輪放大縮小的操作鍵


相關資料:

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));    
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM