diff --git a/src/osgViewer/CompositeViewer.cpp b/src/osgViewer/CompositeViewer.cpp index 39eb98b38..0d490ef6c 100644 --- a/src/osgViewer/CompositeViewer.cpp +++ b/src/osgViewer/CompositeViewer.cpp @@ -747,10 +747,19 @@ void CompositeViewer::generateSlavePointerData(osg::Camera* camera, osgGA::GUIEv bool invert_y = event.getMouseYOrientation()==osgGA::GUIEventAdapter::Y_INCREASING_DOWNWARDS; if (invert_y && gw->getTraits()) y = gw->getTraits()->height - y; + double master_min_x = -1.0; + double master_max_x = 1.0; + double master_min_y = -1.0; + double master_max_y = 1.0; + osg::Matrix masterCameraVPW = view_masterCamera->getViewMatrix() * view_masterCamera->getProjectionMatrix(); if (view_masterCamera->getViewport()) { osg::Viewport* viewport = view_masterCamera->getViewport(); + master_min_x = viewport->x(); + master_min_y = viewport->y(); + master_max_x = viewport->x()+viewport->width(); + master_max_y = viewport->y()+viewport->height(); masterCameraVPW *= viewport->computeWindowMatrix(); } @@ -767,8 +776,8 @@ void CompositeViewer::generateSlavePointerData(osg::Camera* camera, osgGA::GUIEv osg::Matrix matrix( osg::Matrix::inverse(localCameraVPW) * masterCameraVPW ); osg::Vec3d new_coord = osg::Vec3d(x,y,0.0) * matrix; //OSG_NOTICE<<" pointer event new_coord.x()="<