Skip to content

Animar colas para las que el rig automático nunca creó un hueso ​

Por Oleg Sidorkin, CTO y cofundador de Cinevva

Actualizado el 11 de septiembre de 2026: lo que nos enseñó el ratón añade flexiones elásticas, contacto con el suelo y un segundo tipo de elevación del cuerpo provocada por la cola.

Un usuario creó el rig de un zorro antropomórfico con nuestra herramienta de rigging y reprodujo el clip Walk. El cuerpo se veía bien. La cola se plegaba contra la pierna izquierda como una toalla mojada y se desgarraba donde se encontraban los pesos de las piernas izquierda y derecha. Ese zorro es el ejemplo que usamos a continuación, y la corrección ya está disponible tanto en la herramienta de rigging como en la biblioteca de ejecución que reproduce sus clips.

Tanto el zorro como el ratón que aparecen en este artículo se generaron con nuestro generador de modelos 3D y después se riggearon y animaron en Cinevva.

Tres copias de un zorro caminando vistas desde atrás: el rig original, con la cola plegada alrededor de la pierna izquierda; una cola rígida que cuelga recta; y una cola sobre una cadena de huesos, elevada y llevada hacia atrás

De izquierda a derecha, a mitad de zancada y en el mismo fotograma: el rig tal como salió de la herramienta, el mismo rig con toda la cola asignada a la pelvis como una sola pieza y la cola sobre su propia cadena de huesos, balanceada por el sistema en tiempo de ejecución. Puedes orbitar alrededor de los tres más abajo.

Por qué un rig automático humanoide hace esto ​

Nuestro motor Fast se basa en Make-It-Animatable, que predice un esqueleto fijo al estilo Mixamo: 22 huesos corporales, o 65 con los dedos. Cada vértice de la malla debe asignarse a uno de esos huesos. La cola no está en la lista, así que el modelo hace lo mejor que sabe hacer y asigna sus vértices a la parte del cuerpo más cercana en su espacio de características aprendido. En este zorro fue la espinilla izquierda, mientras que el resto se repartió entre ambos muslos.

Eso no es un error de los pesos. Es la plantilla. Ningún prompt ni ajuste hace que el modelo genere un hueso para la cola, porque en la plantilla no existe tal hueso. Lo mismo sucede con alas, capas, pelo largo y cualquier otra cosa que cuelgue del torso.

Antes de modificar nada, medimos el coste de este problema en los 1.582 vértices de la cola del zorro. La distancia entre cada vértice y los huesos que realmente lo mueven, ponderada por sus pesos, era de 47 cm de media en un modelo de 191 cm. La cola se controlaba desde medio metro de distancia.

Encontrar la cola ​

En este punto, el GLB riggeado es lo único que tenemos y también todo lo que necesitamos. El proceso funciona con la salida de cualquier herramienta de rigging, no solo con la nuestra.

Un campo de distancias sobre el esqueleto. Para cada vértice p y cada segmento óseo que va de la articulación a a la articulación b en el espacio de bind, la distancia al segmento es

d(p,ab)=‖p−(a+t(b−a))‖,t=clamp((p−a)⋅(b−a)∥b−a∥2,0,1)

y la distancia de un vértice al esqueleto es el mínimo entre todos los segmentos. Las articulaciones terminales reciben una pequeña prolongación más allá de la articulación para que un hocico o una mano no se consideren alejados de su propio hueso. Un vértice está lejos cuando esa distancia supera el 7 % de la altura del modelo. En el zorro, eso equivale a 13 cm.

Fragmentos conectados de piel alejada. Los vértices alejados se agrupan en componentes conectados siguiendo las propias caras de la malla. Un detalle nos costó una hora: los exportadores dividen vértices en las costuras de UV y de normales duras, por lo que esta malla tiene 23.129 vértices pero solo 29.081 triángulos, y el grafo de caras por sí solo divide una cola en decenas de islas. Primero soldamos los vértices por posición, calculamos la conectividad sobre el grafo soldado y volvemos a escribir los pesos en cada vértice original.

¿Dónde se une? El collar de un fragmento es el anillo de vértices no alejados que lo rodea. Su centro nos indica de dónde cuelga el fragmento mediante la articulación más cercana, con un sesgo: una articulación del torso o del muslo que esté a menos de 1,5 veces la distancia mínima tiene prioridad, porque alrededor de la pelvis las cabezas de los muslos están exactamente igual de cerca que las caderas, pero la raíz de una cola situada entre ellas pertenece al cuerpo. Deliberadamente no confiamos en los pesos del collar para esto. En una cola modelada como una superficie independiente, como ocurre en la mayoría de los modelos para videojuegos, el collar es el propio anillo de la raíz de la cola y tiene los mismos pesos incorrectos que intentamos corregir.

¿Es un apéndice o forma parte del cuerpo? Aplicamos dos pruebas. La piel alejada de un torso grueso envuelve un hueso, por lo que su centro de masas vuelve a caer sobre el hueso. Una cola sobresale hacia un lado, de modo que su centro de masas queda lejos de todos los huesos. Exigimos que la distancia del centroide al esqueleto sea al menos el 40 % del alcance del fragmento. Después aplicamos una prueba de forma: siendo λ1≥λ2 los dos mayores valores propios de la covarianza del fragmento, el alargamiento es λ1/λ2. Aquí, una cola obtiene un valor aproximado de 2,6; una capa o una falda se acerca a 1. Solo los fragmentos largos que cuelgan de la pelvis se convierten en cadenas. Los fragmentos largos que cuelgan de la columna —una funda, un carcaj o una correa— se llevan puestos, no crecen del cuerpo, y se desplazan de forma rígida con el hueso al que están unidos. Las orejas que salen de la cabeza se dejan como están: moverse rígidamente con la cabeza es justo lo que necesitan.

La cola del zorro estaba formada por dos superficies superpuestas —pelaje sobre piel, sin soldar—, así que fusionamos los fragmentos unidos al mismo punto cuyas cajas delimitadoras se solapan en más de la mitad. Una cola, una cadena.

Primer paso: hacerla rígida ​

La primera solución honesta lleva una tarde. Cada vértice del fragmento recibe un peso de 1,0 sobre Hips. La cola deja de desgarrarse y se mueve como una sola pieza con la pelvis. Parece una tabla, y es el zorro central de la imagen. Publicamos esto como un hito porque, por construcción, su estiramiento es exactamente cero, lo que la convierte en una referencia útil para la medición que mostramos más adelante.

Segundo paso: crear una cadena a lo largo de la cola ​

Una coordenada a lo largo de la cola. Ejecutamos Dijkstra desde el collar hacia el interior del fragmento, sobre las aristas de la malla ponderadas por su longitud. Cada vértice de la cola obtiene una distancia geodésica g desde la raíz, y el percentil 99 de g es la longitud L de la cola: 81 cm en el zorro, el 42 % de su altura.

Articulaciones. El número de segmentos es K=clamp(round(L/0.1H),3,8), cuatro en el caso del zorro. La articulación J0 es el centroide del collar, y la articulación Ji es el centroide de la piel cuya distancia geodésica queda a menos de medio segmento de iL/K. Dos pasadas de Ji←12Ji+14(Ji−1+Ji+1) evitan que la cadena zigzaguee donde la sección transversal es asimétrica, como ocurre siempre en la punta de una cola tupida. Los huesos van de Tail_1 a Tail_K, más un Tail_End sin peso, todos emparentados bajo Hips y con la misma rotación de bind que Hips, de modo que cada uno es una traslación pura en el espacio de su padre. Sus matrices de bind inversas se obtienen directamente, y los clips existentes nunca hacen referencia a ellos, así que nada posterior se rompe.

Pesos. Con s=Kg/L, k=⌊s⌋ y f=s−k, un vértice del segmento k pertenece al hueso k+1 y comparte los extremos con sus vecinos:

wprev=clamp(0.5−2f, 0, 0.5),wnext=clamp(2f−1.5, 0, 0.5),wself=1−wprev−wnext

En una articulación, los dos huesos se reparten la influencia al 50 %; en el centro de un segmento, un solo hueso controla por completo la piel. En el segmento raíz, «prev» es Hips, por lo que la cola se integra con el cuerpo en vez de formar un pliegue en el collar.

Después del proceso, la distancia ponderada a los huesos en la cola bajó de 47 cm a 17 cm, aproximadamente el radio de la propia cola. Esa es la distancia mínima que puede haber entre la piel y el hueso que la controla.

Vista lateral del zorro caminando con el esqueleto dibujado sobre la malla; cuatro huesos recorren la cola desde la pelvis y la mantienen elevada y hacia atrás

Tercer paso: algo tiene que mover los huesos ​

Ningún clip de nuestra biblioteca contiene pistas para la cola, así que, sin trabajo adicional, la cadena mantiene su pose de bind y el zorro camina con una tabla a la espalda. Los videojuegos resuelven esto con movimiento secundario procedimental, y nosotros también, dentro de la biblioteca de ejecución que ya carga cada modelo riggeado.

La punta de cada articulación es una partícula p con velocidad v. Su objetivo de reposo T es el lugar donde la pose de bind indica que debería estar la punta, calculado en cada fotograma a partir de la transformación actual del hueso padre en el espacio global. La partícula sigue un resorte amortiguado:

p¨=ω2(T−p)−2ζωp˙+g

con ω=2πf. El segmento raíz oscila a f=0.9 Hz y la punta a la mitad, porque una cola es músculo en la base y pelaje en el extremo. La relación de amortiguación original era ζ=0.45; la actualización del ratón que aparece más abajo la eleva a 0.65 para reducir el sobreimpulso. La gravedad es de 1 m/s², no de 9,8; una cola tiene músculos. Integramos mediante Euler semiimplícito y después aplicamos la restricción de cuerda proyectando p de nuevo sobre la esfera definida por la longitud del hueso alrededor de su cabeza. Una cuerda no puede estirarse, así que su velocidad longitudinal tampoco: descartamos el componente radial (p˙⋅n^)n^ y conservamos el balanceo. Por último, recuperamos la rotación del hueso: el cuaternión que lleva su dirección de bind hasta la dirección de la partícula.

Como las partículas existen en el espacio global, al girar o acelerar las caderas la cola se retrasa y se balancea por sí sola. Nada está guionizado.

Vale la pena admitir tres errores, porque todos parecían correctos hasta que los medimos.

La primera versión acercaba cada partícula una fracción fija hacia su objetivo en cada fotograma: un 12 % a 60 fps. Expresado como resorte, eso equivale a ω≈0.12/Δt≈21 rad/s, una vibración de 3,4 Hz; como esa rigidez apenas permitía que se movieran los segmentos de la raíz, todo el movimiento se acumulaba en la punta. Expresar el resorte en unidades físicas corrigió ambos problemas a la vez.

La segunda versión reinyectaba la corrección de la cuerda como velocidad: corrección dividida por Δt. Eso se parece a la actualización estándar de dinámica basada en posiciones y resulta estable mientras las caderas se mueven despacio, como sucede en un ciclo de caminata. Cuanto más rápido se mueve el padre, mayor es la corrección y mayor la velocidad que inyecta. Un barrido de cadera de medio metro durante dos tercios de segundo bastaba: un hueso giraba 95° mientras sus vecinos se movían 3°. Una prueba sin renderizado que balanceaba las caderas con más fuerza que cualquier clip que publiquemos detectó el problema; el ciclo de caminata nunca lo habría hecho.

El tercero fue el ángulo de porte que se describe a continuación. Se aplicaba en el espacio propio de cada articulación, de modo que una cola de cuatro huesos se elevaba cuatro veces, se enrollaba formando una bola contra el lomo del zorro y desgarraba su propia piel en cada doblez. La medición posterior fue lo que lo reveló: el estiramiento de las aristas de la cola alcanzó un p99 de 2,3 frente a un valor base de 1,3 en el cuerpo, peor que cuando estaba vinculada a la espinilla. Ahora, carry representa la elevación de toda la cola, repartida entre sus articulaciones.

Intersecciones. La cola estaba modelada colgando recta entre las piernas, y el ciclo de caminata hacía que los pies la atravesaran. Por tanto, la pose de reposo hacia la que apunta el resorte no es la de la propia malla: un carry de 50° eleva los objetivos de reposo hacia atrás y hacia arriba alrededor del eje lateral de las caderas, como lleva la cola un zorro al moverse. Esos 50° corresponden a la elevación de toda la cola y se reparten entre sus articulaciones, de modo que el arco sea suave tanto si la cadena tiene cuatro huesos como si tiene ocho. Además, ninguna partícula puede cruzar el plano que pasa por la raíz de la cola y mira hacia delante, por lo que la cola nunca puede balancearse entre las piernas.

Medición ​

Estas son las mediciones originales del zorro, realizadas el 6 de septiembre antes de los cambios del ratón que se explican más abajo. Documentan el primer solver de la cadena, no una nueva prueba de rendimiento de los valores predeterminados revisados.

Las imágenes estáticas no demuestran nada sobre los desgarros, así que medimos el estiramiento de las aristas durante el clip. Para cada arista de la malla cuyos dos vértices pertenecen a la cola, calculamos la relación entre su longitud después del skinning y su longitud de bind en 24 instantes distribuidos uniformemente a lo largo del clip Walk. Una relación de 1 representa piel sin deformar. Una arista estirada por encima de 1,5 o comprimida por debajo de 0,67 se considera desgarrada. Las aristas del cuerpo se miden del mismo modo para establecer como referencia la distorsión normal del skinning.

Clip Walk, 96.864 muestras de aristas de la colap95p99máx.desgarradas
Rig original1.602.424.0311.4%
Rígida respecto a Hips1.001.001.000%
Cadena de la cola1.091.181.300%
Cuerpo, como referencia1.131.291.78—

En el rig original, una de cada nueve aristas de la cola superaba el umbral de desgarro, y la peor alcanzaba cuatro veces su longitud de bind. La peor arista de la cadena tiene una longitud un 30 % mayor, dentro del valor base de 1,78 del propio cuerpo, y no se desgarra ninguna. La cola rígida se mantiene exactamente en 1,00 porque se mueve como una sola pieza; ese valor nos confirmó que el sistema de medición era correcto antes de confiar en él para la cadena.

Una cola que realmente se balancea tiene que deformar un poco su propia piel, así que el objetivo de la cadena no es llegar a 1,00, sino mantenerse por debajo de la deformación que ya presenta el cuerpo. Una versión anterior de esta tabla mostraba un p99 de 1,03 para la cadena, lo que parecía mejor pero en realidad era peor: la cola apenas se movía porque el error de velocidad descrito anteriormente la había sobreamortiguado hasta dejarla casi igual que la versión rígida.

La comparación interactiva ​

Tres copias del zorro, el mismo clip y el mismo fotograma. Arrastra para orbitar y usa la rueda para hacer zoom. Cambia de clip, desactiva la física de la cola para ver la cadena en su pose de reposo elevada y activa los huesos para ver dónde se encuentra la cadena.

La misma cadena vista de lado, aislada y con el esqueleto dibujado. Sprint es el clip que mejor muestra el resorte.

Lo que nos enseñó el ratón ​

El zorro demostró que una cadena podía evitar los desgarros. Un ratón con una cola larga y fina hizo que los errores de movimiento restantes fueran mucho más fáciles de ver. Una curva brusca que queda oculta entre el pelaje de un zorro parece una articulación rota en el ratón. Su cola también llega al suelo y la forma modelada se curva hacia un lado. Son tres problemas distintos; aumentar la rigidez del resorte no los resuelve todos.

Prueba el ratón con la biblioteca de animaciones que aparece a continuación. Arrastra el personaje para orbitar a su alrededor, desplaza lateralmente la tira de miniaturas o usa la búsqueda y el filtro de categorías para encontrar un movimiento. Haz clic en una miniatura para reproducirlo en la vista previa grande. Walk, Crouch Backward, Crawl Idle y Back Flip son buenos puntos de partida para inspeccionar la cola. La tira utiliza las mismas vistas previas de animación en tiempo real que nuestro hero de animaciones y permite acceder al catálogo completo, cargando los movimientos a medida que exploras.

Abre la biblioteca completa de animaciones → para probar estos movimientos con tu propio personaje riggeado y exportar los clips que elijas.

Una cadena de resortes también necesita resistencia a la flexión ​

Las partículas estaban restringidas para conservar la longitud de cada hueso, pero cada articulación aún podía oscilar de forma casi independiente. Las restricciones de longitud evitan el estiramiento, pero no impiden que una bisagra se pliegue. El ratón dejó clara precisamente esa diferencia.

Antes de corregir el ratón: el esqueleto de la cola cambia bruscamente de dirección cerca de la punta y la malla termina en un quiebro hacia abajo

Antes de las correcciones: mantener intactas las longitudes de los segmentos no bastaba para conservar una curva suave.

Ahora acoplamos las flexiones adicionales de las articulaciones vecinas, medidas con respecto a la curva de reposo. Las flexiones se comparan en un sistema de referencia común para que los distintos ejes de los huesos no conviertan una flexión hacia la izquierda en una torsión sin relación en la articulación siguiente. En cada paso se lee una instantánea de los vecinos, en lugar de valores parcialmente actualizados. La mezcla de acoplamiento es 1−e−kΔt, con una tasa predeterminada de k=12 por segundo, en vez de una fracción fija por fotograma renderizado.

La flexión elástica de una articulación se limita a 30° más allá de su dirección de reposo. También aumentamos la amortiguación a 0,65 y eliminamos la velocidad que sigue empujando contra el límite de flexión, para que no pueda acumularse y liberarse en forma de latigazo. La base sigue apoyada por las caderas y la punta continúa siendo más flexible. El contacto puede imponerse al límite de flexión cuando la cola necesita apoyarse en el suelo.

Acoplar rotaciones, no posiciones de partículas. Numeremos los N eslabones desde i=0 en las caderas. Sea hi la cabeza de un eslabón, pi su punta predicha y ℓi su longitud. Su dirección candidata es di=(pi−hi)/∥pi−hi∥. En el sistema de referencia del padre actual, sea ri la dirección unitaria de reposo y d~i la dirección candidata. Escribamos swing(a,b) para el cuaternión unitario más corto que lleva el vector unitario a hasta b. Si Ai rota el sistema de reposo de ese padre hasta el sistema común de las caderas, la flexión que comparamos con las vecinas es

qi=Aiswing(ri,d~i)Ai−1.

Esta conjugación cambia el sistema de coordenadas de la flexión; no añade otra rotación al personaje. Usando instantáneas qjold del paso anterior, el objetivo vecino y la flexión acoplada de una articulación interior son

q¯i=slerp(qi−1old,qi+1old,12),α=1−exp⁡(−kΔt),qi∗=slerp(qi,q¯i,α).

En la base, el objetivo vecino se encuentra a mitad de camino entre la flexión de la articulación siguiente y el cuaternión identidad I, lo que representa el apoyo de las caderas. La punta libre usa su único vecino; una cola de un solo eslabón omite el acoplamiento entre vecinos. Con k=12s−1, α es aproximadamente 0,181 a 60 fps y 0,330 a 30 fps. Esto da al acoplamiento una tasa basada en el tiempo, aunque el solver completo sigue teniendo errores de integración y contacto que dependen del paso temporal.

Para un cuaternión unitario qi∗ con componente escalar wi, su ángulo de rotación más corto es θi=2arccos⁡(clamp(|wi|,0,1)). El límite elástico es

qilimited={qi∗,θi≤θmax,slerp(I,qi∗,θmax/θi),θi>θmax,θmax=π/6.

Transformamos esta flexión de vuelta al sistema del padre y la aplicamos a ri antes de las proyecciones de contacto. Esta es una regla local para suavizar la flexión, no una simulación completa de una varilla elástica: distribuye la curvatura adicional y la limita sin pretender resolver una energía de flexión global.

La pose cargada no es necesariamente la pose de enlace ​

El archivo guardado del ratón ya tenía unos 28° de rotación en la última articulación de la cola. Estábamos interpretando esa rotación cargada como neutral y añadiendo después el movimiento del resorte. Una pose previamente animada o exportada se había convertido en una parte permanente del objetivo del resorte.

Ahora el solver recupera las transformaciones locales neutrales a partir de las matrices de enlace inversas del esqueleto cuando están disponibles. Si un rig no tiene un auxiliar Tail_End, su último segmento prolonga la tangente entrante expresada en el sistema local propio de ese último hueso. Copiar un vector del sistema del padre es incorrecto en cuanto el hueso terminal tiene una orientación diferente.

La curvatura hacia un lado tenía otra causa: estaba presente en la geometría de enlace real. Por tanto, recuperar correctamente la pose de enlace conservaba el sesgo. La simulación ahora utiliza de forma predeterminada un arco de reposo centrado, construido en el espacio de las caderas y convertido al sistema de cada padre corregido. restCurve permite volver a incorporar gradualmente la curvatura modelada: 0 corresponde al arco centrado y 1 conserva la curva creada por el artista. Esto cambia el objetivo de los resortes; no reescribe la malla ni sus pesos de skinning.

Recuperación de las transformaciones de referencia. Sea Bi la matriz de enlace inversa de un hueso. Su transformación de enlace en el espacio global es Wi0=Bi−1, por lo que, cuando tanto el hueso como el padre tienen matrices de enlace, la transformación local neutral es

Li0=(Wparent(i)0)−1Wi0.

Al descomponer Li0 obtenemos la traslación y la rotación locales que necesitamos. Leer en su lugar el cuaternión cargado sustituiría esta referencia por un fotograma arbitrario de una animación guardada.

Construcción del arco centrado. Sea ai la dirección unitaria creada para el segmento i en el espacio de las caderas. Eliminamos la componente lateral de la dirección raíz para obtener c=normalize(0,a0y,a0z) y, si esa proyección se anula, usamos como alternativa la dirección descendente. Sea β∈[0,1] el valor de restCurve y C el ángulo total de arrastre en radianes. Si rot(q,v) denota la rotación del vector v mediante el cuaternión q, la dirección deseada en el espacio de las caderas es

Qi(β)=slerp(I,swing(c,ai),β),ui=Rx(Ci+1N)rot(Qi(β),c),ri=rot(Ai−1,ui).

Aquí, Rx es la rotación alrededor del eje lateral de las caderas. Es fundamental que Ai incluya las correcciones de reposo ya aplicadas a las articulaciones anteriores de la cadena. Esto hace que ui sea la dirección absoluta prevista para este segmento, en vez de volver a añadir la corrección de enderezamiento en cada articulación. Con β=0 se elimina la curvatura lateral modelada; con β=1 se conservan sus direcciones antes de aplicar el arrastre.

La cola puede tocar el suelo, pero no puede levantar al ratón ​

El contacto con el suelo rota un segmento hasta la intersección de su esfera de longitud con el suelo. Limitar simplemente la altura de una partícula acortaría el hueso; limitarla y después restaurar su longitud puede volver a dejarla bajo el suelo. Dejamos 0,025 unidades del mundo por debajo de la línea central para representar el grosor, eliminamos la velocidad descendente durante el contacto y amortiguamos el deslizamiento. El suelo plano se encuentra de forma predeterminada en Y = 0 del mundo y puede desplazarse o desactivarse. Esta es una restricción de plano, no una colisión con terreno ni con una malla completa.

La intersección entre esfera y suelo. Escribamos F=g0+ρ para la altura del suelo más la separación de la línea central, donde g0=0 y ρ=0.025 de forma predeterminada. El segmento debe satisfacer

∥pi−hi∥=ℓi,(pi)y≥F.

Si el extremo predicho está por debajo del suelo, definimos u=(F−hiy)/ℓi. Cuando |u|≤1, el contacto se encuentra sobre un círculo horizontal. Si t es una dirección unitaria horizontal, el extremo corregido es

pi′=hi+ℓi(1−u2t+uey),ey=(0,1,0).

Su altura es exactamente F y su distancia respecto a la cabeza es exactamente ℓi, porque (1−u2)+u2=1. Elegimos t a partir de la proyección horizontal de la dirección candidata, usando como alternativa la dirección de reposo si esa proyección se anula. El plano de las caderas que mantiene la cola detrás puede restringir qué parte del círculo está permitida. El contacto tiene prioridad sobre el límite de flexión elástica. Si la cabeza está tan por debajo del suelo que u>1, ninguna rotación de este segmento de longitud fija puede alcanzarlo; la implementación limita u en vez de estirar el hueso o levantar el cuerpo.

Después de las demás proyecciones de velocidad, se elimina la velocidad descendente restante de una partícula en contacto y se amortigua su velocidad:

vi′=e−γΔt[vixmax(0,viy)viz],γ=8s−1.

Se trata de un contacto inelástico con amortiguación sencilla, no de un modelo de fricción de Coulomb. Evita que la gravedad acumule velocidad descendente mientras la cola descansa sobre el suelo.

Esto resolvió la penetración de la cola, pero había otros dos lugares en los que una cola podía hacer que los pies flotaran.

En primer lugar, el visor colocaba sobre el suelo el punto más bajo de toda la malla cargada. Si la cola guardada colgaba por debajo de las plantas de los pies, elevaba todo el personaje para acomodarla. Ahora, al determinar el suelo del cuerpo, la colocación del visor ignora el skinning dominado por la cola, mientras que el encuadre de la cámara sigue incluyendo al personaje completo.

En segundo lugar, la fase de apoyo del cuerpo sobre el suelo del retargeter también tenía en cuenta la cola. Durante Back Flip elevaba la pelvis para mantener ese skinning separado del suelo, aunque el solver independiente de la cola lo movería después.

¿Qué skinning puede elevar la pelvis? Sea S el conjunto de puntos de apoyo muestreados del skinning del cuerpo, T los dominados por huesos de la cola y E los asignados a los solvers de contacto de las extremidades. El suelo de referencia se mide durante la calibración a partir de S∖T. La separación del resto del cuerpo en el fotograma t es

fbody=minv∈S∖Tyv0,c(t)=minv∈S∖(T∪E)yv(t)−fbody,Lraw(t)=max(0,a(t)−c(t)).

Aquí, a(t)≤0 es el margen derivado de la fuente para descender por debajo del suelo de referencia. Lraw es la elevación solicitada antes del suavizado temporal y la conciliación de extremidades del retargeter. La misma exclusión de la cola debe aparecer en ambos mínimos: eliminarla solo de la sonda de la pose actual seguiría dejando un suelo de referencia incorrecto. La implementación muestrea el skinning agrupado por hueso dominante, en lugar de evaluar cada vértice en cada fotograma.

Para la comparación siguiente, la elevación adicional indicada es una diferencia entre las trayectorias finales de la pelvis, no solo la corrección sin procesar:

Δyhips(t)=yhipstail counted(t)−yhipstail excluded(t).

Elevación medida de la pelvis cerca del final de Back Flip

Muestreamos el mismo ratón en los mismos instantes de la animación, cambiando únicamente si la cola se incluía en el apoyo del cuerpo sobre el suelo. Ambas columnas usan las mismas coordenadas globales del modelo; la diferencia aísla la altura adicional introducida al tener en cuenta la cola.

Tiempo en el clip de 1,93 sAltura de la pelvis: cola incluidaAltura de la pelvis: cola excluidaElevación adicional por incluir la cola
1,16 s50,5 cm35,0 cm15,4 cm
1,55 s81,3 cm70,3 cm11,0 cm
1,84 s92,2 cm77,2 cm15,0 cm
1,93 s90,6 cm77,2 cm13,4 cm

El personaje debe elevarse mientras se pone de pie después de aterrizar. El error es la elevación adicional de la última columna, no ese movimiento de recuperación intencionado. Los valores se han redondeado de forma independiente a partir de las posiciones globales muestreadas.

En este ratón, excluir la cola eliminó aproximadamente 15 cm de elevación adicional de la pelvis hacia el final de Back Flip. Cerca del final, la sonda del cuerpo permaneció a aproximadamente un milímetro de su suelo de referencia, en vez de flotar varios centímetros por encima. Ahora el skinning de la cola no define ni el suelo del cuerpo ni la corrección que eleva su pelvis. El propio solver de la cola solo rota los huesos de la cola; nunca traslada el modelo, las caderas ni los pies.

Una animación puede heredar una pose antes incluso de que la reproduzcas ​

La postura agachada y elevada reveló otro problema. Generamos progresivamente los clips de la biblioteca para que el visor pueda empezar a reproducir antes de que todos estén listos. El retargeting utilizaba el mismo esqueleto que la reproducción. Entre cálculos, la vista previa podía mover la pelvis y el siguiente clip leía esa pose animada como referencia de calibración. Restablecerla al cambiar de clip no podía reparar una referencia incorrecta ya incorporada en las pistas generadas.

Ahora el retargeting funciona con copias privadas del esqueleto creadas a partir de una calibración estable capturada antes de que comience la reproducción. Las solicitudes posteriores de clips reutilizan esa referencia y las solicitudes simultáneas tienen huesos separados. Una prueba de regresión mueve y rota deliberadamente las caderas en vivo entre los clips entregados; las pistas generadas deben seguir siendo idénticas a las de una ejecución limpia y el cálculo debe dejar intacta la pose en vivo. No todos los movimientos visibles eran errores. La animación Climb Idle tiene un ligero balanceo de la pelvis en su bucle de origen, con la raíz inmóvil. Además, una nueva resolución de Crawl Idle mantuvo las manos del ratón por debajo de la cabeza durante todo el bucle; la captura con las manos levantadas correspondía a un clip anterior contaminado, en lugar de demostrar que la animación de origen buscaba esa pose. Comparar el original, una resolución nueva y el resultado en reproducción evitó que aplanáramos movimientos intencionados para ocultar un error de calibración.

Qué comprobamos ahora ​

Las comprobaciones abarcan barridos rápidos de cadera en cadenas de distintas longitudes, flexiones más suaves entre huesos vecinos, respuestas simétricas a izquierda y derecha, recuperación de la pose de enlace, un hueso terminal rotado sin auxiliar y el cierre del bucle tras el calentamiento. Las pruebas de suelo abarcan agacharse, planos de suelo elevados, el asentamiento y la liberación cuando suben las caderas. Otras pruebas de regresión verifican que el contacto de la cola nunca mueva el cuerpo y que la piel de la cola no pueda solicitar que se eleve la pelvis.

Estas comprobaciones establecen invariantes concretos. No sustituyen la observación del ratón mientras realiza sus movimientos ni establecen nuevos valores de estiramiento para el zorro. Los ejemplos en vivo usan el solucionador revisado; la tabla anterior del zorro sigue siendo un registro de la medición original.

Cómo te afecta este cambio ​

Si preparas un personaje con cola en cinevva.com/tools/rigger, la cola se entrega en su propia cadena de huesos, el estado de la tarea incluye una entrada appendages que describe lo detectado y la vista previa la balancea. Los modelos preparados mediante la API de la plataforma reciben el mismo archivo. La integración original de rt/1.1.12 hacía que createAnimator encontrara los huesos Tail_* y los animara sin código adicional; la frecuencia, la amortiguación, la gravedad y el ángulo de porte del resorte son opciones configurables si quieres una cola más pesada o más perezosa. Los archivos antiguos sin una cadena de cola pueden volver a pasar por el proceso repitiendo el rigging. Los cambios del 11 de septiembre descritos arriba ya están activos en las vistas previas web de Cinevva. Los juegos fijados a una versión anterior del runtime y los clips exportados previamente no se actualizan automáticamente. Los clips horneados existentes deben regenerarse para incorporar las correcciones.

En Blender. El complemento ejecuta el mismo proceso sobre la tabla del rig antes de construir el armature, por lo que una cola preparada en tu propio equipo obtiene la misma cadena con los mismos nombres. Hay una casilla Cola junto a Dedos, y la tarjeta de resultados indica lo que ha encontrado.

Fuera de nuestro runtime. Un resorte en un juego no ayuda a quien abre el archivo en Blender, Unity o Unreal, donde la cola permanecería inmóvil. Por eso, la exportación ahora lo hornea: cada clip seleccionado se simula y las rotaciones de la cola se muestrean como fotogramas clave reales. El exportador reproduce el clip en silencio hasta que la cola vuelve al punto donde comenzó el proceso y entonces empieza a grabar, porque un ciclo horneado desde un arranque en frío no se cierra y la cola salta al repetirse el bucle. La punta es intencionadamente el eslabón más flexible, por lo que su transición es la que más tarda en estabilizarse y una sola pasada de calentamiento no siempre basta.

El proceso es deliberadamente conservador. Solo crea una cadena para una pieza larga que cuelgue de la pelvis. No toca las orejas, el pelo ni las mangas, ni tampoco ninguna pieza ancha del torso: una versión anterior asignaba rígidamente una capa o una falda al hueso del torso, pero verla funcionar con archivos reales cambió nuestra opinión. Una de ellas era una prenda de 6540 vértices a la altura de la cintura que el rigger había distribuido de forma sensata entre las caderas y ambos muslos; asignarla a un solo hueso habría impedido por completo que siguiera el movimiento de las piernas. Asignar una prenda a un único hueso supone un gran cambio en el personaje de alguien basado en una suposición sobre qué es esa pieza, así que ahora es algo que debes solicitar, no algo que simplemente te sucede. No hay colisión con las piernas más allá del plano frontal ni balanceo en reposo cuando el personaje permanece quieto, por lo que la cola de un zorro de pie cuelga tranquilamente en su pose de porte. Esas son las dos próximas tareas de la lista, junto con aplicar el mismo tratamiento a las alas, que necesitan una pose de reposo y un resorte diferentes.