<div dir="ltr"><div><div>Hi Gianni,<br><br></div>I'm looking at OSG-3.4 and the setting of the master Camera from the CameraManipulator that happens after running the update traversals of the scene and slave Camera's, so I presume you are looking at an older rev of the OSG.<br><br></div><div>This doesn't change my suggestion though.<br></div><div><br></div>Robert.<br></div><div class="gmail_extra"><br><div class="gmail_quote">On 5 August 2015 at 15:25, Gianni Ambrosio <span dir="ltr"><<a href="mailto:g.ambrosio+osg@gmail.com" target="_blank">g.ambrosio+osg@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Thank you Robert for the explanation.<br>
<br>
Please don't blame me if I have a couple of questions.<br>
<br>
First of all, debugging the updateTraversal() implementation it seems the AxesCameraUpdateCallback is called twice: one in<br>
<br>
scene->updateSceneGraph(*_updateVisitor);<br>
<br>
and the second time in<br>
<br>
camera->accept(*_updateVisitor);<br>
<br>
I guess this is an expected behavior.<br>
<br>
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:<br>
<br>
Code:<br>
<br>
        if (view->getCameraManipulator())<br>
        {<br>
            view->setFusionDistance( view->getCameraManipulator()->getFusionDistanceMode(),<br>
                                    view->getCameraManipulator()->getFusionDistanceValue() );<br>
<br>
            view->getCamera()->setViewMatrix( view->getCameraManipulator()->getInverseMatrix());<br>
        }<br>
<br>
         // Do UpdateTraversal for slaves with their own subgraph<br>
         for(unsigned int i=0; i<view->getNumSlaves(); ++i)<br>
         {<br>
               osg::View::Slave& slave = view->getSlave(i);<br>
               osg::Camera* camera = slave._camera.get();<br>
               if(camera && !slave._useMastersSceneData)<br>
               {<br>
                  camera->accept(*_updateVisitor);<br>
               }<br>
         }<br>
<br>
        view->updateSlaves();<br>
<span class=""><br>
<br>
<br>
<br>
Regards,<br>
Gianni<br>
<br>
------------------<br>
Read this topic online here:<br>
</span><a href="http://forum.openscenegraph.org/viewtopic.php?p=64631#64631" rel="noreferrer" target="_blank">http://forum.openscenegraph.org/viewtopic.php?p=64631#64631</a><br>
<div class="HOEnZb"><div class="h5"><br>
<br>
<br>
<br>
<br>
_______________________________________________<br>
osg-users mailing list<br>
<a href="mailto:osg-users@lists.openscenegraph.org">osg-users@lists.openscenegraph.org</a><br>
<a href="http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org" rel="noreferrer" target="_blank">http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org</a><br>
</div></div></blockquote></div><br></div>