Three.JS旋转投影,使y轴成为z轴

Ale*_*pin 28 3d projection-matrix three.js

传统上,在3D投影中,Y轴是表示"上下"的轴.我学会了用其他引擎来思考它,因为该轴是Z轴.我想知道的是Three.JS中是否有一种方法可以使Z轴成为"上/下"轴.如果是的话,会有什么后果吗?

这是我想要的图表: 在此输入图像描述

jte*_*ace 44

您可以更改相机而不是整个坐标系.例如:

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);
Run Code Online (Sandbox Code Playgroud)

这会改变up相机的矢量以使用Z-UP.


编辑:

为了举例说明,这里是您创建的jsfiddle稍微修改lookAt后设置up向量调用:http://jsfiddle.net/NycWc/1/

  • 如果您阅读这个 9 年前的答案,请注意它不适用于 Threejs 的最新版本。请参考下面的“THREE.Object3D.DefaultUp”答案 (2认同)

小智 5

我对一个对象有这个问题。这是我修复它的方法。

object.rotation.z = 90 * Math.PI/180;
object.rotation.x = -90 * Math.PI/180;
Run Code Online (Sandbox Code Playgroud)

这按照您要求的方式改变了它的方向。


Ter*_*ekC 5

以下将达到您想要的结果

THREE.Object3D.DefaultUp.set(0, 0, 1);
Run Code Online (Sandbox Code Playgroud)

根据文档

.DefaultUp:Vector3

对象的默认向上方向,也用作DirectionalLight,HemisphereLight和Spotlight(创建自上而下发光的灯光)的默认位置。默认设置为(0,1,0)。

  • 这应该是正确的答案,接受的答案只是“破解”相机最高值,而不是OP请求的整个坐标系(影响所有对象)。 (2认同)