Thank you Robert for the explanation.

Please don't blame me if I have a couple of questions.

First of all, debugging the updateTraversal() implementation it seems the 
AxesCameraUpdateCallback is called twice: one in

scene->updateSceneGraph(*_updateVisitor);

and the second time in

camera->accept(*_updateVisitor);

I guess this is an expected behavior.

Second, you say "The master Camera's value can depend upon values in the scene 
graph". But isn't the scene updated in updateSceneGraph call? While the slave 
cameras are updated in a couple of following for loops? I mean, couldn't the 
main camera view matrix be updated, I agree after the updateSceneGraph() call, 
but before the slave cameras? Or at least move the slave cameras with 
"_useMastersSceneData=false" after the main camera? Something like:

Code:

        if (view->getCameraManipulator())
        {
            view->setFusionDistance( 
view->getCameraManipulator()->getFusionDistanceMode(),
                                    
view->getCameraManipulator()->getFusionDistanceValue() );

            view->getCamera()->setViewMatrix( 
view->getCameraManipulator()->getInverseMatrix());
        }

         // Do UpdateTraversal for slaves with their own subgraph
         for(unsigned int i=0; i<view->getNumSlaves(); ++i)
         {
               osg::View::Slave& slave = view->getSlave(i);
               osg::Camera* camera = slave._camera.get();
               if(camera && !slave._useMastersSceneData)
               {
                  camera->accept(*_updateVisitor);
               }
         }

        view->updateSlaves();




Regards,
Gianni

------------------
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=64631#64631





_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to