Obteniendo normales consistentes de un camino bezier cúbico 3D

Estoy escribiendo una clase BezierPath que contiene una lista de BezierPoints. Cada BezierPoint tiene una posición, un InTangent y un OutTangent:

BezierPath contiene funciones para obtener posiciones lineales y tangentes del camino. Mi siguiente paso es proporcionar funcionalidad para obtener las normales de la ruta.

Soy consciente de que cualquier línea en 3D tendrá un número ilimitado de líneas que son perpendiculares, por lo que no habrá una respuesta establecida.

Mi objetivo es que el usuario pueda especificar normales (¿o un ángulo de balanceo?) En cada BezierPoint con el que interpolaré para obtener normales a lo largo del camino. Mi problema es que no sé cómo elegir una tangente inicial (¿cuál debería ser la tangente predeterminada?).

Mi primer intento de obtener las tangentes iniciales es usar el método Unity3DQuaternion.LookRotation:

Quaternion lookAt = Quaternion.LookRotation(tangent);
Vector3 normal = lookAt * Vector3.up;
Handles.DrawLine(position, position + normal * 10.0f);

Esto da como resultado lo siguiente (las líneas verdes son tangentes, las azules son normales):

En su mayor parte, este parece ser un buen resultado base, pero parece que hay cambios repentinos en ciertas orientaciones:

Entonces mi pregunta es: ¿Hay una buena manera de obtener normales predeterminados consistentes para líneas en 3D?

Gracias Ves

Respuestas a la pregunta(1)

Su respuesta a la pregunta