2011-11-25 120 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座標系。