Code: Select all
0 1 2 3 4 5 6 7 8 11 12 13 14 | +---+ 9 10 | +---+---+---+---+---+---+ 15 16 17 18 19 20 21
In the animation sequence the following are true:
- Bone 8 is fixed at origin, has no key frames
- Bone 9 is animated by position only, shifting in the -Z direction by distance of A
- Bone 10 is animated by both position and rotation, shifting in -Z direction by same distance as 9 and rotates upward by 45 degrees.
- Bone 15, 17, 18, 19, and 20 are animated by rotation only
- Bone 16 is animated by position only.
If I construct the animation sequence with only position changes (only calling setTranslate) then the mesh influenced by Bone 9 and 10 move in unison the same distance making the two parts look as if they're one as I would expect. When I construct the animation sequence with both position and rotation (calling setTranslate and setRotation) then I find Bone 9 continues to move as expected but Bone 10 moves in the -Z direction slight less than before creating a break in the mesh where one isn't expected. To make sure none of the child bone key frames are impacting Bone 10, I also tested not animating any of the children of Bone 10 and when both position and rotation is applied, it moves with the same distorted distance.
Anyone have any ideas what it could be?
I decided to initially set the animation frame to the point where the mesh has moved the maximum -Z distance from the binding pose and froze. I checked the bone positions for 9 and 10 and regardless of whether rotation is applied or not 'bone->getPosition()' is identical. I don't know if this matters or not but it makes me believe then there is an issue with how the animation is being interpreted down the pipeline somewhere?