public static void matrixLookAt( Vector3f location, Vector3f at, Matrix4f result ) {
public static void matrixLookAt( Vector3f location, Vector3f at, Vector3f up, Matrix4f result ) {
	public static void matrixLookAt( Vector3f location, Vector3f at, Matrix4f result ) {		localDir.set( at ).subtractLocal( location ).normalizeLocal();		localDir.cross( Vector3f.UNIT_Y, localLeft );		localLeft.cross( localDir, localUp );		GL11.glPushMatrix();		// set view matrix		GL11.glMatrixMode( GL11.GL_MODELVIEW );		GL11.glLoadIdentity();		GLU.gluLookAt(				location.x,				location.y,				location.z,				at.x,				at.y,				at.z,				localUp.x,				localUp.y,				localUp.z );		if( result != null ) {			tmp_FloatBuffer.rewind();			GL11.glGetFloat( GL11.GL_MODELVIEW_MATRIX, tmp_FloatBuffer );			tmp_FloatBuffer.rewind();			result.readFloatBuffer( tmp_FloatBuffer );		}		GL11.glPopMatrix();	}