2012-07-15 22 views

risposta

33

Prima assicurarsi che le matrici dell'oggetto siano state aggiornate.

object.updateMatrixWorld(); 

Il ciclo di rendering di solito chiama questo per te.

Quindi, fare questo:

var vector = object.geometry.vertices[i].clone(); 

vector.applyMatrix4(object.matrixWorld); 

Il vettore conterrà ora la posizione in coordinate mondo.

Si potrebbe voler leggere alcuni libri di riferimento CG.

  1. 3D fondo la matematica per la grafica e lo sviluppo di giochi/da Fletcher Dunn e ian parberry

  2. essenziale Matematica per giochi e applicazioni interattive: Un programmatore Guida James M. Van Verth e Lars M. Bishop

Three.js R69

21

versioni recenti di Three.js (V50 +) fornire questa funzionalità Bui Si trova nello the THREE.Object3D class. In particolare, per ottenere le coordinate di un mondo THREE.Vector3 un'istanza locale di nome vector, utilizzare the localToWorld method:

object.localToWorld(vector); 

Allo stesso modo, non v'è a worldToLocal method per la conversione di coordinate mondo in coordinate locali, che è leggermente più complicato, matematicamente parlando. Per tradurre un mondo vector negli oggetti di coordinate locali spazio:

object.worldToLocal(vector); 
+0

... e non dimenticate di eseguire object.updateMatrixWorld(); Mi stavo grattando la testa per un po 'prima che ci provassi. – arpo

+0

Provato a farlo ... Ancora ottenere 0, 0, 0 :( –

Problemi correlati