Мне кажется, у вас должны быть другие проблемы, может быть, с углами?
Это мой код для доступа к нему в 2D, вы можете посмотреть его в действии здесь
//------------------------------------------------------------------------------------
public void UpdateLocal( )
{
Vector2 traslation = Translator.GetValue();
float rotation = Rotator.GetValue();
Vector2 scale = Scalator.GetValue();
Matrix mTraslation, mRotation, mScale;
Matrix.CreateTranslation( traslation.X, traslation.Y, 0, out mTraslation );
Matrix.CreateRotationZ( rotation, out mRotation );
Matrix.CreateScale(scale.X, scale.Y, 1 , out mScale );
Matrix.Multiply( ref mScale, ref mRotation, out Local );
Matrix.Multiply( ref Local, ref mTraslation, out Local );
}
//---------------------------------------------------------------------------------
protected virtual void SpecialUpdateTransformTopToDown( )
{
UpdateLocal( );
if ( Parent != null )
{
Matrix.Multiply( ref Local, ref (Parent as BoneData).Absolute, out Absolute );
}
else
{
Absolute = Local;
}
foreach ( BoneData child in _children.OfType<BoneData>() )
{
child.SpecialUpdateTransformTopToDown( );
}
}