[osg-users] Camera shaking

Vincent Bourdier vincent.bourdier at gmail.com
Wed Jul 9 01:32:14 PDT 2008


I found one solution :

after verifications the sequence is :
 * viewer->advance()
 * manipulator->_frame() : compute camera position
 * viewer->event()
 * callback : node moving
 * manipulator->getinversematrix : set camera position
 * ...

so the position of the camera is computed before node is moved...

To solve it, I just add a _frame() call just before the
manipulator->getInverseMatrix...

If anyone have the same problem, it can be the solution.

If anyone have a better idea, I am always curious to know it.

Thanks,

Regards,
Vincent.

2008/7/9 Vincent Bourdier <vincent.bourdier at gmail.com>:

> Hi all,
>
> I have a similar problem than
> http://lists.openscenegraph.org/pipermail/osg-users-openscenegraph.org/2008-June/012275.htmlbut I did not succed to solve the problem...
>
> This is the whole problem :
>
> I've done a manipulator (matrix manipulator), which permit to make the
> camera follow a node.
> The node is moved by an UpdateCallback on a other node.
> The manipulator's camera position is computed in a _frame() method :
>
> bool MyManipulator::handle(const osgGA::GUIEventAdapter& ea,
>> osgGA::GUIActionAdapter& us){
>> [...]
>> case(osgGA::GUIEventAdapter::FRAME):
>>             _frame();
>> [...]
>> }
>
>
> In the frame method, I get the world position of the node, and set the
> camera's position doing something like this :
>
> osg::Matrixd MyManipulator::getInverseMatrix() const{
>>         return
>> osg::Matrixd::translate(_eye+_vCorrectionGoto)*osg::Matrixd::rotate((_rotation).inverse());
>> }
>>
>
> with eye = eye + node_translation
>
> my render loop is :
>
> while(!pViewer->done() && !masterKilled )
>>          {
>>              pViewer->advance();
>>              pViewer->eventTraversal();
>>              pViewer->updateTraversal();
>>
>>              actionBetweenFrames(contextID); //just update some node in
>> the scene graph (switch add and remove child)
>>              pViewer->renderingTraversals();
>>           }
>>
>
> But when I put the camera behind a node, the camera is shaking in the axis
> translation (not allong Z axis when node is moving in XY plane)... It looks
> something must un-synchronized...
>
> Any idea ?
>
> thanks.
>
> Regards,
>
> Vincent
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openscenegraph.org/pipermail/osg-users-openscenegraph.org/attachments/20080709/f4f42db6/attachment-0003.htm>


More information about the osg-users mailing list