2011-09-24 131 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(...);