2011-11-25 121 views
21

传统上,在3D投影中,Y轴是表示“上下”的轴。我学会了用其他引擎思考它,因为该轴是Z轴。我想知道的是在Three.JS中有没有办法让Z轴成为“上/下”轴。如果是这样,是否会有任何后果?Three.JS旋转投影使y轴成为z轴

这里是我想要什么图: enter image description here

+4

对我来说,右边的图片在错误的位置上有“x”和“y”。他们不应该交换? – aarman

+0

你能指点我到哪里我可以阅读更多关于这个公约?我从来没有遇到过: -/ – Kuba

回答

36

您可以更改摄像头而不是整个坐标系。例如:

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。


编辑

一个例子来说明,这里就是你创建稍加修改设置up矢量之后调用lookAt的的jsfiddle:http://jsfiddle.net/NycWc/1/

+0

感谢您的回答!我现在没有时间测试它,但很快就会尝试。这对其他相机方法有什么影响吗?我仍然能够正常使用'lookAt'吗? –

+0

嗯,我会认为lookAt仍然有效,因为它使用了相机的向上矢量:https://github.com/mrdoob/three.js/blob/master/src/cameras/Camera.js#L32 – jterrace

+1

也许我我做错了什么,但我期望相机升高,而不是它似乎离开http://jsfiddle.net/NycWc/ –

2

我有这个问题与对象。这是我如何修复它。

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

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

+0

我正在寻找一种方法来改变整个坐标系,以便改变位置y和z将使我所描述的改变。 –

0

的XYZ坐标系应始终设置与右手的规则。创建自己的约定并不是一个很好的计划,会造成很多混乱。您可以随意旋转坐标系,但不要更改轴的方向。如果你真的想做你显示的内容,你可以制作一个x,y,-z坐标系。