2014-05-13 11 views
6

Ich bin auf der Suche nach der Kamera entlang ihrer LookAt Vektor zu übersetzen. Sobald ich diesen Vektor habe, kann ich eine skalare Translation entlang des Vektors durchführen, diesen Punkt verwenden, um die Kameraposition in globalen Koordinaten zu verschieben und neu zu rendern. Der Trick ist, den willkürlichen LookAt-Vektor zu bekommen? Ich habe mir verschiedene andere Fragen und Lösungen angeschaut, aber sie scheinen nicht für mich zu funktionieren.Three.js Get Camera lookAt Vektor

+1

Siehe http://stackoverflow.com/questions/15696963/three-js-set-and-read-camera-look-vector/. Ist auch 'camera.translateZ (-1)' was du meinst? – WestLangley

Antwort

6

Sie können die lookAtVector nicht von der Kamera selbst erhalten, Sie können jedoch einen neuen Vektor erstellen und die Kameradrehung darauf anwenden.

var lookAtVector = new THREE.Vector3(0,0, -1); 
lookAtVector.applyQuaternion(camera.quaternion); 
+0

Diese Antwort ist nicht korrekt. Siehe http://stackoverflow.com/questions/15696963/three-js-set-and-read-camera-look-vector/15697227#15697227 – WestLangley

+4

Also was genau ist der Unterschied? :) –

0

Das sollte die erste Wahl cam.translateZ();

Es gibt auch eine zweite Option sein. Sie können den LookAt-Vektor aus der Eigenschaft matrix des Kameraobjekts extrahieren. Sie müssen nur die Elemente nehmen, die der lokalen z-Achse entsprechen.

var lookAtVector = new THREE.Vector3(cam.matrix[8], cam.matrix[9], cam.matrix[10]);