When jumping around in time with a skinned model, I found that the model
was displaying the transformations from the previous frame. The reason
for this was UpdateSkeleton would update the bone matrices before
UpdateBone::update had been called.
It seems that the intention for this was to ensure the matrices were
updated before any RigGeometry could be updated. However, it also means
that the bones will always be in the position for the previous frame.
I looked into trying to force the bones to update first but such an
approach introduced complexity and opened up the possibility of causing
other more subtle errors. Instead, I believe the most elegant solution
is to simply require that bones be ordered before other objects within
the child list.
 
I've moved the matrix updating from UpdateSkeleton to UpdateBone.
UpdateSkeleton now merely checks that Bones appear before other children
and issues a warning if this isn't the case.

______________________________________________________________________
This email and any files transmitted with it are confidential and
intended solely for the use of the individual or entity to whom they
are addressed. If you have received this email in error please notify
the system manager.

This email has been scanned by the MessageLabs Email Security System.
For more information please visit http://www.messagelabs.com/email 
______________________________________________________________________

Attachment: Bone
Description: Bone

Attachment: Skeleton
Description: Skeleton

Attachment: Bone.cpp
Description: Bone.cpp

Attachment: Skeleton.cpp
Description: Skeleton.cpp

_______________________________________________
osg-submissions mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-submissions-openscenegraph.org

Reply via email to