Orientar la rotación del objeto a un punto de spline tangente en TRES.JS

estoy usandoSplineCurve3 para trazar una línea solo en los ejes X e Y, tengo un cubo animando exitosamente a lo largo de esta línea usandospline.getPoint(t) donde t es 0-1 en el tiempo. Estoy tratando de orientar el cubo hacia la línea a través de su vector hacia arriba que es Y usando el producto de puntos.

Está casi alineado pero ligeramente fuera. Pensé que usaría el producto puntual del vector Y y la tangente del punto actual como el ángulo para rotar un cuaternión.

Aquí está mi función de render:

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); 
}

Y aquí hay un violín que demuestra mi problema. ¿Alguien puede decirme dónde me está yendo mal con el aspecto de la rotación?

Puedes editar mi -ejemplo de jsfiddle

Respuestas a la pregunta(1)

Su respuesta a la pregunta