这是我使用的两个功能。它们基于矩阵旋转。并可以绕任意轴旋转。要使用世界上的轴旋转,您需要使用第二个函数rotateAroundWorldAxis()。
// Rotate an object around an arbitrary axis in object spacevar rotObjectMatrix;function rotateAroundObjectAxis(object, axis, radians) { rotObjectMatrix = new THREE.Matrix4(); rotObjectMatrix.makeRotationAxis(axis.normalize(), radians); // old pre for Three.JS pre r54: // object.matrix.multiplySelf(rotObjectMatrix); // post-multiply // new pre for Three.JS r55+: object.matrix.multiply(rotObjectMatrix); // old pre for Three.js pre r49: // object.rotation.getRotationFromMatrix(object.matrix, object.scale); // old pre for Three.js r50-r58: // object.rotation.setEulerFromRotationMatrix(object.matrix); // new pre for Three.js r59+: object.rotation.setFromRotationMatrix(object.matrix);}var rotWorldMatrix;// Rotate an object around an arbitrary axis in world space function rotateAroundWorldAxis(object, axis, radians) { rotWorldMatrix = new THREE.Matrix4(); rotWorldMatrix.makeRotationAxis(axis.normalize(), radians); // old pre for Three.JS pre r54: // rotWorldMatrix.multiply(object.matrix); // new pre for Three.JS r55+: rotWorldMatrix.multiply(object.matrix); // pre-multiply object.matrix = rotWorldMatrix; // old pre for Three.js pre r49: // object.rotation.getRotationFromMatrix(object.matrix, object.scale); // old pre for Three.js pre r59: // object.rotation.setEulerFromRotationMatrix(object.matrix); // pre for r59+: object.rotation.setFromRotationMatrix(object.matrix);}因此,您应该在
anim函数中调用这些函数(requestAnimframe回调),从而在x轴上旋转90度:
var xAxis = new THREE.Vector3(1,0,0);rotateAroundWorldAxis(mesh, xAxis, Math.PI / 180);



