Подтвердить что ты не робот

Три. JS поворачивают проекцию так, что ось y становится осью z

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

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

4b9b3361

Ответ 1

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

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

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

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

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

Ответ 3

Следующее достигнет желаемого результата

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

Согласно документации

.DefaultUp: Vector3

Направление вверх по умолчанию для объектов, также используемое в качестве положения по умолчанию для DirectionalLight, HemisphereLight и Spotlight (которое создает источники света, сияющие сверху вниз). По умолчанию установлено значение (0, 1, 0).

Ответ 4

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