世界の 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) に戻すと、期待どおりに動作します。
何が原因で、どうすれば修正できますか?