Hi Robert,

thank you for have interest for my previous post, I'll try the latest svn
version as soon as possible.


2009/5/21 Robert Osfield <robert.osfi...@gmail.com>

> HI Alexandre,
>
> I've now had a chance to have a look at the reproducing the problems
> using your modified example and data.   The problem was due to a
> double scaling of the projection matrices due to the unusual
> combination of having an active master and slave combination, and
> while the usage case in not really what osgViewer was designed for
> it's still a bug.
>
> The solution to this bug was applying the inverse of the master's
> rescaling to the slave's projection offset.   I applied this solution
> and tested against your modified osgwindows example and it now behaves
> fine, with the two cameras staying in sync.  This fix is now checked
> into svn/trunk.
>
> Robert.
>
> On Fri, May 15, 2009 at 9:55 AM, Alexandre Amalric
> <alex.pix...@gmail.com> wrote:
> > Hi osg-users,
> >
> > I apparently found something strange when adding slave camera to osg
> viewer
> > and resizing window.
> >
> > I'm using osg SVN version
> >
> > I made a quick sample code to show community the weird behaviour.
> >
> > Quick explanation : My goal is to render an object made from 2 cubes
> (same
> > size), one is opaque and the other one is transparent. The first main
> camera
> > render only the opaque part, and the second camera (a slave one) render
> the
> > transparent part. When resizing the window the projection matrix isn't
> well
> > computed for the slave camera.
> >
> > So the transparent cube isn't the same aspect as the opaque cube.
> >
> > I think I found the bug in GraphicsContext.cpp file at :
> >
> > if (slave && camera->getReferenceFrame()==osg::Transform::RELATIVE_RF)
> >             {
> >                 switch(view->getCamera()->getProjectionResizePolicy())
> >                 {
> >                     case(osg::Camera::HORIZONTAL):
> slave->_projectionOffset
> > *= osg::Matrix::scale(1.0/aspectRatioChange,1.0,1.0); break;
> >                     case(osg::Camera::VERTICAL): slave->_projectionOffset
> *=
> > osg::Matrix::scale(1.0, aspectRatioChange,1.0); break;
> >                     default: break;
> >                 }
> >             }
> >
> > I do not understand why we only update the projectionOffset  from the
> slave
> > camera and why we don't update the projection matrix itself.
> >
> > Hope you'll understand my problem ;-)
> >
> > --
> > Alexandre AMALRIC                   Ingénieur R&D
> > ===================================
> > PIXXIM S.A. 73E, rue Perrin-Solliers 13006 Marseille
> > http://www.pixxim.fr
> >
> > _______________________________________________
> > osg-users mailing list
> > osg-users@lists.openscenegraph.org
> >
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
> >
> >
> _______________________________________________
> osg-users mailing list
> osg-users@lists.openscenegraph.org
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>



-- 
Alexandre AMALRIC                   Ingénieur R&D
===================================
PIXXIM S.A. 73E, rue Perrin-Solliers 13006 Marseille
http://www.pixxim.fr
_______________________________________________
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to