2011-11-25 15 views
21

Tradizionalmente, nelle proiezioni 3D, l'asse Y è l'asse che rappresenta "su e giù". Ho imparato a pensarci, con altri motori, dato che quell'asse è l'asse Z. Quello che mi chiedevo era se c'è un modo in Three.JS per rendere l'asse Z l'asse "su/giù". In tal caso, ci sono delle conseguenze?Three.JS ruota la proiezione in modo che l'asse y diventi l'asse z

Ecco un diagramma di ciò che voglio: enter image description here

+4

Per me sembra che l'immagine sulla destra abbia "x" e "y" nelle posizioni sbagliate. Non dovrebbero essere scambiati? – aarman

+0

Puoi indicarmi dove posso leggere di più su questa convention? Non l'ho mai affrontato: -/ – Kuba

risposta

36

Si potrebbe semplicemente cambiare la telecamera piuttosto che l'intero sistema di coordinate. Ad esempio:

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); 

Questo cambia il vettore up per la fotocamera utilizzare Z-UP.


EDIT:

Per illustrare un esempio, ecco la jsfiddle si è creato leggermente modificato per chiamare lookAt dopo aver impostato il up vettore: http://jsfiddle.net/NycWc/1/ coordinate

+0

Grazie per la risposta! Non ho tempo di provarlo ora, ma proverò presto. Ciò ha conseguenze sugli altri metodi di ripresa? Sarò ancora in grado di usare 'lookAt' normalmente e così? –

+0

Hmm, penserei che lookAt sarebbe ancora lavorare, in quanto utilizza la fotocamera fino vettore: https://github.com/mrdoob/three.js/blob/master/src/cameras/Camera.js#L32 – jterrace

+1

Forse sto facendo qualcosa di sbagliato, ma mi aspetterei che la telecamera salisse, invece sembra che sia rimasta http://jsfiddle.net/NycWc/ –

2

ho avuto questo problema con un oggetto. Ecco come l'ho risolto.

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

Questo ha cambiato il suo orientamento nel modo in cui lo chiedi.

+0

Sto cercando un modo per cambiare l'intero sistema di coordinate in modo che cambiando la posizione y e z apporterai le modifiche che ho descritto. –

0

Il xyz telaio deve sempre essere impostato con la regola della mano destra. Creare la propria convention non è semplicemente un piano così buono e causerà molta confusione. È possibile ruotare il riquadro delle coordinate a piacimento ma non modificare la direzione dell'asse. Se vuoi davvero fare ciò che mostri puoi creare una cornice di coordinate x, y, -z.

Problemi correlati