2011-11-25 14 views
21

Tradicionalmente, en proyecciones 3D, el eje Y es el eje que representa "arriba y abajo". Aprendí a pensar en ello, con otros motores, ya que ese eje es el eje Z. Lo que me preguntaba era si hay una forma en Three.JS para hacer que el eje Z sea el eje "arriba/abajo". Si es así, ¿hay alguna consecuencia?Three.JS rotar la proyección para que el eje y se convierta en el eje z

Aquí es un esquema de lo que quiero: enter image description here

+4

Para mí, parece que la imagen de la derecha tiene "x" e "y" en posiciones incorrectas. ¿No deberían intercambiarse? – aarman

+0

¿Podría indicarme dónde podría leer más sobre esta convención? Nunca lo he enfrentado: -/ – Kuba

Respuesta

36

Puede cambiar la cámara en lugar de todo el sistema de coordenadas. Por ejemplo:

var WIDTH = 1024; 
var HEIGHT = 768; 
var VIEW_ANGLE = 45; 
var ASPECT = WIDTH/HEIGHT; 
var NEAR = 0.1; 
var FAR = 10000; 
camera = new THREE.PerspectiveCamera(VIEW_ANGLE, ASPECT, NEAR, FAR); 
camera.position.z = 300; 
camera.up = new THREE.Vector3(0, 0, 1); 
scene.add(camera); 

Esto cambia el vector de up para la cámara de usar Z-UP.


EDITAR:

Para ilustrar un ejemplo, aquí está la jsFiddle que ha creado ligeramente modificada para llamar lookAt después de ajustar el up vectorial: http://jsfiddle.net/NycWc/1/

+0

¡Gracias por la respuesta! No tengo tiempo para probarlo ahora pero lo intentaré pronto. ¿Eso tiene alguna consecuencia en otros métodos de cámara? ¿Todavía podré usar 'lookAt' normalmente y tal? –

+0

Hmm, creo que esa apariencia Todavía funcionaría, ya que utiliza el vector ascendente de la cámara: https://github.com/mrdoob/three.js/blob/master/src/cameras/Camera.js#L32 – jterrace

+1

Tal vez Estoy haciendo algo mal, pero espero que la cámara suba, en su lugar parece que se fue http://jsfiddle.net/NycWc/ –

2

tuve este problema con un objeto. Así es como lo arreglé.

object.rotation.z = 90 * Math.PI/180; 
object.rotation.x = -90 * Math.PI/180; 

Esto tomó su orientación en la forma en que está preguntando.

+0

Estoy buscando una manera de cambiar todo el sistema de coordenadas para que al cambiar la posición yyz realice los cambios que describí. –

0

El XYZ marco de coordenadas siempre se deben establecer con la regla de la mano derecha. Crear su propia convención simplemente no es un buen plan y causará mucha confusión. Puede girar el cuadro de coordenadas a voluntad, pero no cambia la dirección del eje. Si realmente desea hacer lo que visualiza, puede crear un marco de coordenadas x, y, -z.

Cuestiones relacionadas