Hi Chris,

How to optimize your application will depend on where the bottleneck is.
I'd suspect CPU, but as I don't have your application and data in front of
me I can't really provide any specific advice.

One thing I would suggest is making sure you are testing performance with a
release build.  Debug builds, especially under Windows are very slow indeed
and will suggest bottlenecks that simply don't exist in final applications.

Robert.


On 21 October 2014 15:20, Chris Hidden <[email protected]> wrote:

> Hey everyone.
>
> I've come a far way since my last post.  Our application is reading sensor
> data from the Leap Motion and we are interpreting this data and using OSG
> to display the hand models on scene.  The issue now is that running on my
> laptop I get a tops of 20 fps.  On other computers with lower specs the fr
> is abysmal.
>
> The way its set up right now is that we load the fbx model of a hand and
> traverse through its nodes.  If it finds a bone and if it is one of the
> bones we want to affect we attach an updateCallback.  The update callback
> queries our data for a new position and the position is updated using a
> matrix and then the new position is set:
>
>
> Code:
>
> osg::ref_ptr<osgAnimation::Bone>        bone                    =
> dynamic_cast<osgAnimation::Bone*>(node);
>
>         if (bone)
>         {
>                 ref_ptr<osgAnimation::Bone>     parent
>       = bone->getBoneParent();
>                 const osg::Matrix&                      matrix
>               = _transforms.getMatrix();
>                 _transforms.update                                      ();
>                 setBoneOrientations                                     ();
>                 setLocalMatrices
>       ();
>                 setLocalTranslationsAndRotations        (parent, &matrix);
>
>
>
>
>
>                 if (parent)
>                         bone->setMatrixInSkeletonSpace(fingerSpace *
> fingerTranslation * parent->getMatrixInSkeletonSpace());
>         }
>
>         traverse(node, nv);
>
>
>
>
> The setBoneOrientations(), setLocalMatrices() and
> setLocalTranslationsAndRotation() are methods used to manipulate the data
> so the it fits the position and rototaion on the screen properly. Basically
> converting the data to osg coordinate spaces.
>
> The viewer is basically just while(!viewer->done())
>
> I believe in total we end up attaching a callback to about 40 - 50 bones.
> 20-25 on each hand.  This doesn't feel like too much to process but Im no
> expert... far from it.   Is this the reason causing my low frame rate?  If
> so what are some steps or things to start looking at to improve performance.
>
> Thanks everyone!
>
> ------------------
> Read this topic online here:
> http://forum.openscenegraph.org/viewtopic.php?p=61349#61349
>
>
>
>
>
> _______________________________________________
> osg-users mailing list
> [email protected]
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to