Apply new camera world direction

World direction vector is a “forward” vector of an object, z-axis of its local coordinate system.
As a vector, it can be defined by two points, the start point and the end point (the end point minus the start point).

The current object (camera) position is the start point, lookAt function sets the end point.
The world direction is the difference between the end and the start point (normalized).

Originally, the camera z-axis is looking down the world z-axis, so the direction is (0, 0, -1). When you move the camera, the direction doesn’t change, the camera is still looking down (parallel to) the world z-axis, just from a different point (500, 500, 3200), it doesn’t rotate because you moved it.

If you call lookAt, the camera will rotate and look at the point provided (the end point) and the difference between that end point and the current position will form the world direction.

So in your code, you pass the world direction to lookAt function and that doesn’t make much sense (the camera will look at the normalized point (5, 0, -1)).

You can also look at quaternions, they hold the camera orientation in space, you can use the camera quaternion to check the current look at point (assuming this point is one unit away along the local z-axis) like so:

let start = fThreeCamera.position;
// original camera z (forward) vector is 0, 0 -1. Current rotation is stored in the camera quaternion
let forward = new THREE.Vector3(0, 0, -1).applyQuaternion(fThreeCamera.quaternion); 
let lookat = new THREE.Vector3().copy(start).add(forward);
console.log(lookat);

Since the camera is looking along a line, there is infinite look at points along it, it might matter which one to choose, if your code rotates the camera around the look at point, for example.