34 Stimmen

Three.JS dreht die Projektion so, dass die y-Achse zur z-Achse wird

Bei 3D-Projektionen ist die Y-Achse traditionell die Achse, die "oben und unten" darstellt. Ich habe gelernt, diese Achse bei anderen Maschinen als die Z-Achse zu betrachten. Ich habe mich gefragt, ob es eine Möglichkeit gibt, in Drei.JS die Z-Achse zur "Auf/Ab"-Achse zu machen. Wenn ja, gibt es irgendwelche Konsequenzen?

Hier ist ein Diagramm von dem, was ich will: enter image description here

48voto

jterrace Punkte 60926

Sie könnten nur die Kamera und nicht das gesamte Koordinatensystem ändern. Zum Beispiel:

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

Dies verändert die up Vektor für die Kamera zur Verwendung von Z-UP.


EDIT :

Zur Veranschaulichung eines Beispiels ist hier das von Ihnen erstellte jsfiddle leicht modifiziert, um lookAt nach der Einstellung der up Vektor: http://jsfiddle.net/NycWc/1/

23voto

TerekC Punkte 2075

Mit den folgenden Maßnahmen erreichen Sie das gewünschte Ergebnis

THREE.Object3D.DefaultUp.set(0, 0, 1);

Nach Angaben der Dokumentation

.DefaultUp : Vektor3

Die Standard-Aufwärtsrichtung für Objekte, die auch als Standardposition für DirectionalLight, HemisphereLight und Spotlight (das Lichter erzeugt, die von oben nach unten strahlen) verwendet wird. Standardmäßig auf ( 0, 1, 0) eingestellt.

5voto

Ich hatte dieses Problem mit einem Objekt. Hier ist, wie ich es behoben habe.

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

Diese hat ihre Ausrichtung genau so geändert, wie Sie es wünschen.

-4voto

gijs van erp Punkte 1

Der xyz-Koordinatenrahmen sollte immer mit der Rechtsregel eingerichtet werden. Eine eigene Konvention zu erstellen, ist einfach kein guter Plan und wird viel Verwirrung stiften. Sie können den Koordinatenrahmen nach Belieben drehen, aber ändern Sie nicht die Richtung der Achse. Wenn Sie wirklich das tun wollen, was Sie anzeigen, können Sie einen x,y,-z-Koordinatenrahmen erstellen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X