我想旋转一个用THREE.PlaneGeometry创建的平面,但是我遇到了一些问题。
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 :(得分:0)
尝试在翻译位置之前更新矩阵:
mesh.matrix.setRotationFromEuler(new THREE.Vector3(0, Math.PI / 2), 'XYZ');
mesh.updateMatrix();
mesh.translate(...);
答案 1 :(得分: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 );