2011-09-24 127 views
3

我想旋轉然後使用THREE.PlaneGeometry創建的平面,但是我遇到了一些問題。旋轉,然後在three.js中翻譯

  1. FirstPersonCamera相機前面的軸是什麼?
    我自己的測試發現了X前/後,Y頂/底,Z左/右,我是對嗎?

  2. 爲了製作這些平面的立方體,我使用下面的代碼(僅用於顯示X軸面)。由於我不明白的原因,塊和正交基之間有一個小空間。似乎旋轉是在翻譯後應用的。我該如何解決它?
function lol() { 
    var mesh = new THREE.Mesh(xFacesGeometry, material); 
    mesh.matrix.setRotationFromEuler(new THREE.Vector3(0, ath.PI/2), 'XYZ'); 
    mesh.matrix.setPosition(new THREE.Vector3(x * 20 + 10, y * 20 + 10, z * 20 + 10)); 
    mesh.matrixAutoUpdate = false; 
} 
lol(0, 0, 0); 
lol(1, 0, 0); 
這裏

全碼(使用Ctrl +單擊後退):http://jsfiddle.net/u8ZHC/

回答

0

只是爲了回答這個問題:最好指定翻譯/旋轉必須應用的順序的方法是使用多個節點。

var pitchNode = new THREE.Object3D(); 
var yawNode = new THREE.Object3D(); 
var rollNode = new THREE.Object3D(); 
var positionNode = new THREE.Object3D(); 

// here come the order 
scene.add(pitchNode); 
pitchNode.add(yawNode); 
yawNode.add(rollNode); 
rollNode.add(positionNode); 
0

嘗試更新矩陣之前翻譯的位置:

mesh.matrix.setRotationFromEuler(new THREE.Vector3(0, Math.PI/2), 'XYZ'); 
mesh.updateMatrix(); 
mesh.translate(...);