Hi Robert,

below is my frame code, and this seam to fix it. But, just a question,
shouldnt the main view matrix be updated by the camera manipulator prior to
any other update (I have attached UpdateCallback to the pre render camera
and these seam to be called before the main camera update which results in
frame delay)?

        if (_viewer.valid())
{
static bool firstFrame = true;
if (firstFrame)
{
_viewer->frame();

firstFrame = false;
}
else
{
_viewer->advance();
_viewer->eventTraversal();
_viewer->updateTraversal();

if (_reflectionCamera.valid())
{
_reflectionCamera->setViewMatrix(_viewer->getView(0)->getCamera()->getViewMatrix());
}
_viewer->renderingTraversals();
}

}

This way it works, it gurantee the pre render camera has the updated view
matrix
With this update callback it is with delay

class FollowMainCameraNodeCallback : public osg::NodeCallback
{
public:
FollowMainCameraNodeCallback(osg::Camera* camera)
: _camera(camera)
{

}

virtual void operator()(osg::Node* node, osg::NodeVisitor* nv)
{
osg::Camera* thisCamera = dynamic_cast<osg::Camera*>(node);
if (!thisCamera) return;

thisCamera->setViewMatrix(_camera->getViewMatrix());

.....
_reflectionCamera->setUpdateCallback(new
FollowMainCameraNodeCallback(_viewer->getView(0)->getCamera()));

Nick


On Fri, Oct 24, 2014 at 5:31 PM, Trajce Nikolov NICK <
trajce.nikolov.n...@gmail.com> wrote:

> thanks Robert
>
> Nick
>
> On Fri, Oct 24, 2014 at 5:19 PM, Robert Osfield <robert.osfi...@gmail.com>
> wrote:
>
>> Hi Nick,
>>
>> The update of the CameraManipulator happens at the end of
>> VIewer::updateTraversal().  The default Viewer::frame() implementation()
>> runs the event and then update traversal.
>>
>> Your own application can override any of the viewer.frame() or
>> updateTraversal/eventTraversal() methods so if you want to take control and
>> do things in a different from standard you can do.
>>
>> Robert.
>>
>> On 24 October 2014 16:13, Trajce Nikolov NICK <
>> trajce.nikolov.n...@gmail.com> wrote:
>>
>>> Hi Community,
>>>
>>> I am facing the same problem for long time and always have to "hack it".
>>> I have prerender camera that has to follow the main camera. My pre-render
>>> camera is always a frame behind the main camera which is updated by a
>>> CameraManipulator.
>>>
>>> The update of the Pre-Render camera is done with UpdateCallback that
>>> simply copy the ViewMatrix of the main camera, but it seam that the main
>>> camera is updated afterwards.
>>>
>>> What is the order of these updates? I was expecting the main camera is
>>> updated from the CameraMainpulator and then everything else (including the
>>> Pre-Render cameras), but seam it is not the case?
>>>
>>> Any hints on this?
>>>
>>> Thanks a bunch as always!
>>>
>>> Nick
>>>
>>> --
>>> trajce nikolov nick
>>>
>>> _______________________________________________
>>> 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
>>
>>
>
>
> --
> trajce nikolov nick
>



-- 
trajce nikolov nick
_______________________________________________
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to