zoukankan      html  css  js  c++  java
  • 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));    
    }
  • 相关阅读:
    tryparse的用法,^0*[1-9]d*$
    寻找指定的进程然后杀死的代码写法
    P2421 [NOI2002]荒岛野人
    P2568 GCD
    P1445 [Violet]樱花
    P3119 [USACO15JAN]草鉴定Grass Cownoisseur
    P1314 聪明的质监员
    P3811 【模板】乘法逆元
    P3943 星空
    P3225 [HNOI2012]矿场搭建
  • 原文地址:https://www.cnblogs.com/FKdelphi/p/14003617.html
Copyright © 2011-2022 走看看