COLLADA: ¿Postura de enlace inverso en el espacio equivocado?

Estoy trabajando en escribir mi propio importador COLLADA. He llegado bastante lejos, cargando mallas y materiales y demás. Pero me encontré con un obstáculo en la animación, específicamente: rotaciones conjuntas.

La fórmula que estoy usando para desollar mis mallas es sencilla:

weighted;
for (i = 0; i < joint_influences; i++)
{
    weighted += 
        joint[joint_index[i]]->parent->local_matrix * 
        joint[joint_index[i]]->local_matrix * 
        skin->inverse_bind_pose[joint_index[i]] * 
        position * 
        skin->weight[j];
}
position = weighted;

Y en lo que respecta a la literatura, esta es la fórmula correcta. Ahora, COLLADA especifica dos tipos de rotaciones para las articulaciones: local y global. Debe concatenar las rotaciones juntas para obtener la transformación local de la unión.

Lo que la documentación de COLLADA no diferencia es la rotación local de la junta y la rotación global de la junta. Pero en la mayoría de los modelos que he visto, las rotaciones pueden tener una identificación derotate (global) ojointOrient (local).

Cuando ignoro las rotaciones globales y solo uso las locales, obtengo la pose de enlace para el modelo. Pero cuando agrego las rotaciones globales a la transformación local de la articulación, comienzan a suceder cosas extrañas.

Esto es sin usar rotaciones globales:

Y esto es con rotaciones globales:

En ambas capturas de pantalla estoy dibujando el esqueleto usando líneas, pero en la primera es invisible porque las uniones están dentro de la malla. ¡En la segunda captura de pantalla, los vértices están por todas partes!

Para comparación, esto es lo que la segunda captura de pantalladeberí parece

Es difícil de ver, pero puede ver que las articulaciones están en la posición correcta en la segunda captura de pantalla.

Pero ahora lo raro. Si ignoro la postura de enlace inverso según lo especificado por COLLADA y en su lugar tomo el inverso de la transformación local principal de la articulación multiplicada por la transformación local de la articulación, obtengo lo siguiente:

En esta captura de pantalla, estoy dibujando una línea desde cada vértice hasta las articulaciones que tienen influencia. El hecho de que obtenga la pose de enlace no es tan extraño, porque la fórmula ahora se convierte en:

world_matrix * inverse_world_matrix * position * weight

Pero me lleva a sospechar que la postura de enlace inverso de COLLADA está en el espacio equivocado.

Así que mi pregunta es: ¿en qué espacio COLLADA especifica su postura de enlace inverso? ¿Y cómo puedo transformar la postura de enlace inverso en el espacio que necesito?