我想围绕世界 x 和 y 轴旋转一个球体。我用这段代码成功地做到了这一点:
// Update ball rotation.
var tempMat = new THREE.Matrix4();
tempMat.makeRotationAxis(new THREE.Vector3(0,1,0), stepX/ballRadius);
tempMat.multiplySelf(ballMesh.matrix);
ballMesh.matrix = tempMat;
tempMat = new THREE.Matrix4();
tempMat.makeRotationAxis(new THREE.Vector3(1,0,0), -stepY/ballRadius);
tempMat.multiplySelf(ballMesh.matrix);
ballMesh.matrix = tempMat;
ballMesh.rotation.getRotationFromMatrix(ballMesh.matrix);
然而,当我ballMesh
以任何方式远离 (1,1,1) 时,旋转会以一种难以描述的方式出错。我在这里提出了一个 jsfiddle 示例:
http://jsfiddle.net/pxTTv/26/(使用方向键旋转)
如果您将比例(在 jsfiddle 代码中指示)更改回 (1,1,1),它会按我的预期工作。
是什么原因造成的,我该如何解决?