2014-05-13 8 views
6

Sto cercando di tradurre la fotocamera lungo il suo aspetto in vettoriale. Una volta ottenuto questo vettore, posso eseguire la conversione scalare, utilizzare quel punto per spostare la posizione della telecamera in coordinate globali e ri-renderizzare. Il trucco sta ottenendo l'aspetto arbitrario del vettore? Ho esaminato molte altre domande e soluzioni, ma non sembrano funzionare per me.Three.js Get Camera lookAt Vector

+1

Vedere http://stackoverflow.com/questions/15696963/three-js-set-and-read-camera-look-vector/. Inoltre, è "camera.translateZ (-1)" cosa intendi? – WestLangley

risposta

6

Non è possibile ottenere lookAtVector dalla fotocamera stessa, tuttavia è possibile creare un nuovo vettore e applicare la rotazione della fotocamera a tale.

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

Questa risposta non è corretta. Vedi http://stackoverflow.com/questions/15696963/three-js-set-and-read-camera-look-vector/15697227#15697227 – WestLangley

+4

quindi qual è esattamente la differenza? :) –

0

La prima scelta dovrebbe essere cam.translateZ();

V'è una seconda opzione. È possibile estrarre il vettore lookAt dalla proprietà matrix dell'oggetto camera. Hai solo bisogno di prendere gli elementi corrispondenti all'asse z locale.

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