The Animation Library allows you to specify the local transform to use for any bone. As an example, let's make the dwarf hold his weapon upside down.
- To get a reference to the BonePose, which is named weapon, use
dwarfAnimator.BonePoses["weapon"]
- Set the CurrentAnimation to null. This will make the bone use the DefaultTransform property for rendering.
- We want the translation component of our new matrix to be equal to the original translation so it looks like he is holding his weapon.
- To turn the weapon upside down, rotate it by PI radians on the X axis and then by PI radians on the Y axis
- Here is the code:
BonePose weapon = dwarfAnimator.BonePoses["weapon"];
weapon.CurrentAnimation = null;
weapon.CurrentBlendAnimation = null;
weapon.DefaultTransform =
Matrix.CreateRotationX(MathHelper.Pi) *
Matrix.CreateRotationY(MathHelper.Pi) *
Matrix.CreateTranslation(weapon.DefaultTransform.Translation);
- Setting the Blend Animation to null is optional at the moment, but I put it in for a safety check for when we get to animation blending later.