Skip to content

Cuatro sistemas de rigging automático, doce animales y un defecto común: patas rectas ​

Por Oleg Sidorkin, CTO y cofundador de Cinevva

Toma un ciclo de caminata creado por un artista para un ciervo, retargetéalo sobre el mismo ciervo después de que un sistema automático le haya creado el rig y el resultado se verá mal de una forma difícil de describir. Las patas pisan aproximadamente donde deberían. El ritmo es correcto. Aun así, parece una mesa caminando.

Durante un tiempo supusimos que el problema estaba en nuestro código de retargeting. No es así. El rig ya es incorrecto antes de aplicarle cualquier animación, y hay un único número que lo demuestra.

El número ​

Toma una pata. Suma las longitudes de sus segmentos óseos, desde la cadera hasta el pie. Llamemos a eso alcance. Ahora mide la distancia en línea recta desde la articulación de la cadera hasta la del pie en la pose de bind. Llamemos a eso extensión. Divide el alcance por la extensión.

Un animal real que está quieto tiene las patas flexionadas, por lo que la cadena es considerablemente más larga que la línea que abarca. En los doce animales con rigs de artista del paquete Ultimate Animated Animals de Quaternius, esa proporción va de 1,15 a 1,50, con una media de 1,30. La pata trasera de un ciervo alcanza 1,40. La pata delantera de un zorro, 1,29.

Ahora viene lo importante. Una pata sin flexión no puede doblarse sin acortar su extensión. Si las articulaciones están en línea recta, la única forma de flexionar la rodilla es acercar el pie a la cadera. Así que o el pie se separa del suelo o el cuerpo se hunde. Pídele a ese rig el ángulo de rodilla del artista y obtendrás una postura agachada. Ningún retargeting puede arreglarlo, porque la información que necesita la pose nunca estuvo en el esqueleto.

Dos cadenas de una pata entre la misma cadera y el mismo pie, una flexionada con una medida de 1,31 y otra casi recta con una medida de 1,04
Ambas cadenas comienzan en la misma cadera y terminan en el mismo pie. La flexionada es un 31 % más larga que la línea que abarca, por lo que tiene margen para doblarse. La recta no tiene ninguno, y los números mostrados son la media medida de los artistas y la media de Tripo.
Animación de una cadena flexionada y otra recta realizando la misma flexión, con lecturas de extensión

Así que la pregunta es concreta y medible. ¿Coloca el sistema de rigging las articulaciones intermedias de las patas donde estas pueden flexionarse?

Configuración de la prueba ​

Doce animales, todos CC0 y procedentes del paquete de Quaternius, cada uno con un rig de artista de entre 38 y 51 articulaciones.

Los doce animales CC0 de Quaternius renderizados con sus propios materiales, desde la alpaca hasta el lobo
Los sujetos, con sus propios materiales y el número de huesos de sus rigs de artista. Todos vienen con rig, y el rig es lo primero que descartamos.
Descartamos el rig y conservamos únicamente lo que un usuario realmente sube: triángulos. Después se lo entregamos a cada sistema de rigging y comparamos el resultado con el esqueleto original del artista.

Un detalle de la preparación de la malla resultó ser más importante de lo que parece. Esos archivos glTF dividen la malla en cinco primitivas según el material y, como son modelos low-poly de aristas duras, casi todos los vértices están duplicados para cada cara adyacente. El zorro almacena 3752 vértices, pero solo tiene 926 distintos. Los sistemas de rigging que construyen un grafo sobre la topología de la malla interpretan esas costuras coincidentes pero no compartidas como grietas, por lo que la cabeza se convierte en un objeto separado del cuerpo, la distancia geodésica entre ambos tiende a infinito y una articulación que debería estar en el cuello deja de tener motivos para colocarse allí. En este caso, soldar por posición no es una optimización. Es la diferencia entre un solo animal y seis islas. Nueve de los doce quedaron como una única superficie cerrada y estanca. El toro y la vaca conservan los cuernos como piezas separadas, y el ciervo, su cornamenta; lo dejamos así a propósito, porque las subidas reales tienen ese aspecto.

Para la evaluación utilizamos dos cosas. La primera es nuestra propia función de ejecución, que reduce un esqueleto arbitrario de cuadrúpedo a una estructura canónica. Tiene que encontrar cuatro pies en cuatro cuadrantes distintos, una columna vertebral y un cuello. Si no puede hacerlo, el rig no se puede controlar en tiempo de ejecución, independientemente de todo lo demás.

Esa función no lee ningún nombre de hueso, deliberadamente, y el motivo es revelador. Tripo numera sus cadenas de extremidades por índice sin un significado fijo, así que la cadena 0 corresponde al par trasero en su ciervo y al par delantero en su caballo. Sus etiquetas de izquierda y derecha no coinciden entre rigs: Left está en x=-0.072 en el ciervo y en x=+0.076 en el caballo, ambos orientados en la misma dirección. En el zorro etiqueta la columna como una cadena de extremidad. Todas las suposiciones sobre nombres que probamos fallaron al medirlas, así que interpretamos la geometría de bind, que expresa todo esto sin ambigüedad.

La segunda medida es la proporción de flexión descrita antes. Ambas medidas son invariantes a la escala, algo importante porque estos sistemas de rigging trabajan a escalas radicalmente distintas. Tripo normaliza aproximadamente a un cubo unitario, por lo que su zorro mide 0,13 por 0,34 por 0,65, frente a los 0,77 por 2,47 por 6,59 del artista.

Los resultados ​

sistema de riggingrigscontrolablesmedia de articulacionesflexión media
artista (referencia)121146,81,299
Anything World6637,81,363 (véase más abajo)
RigNet121254,11,146
SkinTokens121132,01,078
Tripo121025,81,045
Seis animales en cinco sistemas de rigging, con los huesos de control IK del rig del artista dibujados en gris y sus huesos deformadores en azul
Seis animales, cinco sistemas de rigging. Cada celda muestra el veredicto de controlabilidad en vivo y el intervalo de flexión. En la columna del artista, los huesos azules deforman la malla y los grises son controles IK, por eso esa columna parece más recargada que los rigs predichos que aparecen a su lado.
Gráfico de puntos de la proporción de flexión media por sistema de rigging frente al intervalo sombreado de los artistas, de 1,15 a 1,50; los cuatro sistemas predichos quedan por debajo
La franja sombreada corresponde a los rigs de artista. Todos los sistemas de rigging predictivos quedan a su izquierda, por debajo de la flexión que necesita una pata, salvo Anything World, que se pasa por el motivo equivocado.
La misma rotación de rodilla aplicada a las patas traseras del ciervo del artista, Tripo, Anything World, SkinTokens y RigNet

Hay que leer con cuidado la fila de Anything World, porque es el único número que parece una victoria sin serlo. Su media de 1,363 supera la del artista, pero se debe por completo a un error descrito más adelante. Si dejamos ese error a un lado, sus patas miden entre 1,02 y 1,18. Rectas, como las demás.

Así que ninguno de los cuatro alcanza la flexión mínima de 1,15 del artista. Tampoco Tripo, que es el sistema de rigging que ofrecemos como nuestro propio nivel Pro. Ese es el hallazgo, y resulta más relevante que una clasificación. Cuatro sistemas desarrollados de forma independiente convergen en el mismo error. Todos colocan las articulaciones de las patas de un cuadrúpedo casi en línea recta.

Tiene sentido una vez que se ve. Se entrenaron con conjuntos de datos dominados por bípedos y por modelos en una pose neutra de reposo. Una extremidad recta es el promedio seguro. Un corvejón flexionado es una característica específica de los cuadrúpedos que un modelo previo principalmente humanoide tiene pocos motivos para aprender.

También cabe señalar que la fila de referencia tampoco es perfecta. Uno de los rigs de artista, el del shiba inu, no supera nuestra propia prueba de controlabilidad, y el motivo es revelador. Estos rigs incluyen una capa de control IK: cuatro objetivos de polo emparentados con la raíz y situados medio cuerpo por delante del animal, además de cuatro cadenas IK sin ningún padre. Estos cumplen la definición geométrica de «pie» tan bien como los pies reales y, en el shiba inu, se imponen, lo que produce ocho candidatos falsos de un total de doce.

Eso plantea una sospecha obvia, y conviene descartarla, porque una capa de control que confunda a un analizador geométrico parece algo que podría explicar muchas cosas. Pero no es así. Eliminar los huesos de control y volver a ejecutar el análisis cambia el resultado en exactamente uno de los doce rigs de artista. El shiba inu pasa de tener 2 extremidades defectuosas a 4 correctas, con una flexión de entre 1,28 y 1,43 que queda justo al lado de la del husky. Los otros once producen resultados idénticos, incluidas las proporciones de flexión. Por tanto, la capa IK revela un error real en nuestra detección de pies que puede corregirse con una sola línea, pero no es lo que hace que las patas creadas automáticamente sean rectas. El intervalo de los artistas, de 1,15 a 1,50, nunca se midió sobre huesos de control, y los rigs predichos carecen por completo de una capa de control: los esqueletos de Tripo no tienen ninguna, y las cinco articulaciones no deformadoras de Anything World son solo marcadores de los extremos.

El hecho de que los rigs predichos sean FK puros también juega a su favor. En este sentido concreto, un animal con rig automático resulta más fácil de interpretar para un sistema de ejecución que ignora los nombres que el rig de un artista.

Los cuatro sistemas de rigging presentan modos de fallo muy distintos ​

Tripo es el que produce las patas más rectas, con 1,045, y utiliza con diferencia el menor número de articulaciones: 25,8 frente a las 46,8 del artista. Pero acierta en la forma de la cadena donde los demás fallan. Cuatro de sus doce rigs reproducen exactamente la distribución 3/3/4/4 del artista: tres articulaciones por pata delantera y cuatro por pata trasera, algo que ningún otro sistema logró ni una sola vez. Por tanto, no está colocando un número equivocado de articulaciones. Está colocando el número correcto casi en línea recta. Es un defecto más específico de lo que parece al principio, y sugiere que recolocar las articulaciones existentes requiere menos trabajo que rehacer el rig. Dos de sus rigs no superan en absoluto la prueba de controlabilidad: el zorro vuelve con dos extremidades, y el ciervo también.

Esqueleto de ciervo, con el rig del artista junto a la predicción de Tripo, ambos con una cadena de patas 3/3/4/4
Tripo acierta en la estructura y falla en la colocación. Su ciervo utiliza exactamente la distribución de cadenas 3/3/4/4 del artista con la mitad de articulaciones, pero aun así mide entre 1,00 y 1,05 frente al intervalo de 1,18 a 1,40 del artista.

RigNet (SIGGRAPH 2020) obtiene la mejor flexión real, con 1,146, y fue el único que produjo un rig controlable para los doce animales. El problema está en sus cadenas. El artista utiliza 3/3/4/4 en los doce animales, con consistencia entre la parte delantera y la trasera. RigNet reproduce esa forma exacta una sola vez. Tres de sus rigs tienen una pata con dos articulaciones o menos, que no puede articularse en absoluto, y cuatro tienen una pata con siete o más. Su caballo tiene 2/2/8/8: dos articulaciones en las patas delanteras y ocho en las traseras. La crítica publicada de RigNet dice que «produce esqueletos irregulares», y esto es lo que significa «irregulares» en la práctica. Un barrido del ancho de banda tampoco lo arreglará, porque ese parámetro controla cuántas articulaciones hay, no cómo se distribuyen entre las extremidades.

Esqueleto de caballo, con el rig del artista y sus cadenas 3/3/4/4 junto a la predicción de RigNet con cadenas 2/2/8/8
El caballo de RigNet tiene 2/2/8/8: dos articulaciones en cada pata delantera y ocho en cada pata trasera. Una pata con dos articulaciones no puede articularse en absoluto. El artista utiliza 3/3/4/4 en los doce animales.

Anything World es el que falla de forma evidente en vez de silenciosa. Dos de los ocho animales que enviamos no recibieron ningún rig: el husky devolvió FinetuningError: Incorrect segmentation exception y la vaca, un simple Unknown error. Los seis que sí recibieron un rig son controlables. Los seis utilizan una cadena 5/5/5/5 idéntica, la estructura más consistente producida por cualquiera de los sistemas de rigging predictivos.

El problema está en las patas delanteras, y conviene precisar su forma, porque la media bruta favorece al servicio. Las patas traseras están reflejadas con exactitud en los seis casos: 1,10 y 1,10; 1,11 y 1,11; 1,13 y 1,13, y así sucesivamente hasta cinco decimales. Las patas delanteras fallan en tres de los seis, con una pata flexionada mucho más allá de cualquier postura anatómica mientras su pareja permanece casi recta. La alpaca obtiene 3,60 en la delantera izquierda frente a 1,87 en la delantera derecha. El caballo, 2,47 frente a 1,43. El ciervo, 1,43 frente a 2,13; hay que señalar que, en este caso, el valor extremo está en el lado derecho, por lo que no se trata de un sesgo constante hacia la izquierda.

Esqueleto de alpaca, el rig del artista junto a la predicción de Anything World, cuyo rango de flexión llega a 3,60
La alpaca es el caso más claro: Anything World devuelve una cadena uniforme de 5/5/5/5 y un rango de flexión de 1,10 a 3,60 entre sus cuatro patas. El par trasero coincide exactamente. El delantero no.

Volvimos a procesar el ciervo y el caballo para descartar que el problema estuviera en nuestro envío. symmetry es un campo obligatorio de la carga, y la respuesta almacenada nunca refleja lo que se envió. Tras indicar explícitamente que eran simétricos, ambos reprodujeron la anomalía. Por tanto, persiste pese al parámetro creado para evitarla, en una malla cuyo propio rig de artista es simétrico hasta tres decimales.

SkinTokens (2025, del grupo VAST-AI responsable de Tripo) es, con diferencia, el más consistente. Once de los doce tienen longitudes de cadena idénticas a izquierda y derecha, y ninguno tiene una pata de dos articulaciones o menos. Es un esqueleto estable que se mantiene demasiado recto, con 1,078, en vez de uno errático.

Dos cosas sobre SkinTokens que merece la pena anotar ​

Falla con modelos de baja densidad poligonal. Esto no está documentado. Nuestro zorro de 926 vértices hace caer su servidor de Blender en mitad de la solicitud sin ningún traceback de Python. El mismo zorro subdividido hasta 88.706 vértices se riggea en 70 segundos. Su propio modelo de ejemplo funciona porque ya tenía una malla densa. Añadir un paso de subdivisión hasta alcanzar unos 40.000 vértices antes de la llamada convirtió un fallo total en doce rigs de doce. Si se le proporcionan recursos para videojuegos, que por definición son de baja densidad poligonal, esa precondición marca toda la diferencia entre funcionar y no hacerlo.

El descubrimiento más útil es que tiene un modo que nunca habíamos probado. Al pasar --use_skeleton, se condiciona con un esqueleto proporcionado por el usuario en vez de inventar uno. Después conserva lo que se le ha dado. Cada articulación de salida queda situada sobre una articulación de entrada, con un desplazamiento medio del 0,31 % de la diagonal de la caja delimitadora y un peor caso del 0,50 %. Al exportar, las renombra todas como bone_0 y sucesivas, y elimina las que no tienen ningún peso, razón por la que este modo parecía inútil desde fuera.

Ese cambio de nombres es reversible. Basta con emparejar por posición las articulaciones de salida con el esqueleto proporcionado para recuperar todos los nombres. Funcionó con el 100 % de las articulaciones en los cuatro animales que probamos. Y como ahora el esqueleto es tuyo, también lo es la postura. Nuestro caballo mide entre 1,01 y 1,02 cuando SkinTokens elige el esqueleto, y entre 1,11 y 1,36 cuando se le proporciona el del artista. El del propio artista mide entre 1,18 y 1,37.

Antes de que esto funcione hay dos precondiciones. Rechaza directamente los esqueletos con varias raíces, y estos rigs de artista tienen cinco: el cuerpo más cuatro cadenas de cinemática inversa. Nuestra primera solución fue eliminar las raíces sueltas. Fue un error. Quitar esos ocho huesos deja entre 90 y 128 vértices sin ninguna influencia en todos los animales del paquete, porque FF y FFB son los huesos a los que el artista asignó los pesos de las patas. No son auxiliares inertes. Hacer que cada raíz suelta sea hija de la articulación corporal más cercana conserva todos los pesos y sigue dando como resultado una sola raíz.

Los nombres anónimos de huesos no son el obstáculo que parecen ​

Un esqueleto predicho llega con nombres como joint_0 o bone_0, y la conclusión habitual es que no se le puede vincular ninguna animación estándar. En los cuadrúpedos, es un problema resuelto desde cualquiera de los dos extremos.

Los nombres se pueden recuperar, como se explica arriba, cuando se proporciona el esqueleto. O se pueden derivar. Un análisis geométrico ya sabe qué cuatro cadenas son las patas, en qué cuadrante está cada una y qué recorrido corresponde a la columna y cuál al cuello. Cambiar los nombres a partir de esa información no requiere inferencia. Lo hicimos con los doce rigs de RigNet, escribiendo los nombres según una convención que nuestro runtime ya interpreta, y después volvimos a analizarlos. Los doce dieron resultados idénticos por la vía de los nombres y por la geométrica. Mismo número de extremidades, mismos cuadrantes, mismas longitudes de cadena, misma columna, mismo cuello y mismas proporciones de flexión.

Una segunda cifra: ¿es siquiera simétrico el esqueleto? ​

Las patas delanteras de Anything World nos llevaron a tomar una medida que deberíamos haber considerado desde el principio, y resultó separar los sistemas de rigging con más claridad que la flexión.

Funciona sin leer ni un solo nombre de hueso, algo importante cuando la mitad de la salida se llama bone_0. Se refleja cada articulación a través del plano de simetría del modelo y después se mide a qué distancia queda cada reflejo de la articulación real más cercana, como porcentaje de la diagonal de la caja delimitadora. Un esqueleto perfectamente reflejado obtiene cero. El plano se obtiene de la caja delimitadora de la malla, no de las articulaciones. Permitir que un esqueleto asimétrico elija su propio plano le permitiría definir su asimetría de forma que desapareciera.

sistema de riggingerror medio de simetría
artista0,01 %
RigNet0,08 %
SkinTokens0,37 %
Anything World1,08 %
Tripo1,13 %
Diagrama de puntos del error de simetría izquierda/derecha por sistema de rigging, desde el 0,01 % del artista hasta el 1,13 % de Tripo
Medido sin leer ningún nombre de hueso, por lo que se aplica igualmente a un esqueleto cuyas articulaciones se llaman bone_0. Las mallas de entrada son simétricas, así que cada cifra muestra cuánto discrepa el sistema de rigging consigo mismo sobre dónde está cada lado.
Cinco esqueletos de caballo girando uno junto a otro: el del artista y cuatro rigs predichos

Los rigs de artista están reflejados con una precisión limitada solo por el redondeo, que es el resultado esperado y una comprobación útil de que la medición funciona. RigNet es casi igual de bueno, y no se debe a la suerte: aplica simetría de forma explícita, reflejando sus articulaciones candidatas respecto a x=0 antes de agruparlas. Esa decisión de diseño se refleja en la cifra.

Tripo queda último, aunque por poco, y lo que destaca es su dispersión más que su promedio. Ocho de sus doce rigs quedan por debajo del 0,8 %, pero después el zorro llega al 15,02 % y el ciervo macho al 14,45 %. Esos dos también son los que no resultan animables, y no es una coincidencia: un sistema de rigging cuya geometría no está reflejada carece de una forma estable de distinguir un lado del otro, y ese es el mismo problema que explica las dificultades anteriores con los nombres, donde sus propias etiquetas de izquierda y derecha no coincidían entre rigs.

Son porcentajes pequeños. Una fracción de un punto porcentual es invisible en una pose estática. Aparece en cuanto un ciclo de marcha pide a las patas izquierda y derecha que hagan lo mismo con medio período de diferencia.

El ciervo del artista caminando, con su esqueleto dibujado sobre el cuerpo semitransparente

Qué vamos a hacer al respecto ​

La solución debe aplicarse al rig, no al retargeting. Hay dos vías abiertas, y ambas son más baratas que entrenar nada.

Proporcionar el esqueleto y dejar que el modelo haga el skinning. SkinTokens ya lo admite y conserva lo que recibe, y para humanoides nuestro sistema de rigging de producción ya genera un esqueleto Mixamo con nombres correctos que se podría pasar directamente. O reposicionar las articulaciones del rig existente, lo que en el caso de Tripo significa mover las articulaciones intermedias de las patas en una cadena cuyo número de articulaciones ya es correcto.

Lo que no haremos es sustituir un sistema de rigging de patas rectas por otro. No aporta ninguna ventaja. En la cifra que importa, el intervalo entre ellos va de 1,04 a 1,15, frente al 1,30 del artista, y la distancia hasta la referencia es mayor que la distancia entre dos cualesquiera de ellos.

Actualización: resultó haber una tercera vía, y cambia el panorama lo suficiente como para merecer su propio artículo. En vez de hacer retargeting entre esqueletos, ahora resolvemos la animación en el espacio propio de cada rig a partir de la superficie deformada, y la clasificación de calidad resultante invierte la anterior. Esa historia está en la parte 2: resuelve la superficie, no el esqueleto.

Salvedades, porque aquí importan ​

Los tamaños de muestra son desiguales, y eso limita el significado de los promedios. RigNet, SkinTokens y Tripo se ejecutaron con los doce modelos completos. Anything World se ejecutó con ocho, seis de los cuales produjeron un rig; los otros dos fallaron con errores que se identifican por sí solos, no con un rig defectuoso que pudiéramos medir. Los cinco rigs originales de Tripo provenían de trabajos anteriores de retargeting, así que los otros siete se procesaron para esta comparativa mediante el mismo endpoint y con las mismas entradas. Añadirlos cambió su flexión media en 0,004 y redujo su error medio de simetría del 1,54 % al 1,13 %, que da una idea aproximada de cuánto una muestra de cinco modelos lo favorecía en un sentido y lo penalizaba en el otro.

En el caso concreto de Anything World, empezamos con dos rigs y estuvimos a punto de publicar una afirmación basada en ellos. Ambos mostraban la misma anomalía en las patas delanteras, lo que parecía concluyente. Después, el primer modelo de la serie ampliada volvió sin problemas, y de repente pareció que la culpa era de nuestro propio envío. Solo con seis modelos se hizo visible el patrón real: la mitad de la muestra está afectada, las patas traseras siempre son perfectas y el lado extremo no es siempre el mismo. Dos modelos habrían producido un artículo categórico y equivocado. En cualquiera de las dos direcciones.

Los checkpoints de RigNet procedían de un mirror de terceros en vez de la descarga del propio artículo, que exige confirmación interactiva y aplica límites de frecuencia. Por tanto, sus cifras describen nuestro pipeline, no resultados certificados por los autores. Conseguir que funcionara requirió siete correcciones distintas no documentadas. Una corresponde a una solicitud interactiva de zona horaria que bloquea la compilación del contenedor sin mostrar ningún error. Otra es un visor de depuración que abre una ventana y después se bloquea para siempre. Tampoco se puede evitar ejecutándolo en modo headless, porque su voxelizador rasteriza mediante OpenGL, por lo que el proceso necesita una pantalla.

Por último, la proporción de flexión presupone una pose de enlace neutra y de pie. Es la medida adecuada para estos doce animales, pero sería incorrecta para un rig entregado a mitad de una zancada.

Los animales son CC0 y proceden de Quaternius, así que cualquiera puede repetir la prueba. Si haces rigs de cuadrúpedos y has obtenido medidas diferentes, nos gustaría conocerlas en nuestro Discord.