SplineCurve3を使用して、X軸とY軸にのみ線をプロットしています。この線に沿ってspline.getPoint(t)
、tが0から1の時間で正常にアニメーション化されている立方体があります。内積を使用して、Yである上向きベクトルを介して立方体を線に向けようとしています。
ほぼ整列していますが、わずかにずれています。Yベクトルの内積と現在の点の接線を、クォータニオンを回転させる角度として使用することを考えました。
これが私のレンダリング関数です:
function render() {
var updateMatrix = new THREE.Matrix4();
updateMatrix.setPosition(spline.getPoint(t));
var angle = new THREE.Vector3(0,1,0).dot(spline.getTangent(t).normalize());
var quat = new THREE.Quaternion;
quat.setFromAxisAngle(new THREE.Vector3(0,0,1), angle);
updateMatrix.setRotationFromQuaternion(quat);
marker.rotation.getRotationFromMatrix(updateMatrix);
marker.matrixWorld = updateMatrix;
t = (t >= 1) ? 0 : t += 0.002;
renderer.render(scene, camera);
}
そして、ここに私の問題を示すフィドルがあります、誰かが私が回転の側面でどこが間違っているのか教えてもらえますか?
あなたは私の-jsfiddleの例を編集することができます