@Override
    protected void dynamicUpdate() {
        /*
         * Calculate the inverse world transform of the model's parent node.
         */
        Transform worldToParent;
        Node parent = getControl().getSpatial().getParent();
        if (parent == null) {
            worldToParent = new Transform();
        } else {
            Transform parentToWorld = parent.getWorldTransform();
            worldToParent = parentToWorld.invert();
        }

        Transform transform = meshToModel.clone();
        Transform shapeToWorld = new Transform();
        PhysicsRigidBody body = getRigidBody();
        body.getPhysicsLocation(shapeToWorld.getTranslation());
        body.getPhysicsRotation(shapeToWorld.getRotation());
        shapeToWorld.setScale(body.getCollisionShape().getScale());

        transform.combineWithParent(shapeToWorld);
        transform.combineWithParent(worldToParent);
        getControl().getSpatial().setLocalTransform(transform);

        localBoneTransform(transform);
        Joint[] rootBones = getControl().getSkeleton().getRoots();
        for (Joint rootBone : rootBones) {
            rootBone.setLocalTransform(transform);
        }

        for (Joint managedBone : managedBones) {
            managedBone.updateModelTransforms();
        }
    }
Update this link in Dynamic mode, setting the local transform of the
model's root spatial based on the transform of the linked rigid body.
jme3-jbullet/src/main/java/com/jme3/bullet/animation/TorsoLink.java