Calculate a perpendicular vector from my camera lookat
My camera lookat is in a orthographic perspective (much like in a 2D space) it's staring at the ground from top. I'm trying to derive direction so that my character is moving left and right.
Given vector, how can I derive perpendicular vectors? So it can move left and right.
1 answer

Any 3D vector (not counting zero vectors) have multiple valid perpendicular vectors.
You can calculate a perpendicular vector, by calculating the cross product given 2 nonparallel vectors. So you'd have another vector which to calculate it against, say a reference.
Thus assuming you have a direction/forward vector:
var forward = new THREE.Vector3(0, 0, 1);
Then using another vector such as
THREE.Vector3(0, 1, 0)
. (Ify
is up, then this would be the upwards unit vector.) Then by calculating the cross product, we can calculate the right direction vector (or left direction by flipping the order or simply negate the right vector):var right = forward.cross(new THREE.Vector3(0, 1, 0)).normalize();
You can then also get the relative up vector, by doing:
var up = right.cross(forward).normalize();
Which rendered would look something like this. The blue arrow being the forward vector, the red arrow being the right vector, the green arrow being up and the darker green being the reference it's calculated against.