10

I'm looking to translate the camera along its lookAt vector. Once I have this vector, I can do scalar translation along it, use that point to move the camera position in global coordinates and re-render. The trick is getting the arbitrary lookAt vector? I've looked at several other questions and solutions but they don't seem to work for me.

Frank Miller
  • 499
  • 1
  • 7
  • 19
  • 1
    See http://stackoverflow.com/questions/15696963/three-js-set-and-read-camera-look-vector/. Also, is `camera.translateZ( -1 )` what you mean? – WestLangley May 13 '14 at 23:52

2 Answers2

11

You can't get the lookAtVector from the camera itself, you can however create a new vector and apply the camera rotation to that.

var lookAtVector = new THREE.Vector3(0,0, -1);
lookAtVector.applyQuaternion(camera.quaternion);
Kevin Kuyl
  • 1,215
  • 1
  • 17
  • 31
1

The first choice should be cam.translateZ();

There is a second option as well. You can extract the lookAt vector from the matrix property of the camera object. You just need to take the elements corresponding to the local z-axis.

var lookAtVector = new THREE.Vector3(cam.matrix[8], cam.matrix[9], cam.matrix[10]);
Isolin
  • 845
  • 7
  • 20