public Matrix4 CalculateInverseWorldTransform(List<Bone> bones)
{
var iwt = Matrix4.Identity;
var currentBone = this;
while (true)
{
var untranslated = currentBone.Transform.ToMatrix4();
iwt = iwt * untranslated;
if (currentBone.ParentIndex == -1) break;
currentBone = bones[currentBone.ParentIndex];
}
return iwt.Inverted();
}