[osg-users] osgQt::GLWidget Scroll Bug

OpenSceneGraph Users osg-users at lists.openscenegraph.org
Tue Feb 18 06:00:24 PST 2020


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

On Monday, February 17, 2020 at 1:07:59 PM UTC-5, Robert Osfield wrote:
>
> 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.
>
> On Thursday, 13 February 2020 07:58:17 UTC, Scott Shaw wrote:
>>
>> 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
>>
>

-- 
You received this message because you are subscribed to the Google Groups "OpenSceneGraph Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to osg-users+unsubscribe at googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/osg-users/40569c26-d8a0-4472-9547-bce50a5492f7%40googlegroups.com.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openscenegraph.org/pipermail/osg-users-openscenegraph.org/attachments/20200218/8a47dca0/attachment.html>


More information about the osg-users mailing list