El pelo debería balancearse, no convertirse en un tentáculo
Por Oleg Sidorkin, CTO y cofundador de Cinevva

Un personaje gira la cabeza. Su pelo debería seguirla un instante después, balancearse un poco y luego volver al reposo. Nuestra primera versión hacía otra cosa: las puntas se rizaban hacia dentro, como si el peinado intentara convertirse en un tentáculo.
Los huesos conservaban sus longitudes. La simulación permanecía estable. Las métricas que observábamos superaban las pruebas. Pero el movimiento seguía pareciendo incorrecto.
Esta es la siguiente parte de nuestro autorigger: dotar al pelo de articulaciones propias y movimiento secundario. Empezamos con una malla de prueba sencilla y luego pasamos a dos avatares reales. Eso cambió tanto la implementación como lo que medimos.
Primero, reconstruir una coleta real
Seed-san tiene una malla de coleta independiente. Para esta prueba, borramos los pesos de skinning originales de esa malla, la vinculamos a la cabeza y pedimos a nuestro ajustador geométrico que construyera una nueva cadena de pelo de seis articulaciones. El resto del personaje conservó su skinning original. Las siete cadenas cortas del flequillo también conservaron los pesos creados por el artista.
El ajustador recorre la superficie conectada del pelo desde la raíz hacia fuera, coloca articulaciones a lo largo de ese recorrido y mezcla las influencias de las articulaciones cercanas. Una pequeña franja en el punto de unión permanece fijada. Este es un flujo de trabajo basado en mechones seleccionados: le indicamos qué malla corresponde al pelo. No detecta automáticamente cada mechón de un personaje arbitrario.
Prueba la coleta a continuación. Usa Movimiento del pelo para alternar entre el solucionador anterior y el mejorado en una sola vista previa. Elige Mover y volver al reposo para observar cómo el pelo se detiene. Pausa para examinar una pose o arrastra la vista previa para orbitar. El selector Animación ofrece las 260 animaciones universales. Elige un clip para ver moverse todo el cuerpo; Encuadre → Primer plano del pelo devuelve la cámara a los mechones. Prueba de giro de cabeza vuelve a la comparación controlada.
Quitamos la mochila y el brazo robótico independientes de Seed-san de estas vistas para no tapar la coleta. El cuerpo, la geometría del pelo, los pesos de skinning y la animación no cambian al ocultarlos; esto no es una corrección de colisiones con la mochila.
Prueba la biblioteca de animaciones universales
El selector de animaciones utiliza el mismo sistema de retargeting en espacio global que el rigger y el runtime de Cinevva. Asignamos los metadatos humanoides VRM de cada avatar a los nombres de articulaciones que espera el sistema de retargeting, seleccionamos el skin del cuerpo en lugar de un skin anterior exclusivo del pelo y capturamos la pose sin animar del cuerpo antes de iniciar la demostración del pelo. Esto evita interpretar una cabeza girada o una postura agachada como la pose de reposo del personaje al seleccionar otro clip.
El clip seleccionado se obtiene de la biblioteca Universal compartida, se somete a retargeting una vez y se reproduce en el personaje seleccionado. El desplazamiento horizontal se elimina para mantener al personaje dentro de la vista. Todas las animaciones universales seleccionadas se reproducen en bucle en estas demostraciones, incluidas las acciones marcadas originalmente para reproducirse una sola vez. Reiniciar vuelve a reproducir la acción seleccionada. El movimiento del pelo se ejecuta después de la animación corporal.
Aplicamos retargeting a los 260 clips en cada avatar: 520 resultados, sin articulaciones corporales obligatorias ausentes, pistas numéricas no válidas ni pistas de animación corporal dirigidas a las articulaciones del pelo. También muestreamos Idle, Walk, Jump, Back Flip, Dance, Crouch Forward y Sitting Idle, comprobamos el movimiento y la sincronización del cuerpo e inspeccionamos las poses renderizadas. Estas comprobaciones demuestran que el retargeting es utilizable en estos dos rigs, no que cada fotograma sea visualmente perfecto. Resultados de las comprobaciones de retargeting.
La ropa también necesita sus controles originales. Este ejemplo VRM utiliza restricciones de orientación y torsión para las mangas y la deformación de las extremidades; animar únicamente las articulaciones humanoides deja las mangas en su pose original. La demostración ahora carga estos controles con el módulo oficial de restricciones de nodos de VRM y los actualiza después de la animación corporal y antes de la simulación del pelo. Así se conserva el rig de ropa suministrado; no se añade una simulación de tela.
La biblioteca completa está disponible para su inspección, pero las mediciones de intersección y estiramiento que aparecen a continuación siguen utilizando la secuencia controlada de giro de cabeza. No demuestran que el pelo esté libre de colisiones en cada baile, caída o voltereta.
El error estaba en la forma de reposo
Una cadena de articulaciones necesita una dirección hacia la que regresar. Nuestro solucionador anterior calculaba esa dirección con respecto a la articulación superior, que ya estaba doblada. Por tanto, una pequeña desviación en la parte superior cambiaba la dirección de reposo del siguiente segmento, que a su vez volvía a cambiar la del siguiente.
Esa acumulación producía el rizo. Mantener cada hueso con la longitud correcta no podía evitarlo.
El nuevo solucionador recuerda el arco original del peinado en el sistema de coordenadas de la cabeza en movimiento. Cada segmento sigue teniendo inercia y amortiguación, pero su dirección de restauración procede de esa forma original. La cabeza puede girar mientras el pelo se retrasa; ese retraso ya no se convierte en una nueva curva de reposo para todo lo que queda por debajo.
También ajustamos los rigs existentes de los artistas para que fueran un poco más firmes y aumentamos la amortiguación. La comparación del antes y el después incluye ese ajuste, no solo el cambio del sistema de coordenadas.
Un objetivo móvil que conserva el arco original
Para el segmento
Cada paso combina la atracción hacia este objetivo con la gravedad y la amortiguación exponencial:
Aquí,
Después devolvemos el extremo a su distancia fija
Esta proyección conserva la longitud del hueso. Por sí sola, no conserva todas las aristas de los triángulos ni mantiene el mechón fuera de la ropa. La implementación utiliza la dirección de reposo si la dirección candidata degenera.
Después, prueba un peinado completo
El segundo avatar, un ejemplo de pixiv, tiene doce cadenas de pelo y 12.868 vértices de pelo. Aquí conservamos las articulaciones y los pesos del artista y sustituimos el comportamiento del movimiento secundario. Este ejemplo demuestra la animación de un peinado existente, no la reconstrucción automática de su malla de pelo fusionada.
Observa las puntas desde el lateral y la parte posterior. La versión mejorada conserva mejor la silueta prevista sin perder movimiento. La versión anterior concentra las puntas en un rizo más pronunciado.
Los modelos reales también revelaron un error más discreto: algunos flequillos cortos terminan en un nodo que no es un hueso con skinning. Estábamos omitiendo esas cadenas. Ahora el importador acepta esos extremos y lee las cadenas de pelo de la cabeza nombradas explícitamente en los metadatos de muelles de VRM 1. También lee los proxies de colisión esféricos y en forma de cápsula, así como los radios de colisión de cada articulación.
La especificación de huesos de muelle de VRM proporciona la estructura de intercambio. Nuestro movimiento utiliza un solucionador personalizado con valores predeterminados ajustados, en lugar de implementar por completo todos los parámetros de muelle de VRM. Las demostraciones emplean el cargador de materiales MToon de pixiv para el sombreado, las texturas y los contornos de la cara y la ropa originales. Desactivamos las capas expandidas de contorno del pelo porque atraviesan estas superficies finas en capas. Ambos ajustes de movimiento utilizan la misma iluminación y los mismos materiales. La implementación de huesos de muelle de three-vrm de pixiv es una referencia consolidada para ese ecosistema.
Por qué los mechones delanteros atravesaban la camisa
Comprobar únicamente las posiciones de las articulaciones no detectaba un fallo visible: el mechón entre dos articulaciones podía atravesar un hombro aunque ambos extremos estuvieran fuera de su forma de colisión. También encontramos un error de indexación al procesar los radios de VRM: leer el radio de la siguiente articulación hacía que el segmento final tuviera un radio de cero.
Ahora los dos mechones delanteros utilizan comprobaciones de colisión a lo largo de cada segmento completo. Una fase de ajuste compartida mide la geometría visible del cuerpo y la ropa alrededor de las formas de colisión existentes, con límites de expansión basados en el tamaño corporal. El alcance, la posición y la asignación de pesos de skinning de los mechones determinan qué cadenas necesitan comprobaciones por segmento. Ambos avatares utilizan ahora este algoritmo sin reglas basadas en nombres de modelos o mechones. Ampliar las comprobaciones de colisión a todo el peinado aumentó el estiramiento, por lo que las restricciones de unión a la cabeza y los flequillos cortos conservan su tratamiento original.
Comprobamos el resultado frente a la propia camisa con skinning, independientemente de esos proxies. Durante un ciclo de giro de cabeza, la camisa ocultó hasta 555 de los 1.503 vértices de los mechones delanteros con el movimiento anterior. El ajuste automático registró cero impactos más allá del umbral de medición de 1 mm, tanto a 30 como a 120 fotogramas por segundo. La profundidad máxima medida anteriormente era de 75,2 mm. Esta es una medición de oclusión desde la vista frontal, no una afirmación de colisión perfecta con la superficie ni una garantía para todas las animaciones. Descarga las mediciones de los mechones delanteros.
Mantener los mechones fuera de la camisa conlleva una contrapartida: el estiramiento del percentil 99 del peinado en capas aumentó del 17,1 % antes del ajuste de colisiones al 18,0 %. Sigue por debajo del 26,0 % del solucionador anterior; la tabla siguiente refleja el resultado actual.
La respuesta al contacto necesitaba otra corrección: al expulsar un mechón de la ropa, la corrección se convertía en velocidad y provocaba un rebote visible en el paso siguiente. Ahora resolvemos la intersección sin añadir ese impulso, eliminamos el movimiento entrante en el contacto y conservamos el movimiento de deslizamiento. Una prueba de regresión con un mechón en reposo comprueba tanto el contacto del extremo como el del segmento completo: el mechón corregido permanece en la posición de contacto en vez de salir disparado.
Contacto a lo largo del mechón, sin impulso de rebote
Un eslabón de pelo y el eje de una cápsula son segmentos de línea. Escribimos sus puntos como
Para evitar que la corrección de posición se convierta en un rebote, reconstruimos la velocidad antes de expulsar el extremo del contacto:
Después de una corrección de contacto distinta de cero, sea
El movimiento tangencial se conserva, por lo que el mechón puede deslizarse. La propia corrección de posición no se añade a la velocidad. Después, el solucionador repite la proyección de contacto y elimina la velocidad en la dirección radial del eslabón; las restricciones que interactúan todavía pueden dejar alguna intersección residual.
Back Flip reveló una carencia de cobertura distinta en la coleta reconstruida: su skin de pelo independiente no contenía los huesos del torso. La detección de colisionadores ahora busca en la jerarquía corporal, y el ajustador compartido añade una cápsula para el torso cuando falta cobertura del tronco. Una comprobación de Back Flip de seis segundos, tanto a 30 como a 120 fotogramas por segundo, no encontró ninguna penetración muestreada de los eslabones de la coleta en esa cápsula. Esta es una comprobación de colisión con proxies, no una garantía frente a todos los triángulos de la ropa; las comprobaciones originales de deformación durante el giro de cabeza siguen superándose.
El movimiento rápido también requiere comprobaciones entre poses. La demostración ahora hace avanzar conjuntamente el cuerpo, las restricciones de la ropa y el pelo a 120 pasos por segundo, y comprueba los mechones frente a proxies esféricos y en forma de cápsula en movimiento entre esos pasos. El contacto conserva el deslizamiento lateral en vez de detener todo el mechón, algo que de otro modo hacía que el pelo se quedara pegado. Walk y Back Flip en ambos avatares produjeron posiciones y velocidades del pelo muestreadas idénticas a 30, 60 y 120 fotogramas por segundo en nuestras comprobaciones de cuatro segundos. Esto gestiona el movimiento muestreado de primitivas; no es una detección continua de colisiones frente a todos los triángulos de la ropa, y otras restricciones aún pueden dejar contactos sin resolver. Descarga las comprobaciones de velocidad de fotogramas y contacto. Esa consistencia tiene un coste. En la prueba de referencia anterior con dos vistas a 60 fotogramas por segundo, el tiempo de actualización registrado en el percentil 95 fue de aproximadamente 1 ms para Seed-san y de 14–23 ms para el modelo por capas, sin contar el renderizado. Esos costes corresponden a dos personajes, mientras que la demostración interactiva ahora renderiza uno. El caso por capas aún necesita optimización; estas mediciones en equipos de escritorio no demuestran el rendimiento en teléfonos.
El ajustador sigue utilizando supuestos anatómicos y una expansión acotada. Conserva los ajustes creados cuando faltan los roles corporales o la geometría necesarios, e informa de las transformaciones no compatibles. Ocho comprobaciones adicionales cubren huesos renombrados, cambios de escala, grosor de la ropa, accesorios ocultos y la restauración de los ajustes originales. Estos dos avatares se utilizaron para el ajuste; aún es necesario probar peinados y prendas no vistos antes de considerar que el resultado es fiable en general.
Medir la malla, no solo el esqueleto
Un hueso puede conservar su longitud mientras los triángulos que lo rodean se estiran. Por ello, medimos todas las aristas de los triángulos del cabello durante una ejecución de doce segundos: cuatro segundos de movimiento de la cabeza, seguidos de ocho segundos de estabilización. La simulación se ejecuta a 120 pasos por segundo; las mediciones de la malla se toman 30 veces por segundo.
Para cada arista, registramos su mayor estiramiento durante la ejecución. La tabla muestra el percentil 99 de esos máximos por arista: el 99 % de las aristas se mantuvo en ese nivel de estiramiento o por debajo.
Para la arista de malla
| Prueba con un modelo real | Movimiento anterior | Movimiento mejorado |
|---|---|---|
| Seed-san: coleta reconstruida más flequillo original | 8.0% | 5.0% |
| Seed-san: rig original del cabello | 7.6% | 5.1% |
| pixiv: rig original del cabello por capas | 26.0% | 18.0% |
La peor arista individual sigue siendo importante. En el modelo por capas, mejoró de un 102.7 % a un 70.8 % de estiramiento, un defecto aún presente que el percentil no debe ocultar. La peor arista de Seed-san mejoró del 35.2 % al 27.8 % en ambos casos. Son mediciones de ejemplos de desarrollo que utilizamos para el ajuste, no una tasa de éxito con peinados no vistos.
Las raíces de las cadenas permanecieron fijas. Durante los dos últimos segundos, el movimiento medido de las puntas entre fotogramas muestreados fue inferior a 0.001 mm en cada caso mejorado. Trece pruebas específicas cubren el rigging, las raíces fijas, la conservación de la forma, las colisiones, los extremos cortos, la importación y la gestión de las animaciones. También comprobamos la aplicación y deshacer del rig en el visor, así como la exportación de animaciones cíclicas y de una sola reproducción.
Descarga las mediciones. Los ejemplos interactivos utilizan el mismo código del solucionador que el visor y la ruta de exportación del prototipo. Son renderizados interactivos, no vídeos pregrabados.
Lo que esto hace posible y lo que aún no resuelve
Para una coleta o un mechón independiente, ahora tenemos un proceso que convierte la geometría seleccionada en articulaciones, pesos y movimiento secundario. En el caso de un rig de cabello compatible ya existente, podemos conservar el trabajo del artista y animarlo. Cuando una animación ya contiene pistas para esas articulaciones del cabello, el solucionador procedimental cede el control al movimiento creado en lugar de aplicar un segundo movimiento encima.
La prueba de referencia numérica del cabello utiliza giros de cabeza y una traslación corporal suave. El selector Universal permite a los lectores examinar otras acciones, pero esas mediciones no demuestran la calidad del cabello al correr, saltar o dar volteretas. Los volúmenes de colisión aproximados no equivalen a una colisión con toda la superficie corporal, y aún no resolvemos las colisiones del cabello consigo mismo. Las trenzas, los rizos, las regiones de cabello fusionadas y el rendimiento real en teléfonos necesitan sus propias pruebas.
La función sigue siendo experimental. Sin embargo, comprobarla con personajes reales hizo tangible la mejora: el cabello puede moverse sin reescribir continuamente la forma a la que se supone que debe volver.
Créditos de los modelos. Seed-san © VirtualCast, Inc., de la colección oficial de muestras VRM. VRM1_Constraint_Twist_Sample © 2022 pixiv Inc., de los modelos de ejemplo de three-vrm. Ambos archivos incluyen metadatos de la Licencia Pública VRM 1.0 que permiten su redistribución y modificación. La coleta reconstruida y el movimiento personalizado son modificaciones nuestras. Las URL de origen y los hashes de los archivos identifican las muestras exactas utilizadas.
Créditos de las animaciones. Los clips Universal son obra de Quaternius, proceden de Universal Animation Library y Universal Animation Library 2, y se ofrecen bajo CC0.
Siguiente paso: cabello reutilizable en un personaje generado
Nuestro trabajo de continuación comienza con mallas de biblioteca sin rig: ajustar 46 peinados a una rana e inspeccionar las guías de mechones extraídas. El experimento interactivo separa la fijación al cuero cabelludo de la física que aún falta por incorporar.