[osg-users] NodeTrackerManipulator doesn't appear to track transform nodes correctly?

Robert Osfield robert.osfield at gmail.com
Wed Jul 9 11:04:37 PDT 2008


Hi Alan,

If you need for fine grained control over what point you want to
track, then might I suggest having an optional pivot point in local
coords of the subgraph you are tracking.  This would be far more
general purpose than a hack that assumes certainly types of nodes
behave in different ways.

Robert.

On Wed, Jul 9, 2008 at 6:21 PM, Dickinson, Alan J.
<ALAN.J.DICKINSON at saic.com> wrote:
> Hello,
>
>
>
> I have been working with the NodeTrackerManipulator class to follow a
> PositionAttitudeTransform node. When I setTrackerNode() for the
> PositionAttitudeTransform  node everything appears to configure fine except
> the resultant center postion is incorrect for nodes which have there own
> transformation. The computeNodeCenterAndRotation calculates the localToWorld
> coordinates for this node which is the same as the bounds center for the
> node itself. Therefore the nodeCenter  is equal to its transformed center
> multiplied by localToWorld again. I was able to fix the code for my case by
> changing:
>
>
>
> Method computeNodeCenterAndRotation()
>
>
>
> THIS:
>
>     if (validateNodePath())
>
>     {
>
> nodeCenter =
> osg::Vec3d(_trackNodePath.back()->getBound().center())*localToWorld;
>
>     }
>
>
>
> TO
>
>
>
>
>
>    if (validateNodePath())
>
>    {
>
>       osg::Node *node = _trackNodePath.back().get();
>
>
>
>       // Check if node is a transform node and just use its already
> transformed center
>
>       osg::Transform* trans = dynamic_cast<osg::Transform*>(node);
>
>       if(trans)
>
>             nodeCenter = osg::Vec3d(trans->getBound().center());
>
>       else
>
>             nodeCenter = osg::Vec3d(node->getBound().center())*localToWorld;
>
>        }
>
>    else
>
>         nodeCenter = osg::Vec3d(0.0f,0.0f,0.0f)*localToWorld;
>
>
>
> This seems to work for my case but I don't know if this will work for all
> other cases.
>
>
>
> Should I modify the NodeTrackerManipulator class and submit the change via
> the submissions process or would somebody like to take a look at this and
> see if this works for all appropriate cases then submit the change.
>
>
>
> Thanks for you support on a great product.
>
>
>
> Alan Dickinson
>
>
>
> _______________________________________________
> osg-users mailing list
> osg-users at lists.openscenegraph.org
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>
>



More information about the osg-users mailing list