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

3d Three.JS旋转投影,使y轴成为z轴,3d,three.js,projection-matrix,3d,Three.js,Projection Matrix,传统上,在3D投影中,Y轴是表示“上下”的轴。我学会了用其他引擎把它想象成Z轴。我想知道的是,是否有办法使Z轴成为“上/下”轴。如果是这样,会有什么后果 这是我想要的图表: 我对一个对象有这个问题。下面是我如何修复它的 object.rotation.z = 90 * Math.PI/180; object.rotation.x = -90 * Math.PI/180; 这就改变了它的方向,就像你要求的那样。你可以改变相机,而不是整个坐标系。例如: var WIDTH = 1024; var

传统上,在3D投影中,Y轴是表示“上下”的轴。我学会了用其他引擎把它想象成Z轴。我想知道的是,是否有办法使Z轴成为“上/下”轴。如果是这样,会有什么后果

这是我想要的图表:

我对一个对象有这个问题。下面是我如何修复它的

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

这就改变了它的方向,就像你要求的那样。

你可以改变相机,而不是整个坐标系。例如:

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

xyz坐标框应始终使用右手规则设置。创建自己的约定并不是一个好计划,会引起很多混乱。可以随意旋转坐标系,但不更改轴的方向。如果你真的想做你想做的事情,你可以做一个x,y,-z坐标框。

以下将达到你想要的结果

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

.DefaultUp:Vector3

对象的默认向上方向,也用作方向灯光、半球灯光和聚光灯(创建自上而下的灯光)的默认位置。 默认设置为(0,1,0)


我正在寻找一种改变整个坐标系的方法,这样改变y和z的位置就会做出我描述的改变。这个解决方案帮助了我。。谢谢你的回答!我现在没有时间测试,但很快就会尝试。这对其他摄像方法有影响吗?我还能正常使用
lookAt
吗?嗯,我认为lookAt仍然可以工作,因为它使用了相机的上方向向量:也许我做错了什么,但我希望相机会上升,相反,它似乎离开了,在设置了
向量之后,你必须调用
lookAt
:如果你阅读了这个9年前的答案,请注意它不适用于最新版本的Threejs。请参考下面的
THREE.Object3D.DefaultUp
答案。右边的图片似乎在错误的位置有“x”和“y”。他们不应该交换吗?你能告诉我在哪里可以读到更多关于这个公约的内容吗?我从未面对过它:-/这应该是正确的答案,被接受的答案只是“破解”相机的最高值,而不是OP要求的整个坐标系(影响所有对象)。