private void updateAttachNode() {
        Node attachParent = attachNode.getParent();
        if (attachParent == null || targetGeometry == null
                || targetGeometry.getParent() == attachParent
                && targetGeometry.getLocalTransform().isIdentity()) {
            /*
             * The animated meshes are in the same coordinate system as the
             * attachments node: no further transforms are needed.
             */
            attachNode.setLocalTranslation(modelPos);
            attachNode.setLocalRotation(modelRot);
            attachNode.setLocalScale(modelScale);

        } else if (targetGeometry.isIgnoreTransform()) {
            /*
             * The animated meshes ignore transforms: match the world transform
             * of the attachments node to the bone's transform.
             */
            attachNode.setLocalTranslation(modelPos);
            attachNode.setLocalRotation(modelRot);
            attachNode.setLocalScale(modelScale);
            attachNode.getLocalTransform().combineWithParent(attachNode.getParent().getWorldTransform().invert());

        } else {
            Spatial loopSpatial = targetGeometry;
            Transform combined = new Transform(modelPos, modelRot, modelScale);
            /*
             * Climb the scene graph applying local transforms until the
             * attachments node's parent is reached.
             */
            while (loopSpatial != attachParent && loopSpatial != null) {
                Transform localTransform = loopSpatial.getLocalTransform();
                combined.combineWithParent(localTransform);
                loopSpatial = loopSpatial.getParent();
            }
            attachNode.setLocalTransform(combined);
        }
    }
Update the local transform of the attachments node.
jme3-core/src/main/java/com/jme3/animation/Bone.java