RecomputeLocalOffsets function

void RecomputeLocalOffsets(
  1. List<Bone> skeleton
)

Implementation

void RecomputeLocalOffsets(List<Bone> skeleton) {
  print("recomputing local transform");
  final List<VM.Matrix4> toRoot =
      List.generate(skeleton.length, (i) => VM.Matrix4.zero());
  for (int i = 0; i < skeleton.length; i++) {
    Bone bone = skeleton[i];
    if (bone.parentNum < 0) {
      toRoot[i] = VM.Matrix4.identity() * bone.localTransform;
    } else {
      toRoot[i] = toRoot[bone.parentNum] * bone.localTransform;
    }
    bone.offsetTransform.copyInverse(toRoot[i]);
  }
}