我正在使用SplineCurve3仅在 X 和 Y 轴上绘制一条线,我有一个立方体通过使用spline.getPoint(t)
where t is 0-1 time 成功地沿着这条线制作动画。我正在尝试通过使用点积的 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 示例