我试图围绕它旋转地球旋转三个js的轴。我找到了 this solution ,我试图在我的代码中使用它,但它没有做任何事情。
当我执行此代码时,行星只是坐在那里而根本不旋转。我不太确切地掌握四元数是什么或它是如何工作的,所以我不确定出了什么问题。
function rotateAroundAxis(object, axis, radians) {
var vector = axis.normalize();
var quaternion = new THREE.Quaternion().setFromAxisAngle(vector, radians);
object.rotation = new THREE.Euler().setFromQuaternion( quaternion );
}
earthAxis = new THREE.Vector3(Math.cos(23.4*Math.PI/180), Math.sin(23.4*Math.PI/180), 0);
function render() {
stats.update();
step += 0.02;
rotateAroundAxis(earth, earthAxis, step);
}
答案 0 :(得分:2)
首先,您需要通过对其应用变换将球体的几何体倾斜23.4度。
var radians = 23.4 * Math.PI / 180; // tilt in radians
mesh.geometry.applyMatrix( new THREE.Matrix4().makeRotationZ( - radians ) );
然后,要在物体空间的轴上旋转地球,首先要标准化您正在旋转的轴。
earthAxis = new THREE.Vector3( Math.sin( radians ), Math.cos( radians ), 0 ).normalize();
然后在你的渲染功能中,执行以下操作:
earth.rotateOnAxis( earthAxis, 0.01 ); // axis must be normalized
three.js r.69