public Quaternion lookAt(Vector3f direction, Vector3f up) {
        TempVars vars = TempVars.get();
        vars.vect3.set(direction).normalizeLocal();
        vars.vect1.set(up).crossLocal(direction).normalizeLocal();
        vars.vect2.set(direction).crossLocal(vars.vect1).normalizeLocal();
        fromAxes(vars.vect1, vars.vect2, vars.vect3);
        vars.release();
        return this;
    }
Convenience method to set the quaternion based on a "look" (Z-axis)
direction and an "up" (Y-axis) direction.

<p>If either vector has length=0, the result is undefined.

<p>If the vectors are parallel, the result is undefined.

@param direction the desired Z-axis direction (in local coordinates, not
    null, length&gt;0, unaffected)
@param up the desired Y-axis direction (in local coordinates, not null,
    length&gt;0, unaffected, typically (0,1,0) )
@return the (modified) current instance (for chaining)
jme3-core/src/main/java/com/jme3/math/Quaternion.java