2011-11-25 86 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); 

これは、カメラがZ-UPを使用するためのupベクトルを変更します。


EDIT

例を説明するために、ここにあなたが少し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

おそらく私は何か間違っていますが、カメラが上がると思っていますが、代わりに残っているように見えます。 –

2

私はオブジェクトでこの問題がありました。ここで私はそれを固定した方法です。

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

これはちょうどあなたが求めている方法で向きが変わった。

+0

私は座標系を変更する方法を探しているので、位置yとzを変更すると、私は説明した変更を行います。 –

0

xyzは座標フレームを必ず設定する必要があります右手のルールで。独自の大会を作成することは、それほど良い計画ではなく、多くの混乱を招きます。座標フレームは自由に回転できますが、軸の方向は変わりません。あなたが実際に表示したいことをしたいのであれば、x、y、-z座標枠を作ることができます。

関連する問題