Setting a new binding pose for a skeleton

I am unable to set a new binding pose for my model correctly. In the default configuration the model is facing Z positive. I would like to turn it around facing Z negative and set this as its new binding pose. All rotations I apply on the model afterwards should originate from that pose. If I just turn the model without changing its binding pose my applied rotations will result in wrong results, because they are still applied on the unchanged binding pose.



I tried setting the model via rootBone.setUserTransform into the desired rotation, calling skeleton.updateWorldVectors to update world transform and saving it using skeleton.setBindingPose. The result is rather strange. The skeleton behaves correctly looking at the Skeleton Debugger but my model has not been turned like the skeleton but still having the same rotation as in its original bind pose. This means my skeleton is turned backwards but the model is still looking towards the camera. It seems to have something to do with worldBindReverse.



On the picture I turned the root bone in several ways and set it as its new bind pose to demonstrate my problem.





Maybe someone can give me a hint. Workaround would be to change the model data itself, or turning all rotations I apply on the model to match the original model bind pose. I dont like both.

You have to edit the animation in an editor or change the animation data in jme. Animation works absolute so you cannot change its outcome by using user transforms or rather have to augment the data and apply it yourself. Look at the source of KinematicRagDollControl, it does some of this stuff. But again, if its only about “rotating” the model do it in blender or simply attach it to a node and rotate the whole model there.

Ok, thank you very much. I slightly misunderstood about the binding pose. I am using Kinect/OpenNI as Input for the rotations and would like to be rather independent from the model, being able to easily change the model I am using without re-editing it in Blender. There is a thread where animating a model via Kinect is explained using the joints’ positions. As far as I know the support for joint orientation was recently added to OpenNI. I thought it would be easier to use the orientations. Maybe I am wrong about this. Will try to implement the concept that is described in that thread.

Check the source of KinematicRagDollControl, it does exactly that (moving the animation bones) but based on physics bones lcoations.