osgQt::GLWidget Scroll Bug

28 views
Skip to first unread message

Scott Shaw

unread,
Feb 13, 2020, 2:58:17 AM2/13/20
to OpenSceneGraph Users
I think I'm running into a bug in OSG.  I've implemented my own versions of mouse events in a sub-classed osgQt::GLWidget so I can redraw the 3D view only when necessary:

void Osg3dViewCM::mousePressEvent(QMouseEvent* event)
{
    m_mouseDown = true;

    if (_cameraManipulator.valid())
    {
        osgQt::GLWidget::mousePressEvent(event);

        frame();
    }
}

void Osg3dViewCM::mouseReleaseEvent(QMouseEvent* event)
{
    m_mouseDown = false;

    if (_cameraManipulator.valid())
    {
        osgQt::GLWidget::mouseReleaseEvent(event);

        frame();
    }

    emit cameraChanged(_cameraManipulator->getInverseMatrix());
}

void Osg3dViewCM::mouseMoveEvent(QMouseEvent* event)
{
    if (_cameraManipulator.valid() && m_mouseDown)
    {
        osgQt::GLWidget::mouseMoveEvent(event);

        frame();
    }
}

void Osg3dViewCM::wheelEvent(QWheelEvent *event)
{
    if (_cameraManipulator.valid())
    {
        osgQt::GLWidget::wheelEvent(event);

        frame();
    }
}

I'm using a default osgEarth::Util::EarthManipulator and clicking and dragging on the view updates it without an issue rotating or panning properly.  For some reason, when I scroll the wheel, the frame function doesn't update the view.  If I click on the view after scrolling, it gets updated with the zoom operation applied.  Am I missing something?

Thank you,
Scott

Robert Osfield

unread,
Feb 17, 2020, 1:07:59 PM2/17/20
to OpenSceneGraph Users
Hi Scott,

I don't know where the issue lies, but most likely it's in the windowing integration side rather than the core OSG as it doesn't look like you'll be relying on any of the OSG's native windowing/event handling.  There might be an issue with osgQt, but I'm not the author of maintainer for it so will have to defer to others on this.  Or it could be an issue with osgEarth.

The best I can suggest is that you build the OSG, osgEarth, osgQt and your application in debug mode, then step through the code in a debugger to see where the control flow passes when the wheelEvent happens.

Cheers,
Robert.

Scott Shaw

unread,
Feb 18, 2020, 9:00:24 AM2/18/20
to OpenSceneGraph Users
Thanks for your reply Robert.  I did end up stepping through and turns out it is an issue with the EarthManipulator setting a duration for the viewpoint change.  I'll post on the osgEarth forum.

Thanks again,
Scott
Reply all
Reply to author
Forward
0 new messages