public Vector3f transformInverseVector(final Vector3f in, Vector3f store) {
        if (store == null) {
            store = new Vector3f();
        }

        // The author of this code should've looked above and taken the inverse of that,
        // but for some reason, they didn't.
//        in.subtract(translation, store).divideLocal(scale);
//        rot.inverse().mult(store, store);
        in.subtract(translation, store);
        rot.inverse().mult(store, store);
        store.divideLocal(scale);

        return store;
    }
Applies the inverse transform to the specified coordinates and returns
the result in <code>store</code>. If the <code>store</code> is null, a
new Vector3f is created to hold the value. Either way, the current
instance is unaffected, unless <code>store</code> is its translation or
scaling.
<p>
The transform's quaternion is assumed to be normalized. No error checking
is performed; the caller should ensure that {@code rot.norm()} is
approximately equal to 1.

@param in the coordinates to transform (not null, unaffected unless it's
    <code>store</code>)
@param store storage for the result (modified if not null)
@return the transformed coordinates (either <code>store</code> or a new
    Vector3f)
jme3-core/src/main/java/com/jme3/math/Transform.java