The problem with this is that the scale calculated is always one frame out when it get's applied - so there's a noticeable jerkiness on zooming in.
If I update my matrix in the cull traversal, zooming is smooth, however I understand that this is a dangerous thing to do.
Can anyone suggest a more sensible workaround?
Many thanks in advance
Paul
------------------
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=32389#32389
_______________________________________________
osg-users mailing list
osg-...@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
On Tue, Oct 5, 2010 at 1:25 PM, paul graham <pd...@hotmail.com> wrote:
> Hi, I'm hoping someone can help - I'm calculating a scaling value in my cull traversal using the pixelSize() function. I then set my scaling matrix in the update traversal.
>
> The problem with this is that the scale calculated is always one frame out when it get's applied - so there's a noticeable jerkiness on zooming in.
>
> If I update my matrix in the cull traversal, zooming is smooth, however I understand that this is a dangerous thing to do.
In general I would recommend users modify the scene graph outwith the
cull and draw traversals as this ensures the most flexible and
robustness w.r.t any threading and multi-context work that you may
wish to do.
However, as long as your aware of the potential pitfalls it can be
safe to modify the scene graph during cull, and it's also possible to
compute data on the fly dynamically in cull and avoid any need to
modify the scene graph.
In you case you are modify the scene graph in a way that at worst
might lead to a matrix getting the wrong values if you have multiple
cull traversals per frame, but it won't lead to a crashes as you
aren't creating or destroying data or leading to any changes that
might cause a serious threading issue.
If you do have multiple viewer cameras then you will have multiple
cull traversals and multiple possible settings for your scaling and in
this case you might want to consider one camera the dominate one, or
multi-buffering the scaling, or doing the transform completely on the
fly in cull.
Robert.
Robert.
Hi Paul,
In general I would recommend users modify the scene graph outwith the
On Tue, Oct 5, 2010 at 1:25 PM, paul graham <pd...@hotmail.com> wrote:
> Hi, I'm hoping someone can help - I'm calculating a scaling value in my cull traversal using the pixelSize() function. I then set my scaling matrix in the update traversal.
>
> The problem with this is that the scale calculated is always one frame out when it get's applied - so there's a noticeable jerkiness on zooming in.
>
> If I update my matrix in the cull traversal, zooming is smooth, however I understand that this is a dangerous thing to do.
cull and draw traversals as this ensures the most flexible and
robustness w.r.t any threading and multi-context work that you may
wish to do.
However, as long as your aware of the potential pitfalls it can be
safe to modify the scene graph during cull, and it's also possible to
compute data on the fly dynamically in cull and avoid any need to
modify the scene graph.
Cheers
Paul
------------------
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=32403#32403
This is the way to go.
Note that if you're using a custom node that derives from Transform, you can
compute the necessary matrix inside the computeLocalToWorld() function, which
gets called during cull to obtain the matrix. Thus each individual cull thread
obtains its own matrix without ever modifying the scene graph.
--
-Paul Martz Skew Matrix Software
http://www.skew-matrix.com/