2012-07-15 29 views

Respuesta

33

Primero asegúrese de que las matrices del objeto se hayan actualizado.

object.updateMatrixWorld(); 

El bucle de renderizado generalmente llama a esto por usted.

A continuación, haga lo siguiente:

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

vector.applyMatrix4(object.matrixWorld); 

El vector contendrá ahora la posición en coordenadas del mundo.

Es posible que desee leer algunos libros de referencia CG.

  1. imprimación matemáticas 3D para los gráficos y el desarrollo del juego/por Fletcher Dunn y Ian Parberry

  2. Matemáticas Esenciales para juegos y aplicaciones interactivas: Guía de un desarrollador James M. Van Verth y Lars M. Bishop

Three.js R69

21

versiones recientes de Three.js (v50 +) proporcionar esta funcionalidad Bui lt en the THREE.Object3D class. En particular, para obtener las coordenadas mundiales de un THREE.Vector3 instancia local llamado vector, utilice the localToWorld method:

object.localToWorld(vector); 

Del mismo modo, hay a worldToLocal method para el mundo de la conversión de las coordenadas en coordenadas locales, lo cual es un poco más complicado, matemáticamente hablando. Para traducir un mundo vector en los objetos de coordenadas local del espacio:

object.worldToLocal(vector); 
+0

... y no se olvide de ejecutar object.updateMatrixWorld(); Me estaba rascando la cabeza por un tiempo antes de intentar eso. – arpo

+0

Intenté hacer eso ... Todavía obtengo 0, 0, 0 :( –

Cuestiones relacionadas