public static TransformTrack fromBoneTrack(BoneTrack boneTrack, Bone bone, Joint joint) {
        float[] times = new float[boneTrack.getTimes().length];
        int length = times.length;
        System.arraycopy(boneTrack.getTimes(), 0, times, 0, length);
        //translation
        Vector3f[] translations = new Vector3f[length];
        if (boneTrack.getTranslations() != null) {
            for (int i = 0; i < boneTrack.getTranslations().length; i++) {
                Vector3f oldTrans = boneTrack.getTranslations()[i];
                Vector3f newTrans = new Vector3f();
                newTrans.set(bone.getBindPosition()).addLocal(oldTrans);
                translations[i] = newTrans;
            }
        }
        //rotation
        Quaternion[] rotations = new Quaternion[length];
        if (boneTrack.getRotations() != null) {
            for (int i = 0; i < boneTrack.getRotations().length; i++) {
                Quaternion oldRot = boneTrack.getRotations()[i];
                Quaternion newRot = new Quaternion();
                newRot.set(bone.getBindRotation()).multLocal(oldRot);
                rotations[i] = newRot;
            }
        }
        //scale
        Vector3f[] scales = new Vector3f[length];
        if (boneTrack.getScales() != null) {
            for (int i = 0; i < boneTrack.getScales().length; i++) {
                Vector3f oldScale = boneTrack.getScales()[i];
                Vector3f newScale = new Vector3f();
                newScale.set(bone.getBindScale()).multLocal(oldScale);
                scales[i] = newScale;
            }
        }
        TransformTrack t = new TransformTrack(joint, times, translations, rotations, scales);
        return t;
    }
A private constructor to inhibit instantiation of this class.
jme3-core/src/main/java/com/jme3/anim/util/AnimMigrationUtils.java