Three.JS вращает проекцию так, что ось y становится осью z - PullRequest
24 голосов
/ 25 ноября 2011

Традиционно в трехмерных проекциях ось Y - это ось, обозначающая «вверх и вниз». Я научился думать об этом, с другими двигателями, как об этой оси, являющейся осью Z. Мне было интересно, есть ли способ в Three.JS сделать ось Z осью «вверх / вниз». Если так, есть ли какие-либо последствия для этого?

Вот схема того, что я хочу: enter image description here

Ответы [ 3 ]

41 голосов
/ 06 декабря 2011

Вы можете просто изменить камеру, а не всю систему координат.Например:

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

Изменяет вектор up, чтобы камера могла использовать Z-UP.


РЕДАКТИРОВАТЬ :

Чтобы проиллюстрировать пример, вот созданный вами jsfiddle, слегка модифицированный для вызова lookAt после установки вектора up: http://jsfiddle.net/NycWc/1/

2 голосов
/ 05 декабря 2011

У меня была эта проблема с объектом.Вот как я это исправил.

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

Это изменило его ориентацию так, как вы просите.

0 голосов
/ 22 декабря 2017

Координатная рамка xyz всегда должна устанавливаться с правилом правой руки. Создание вашего собственного соглашения просто не очень хороший план и вызовет много путаницы. Вы можете вращать координатную рамку по желанию, но не меняйте направление оси. Если вы действительно хотите делать то, что отображаете, вы можете создать координатную рамку x, y, -z.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...