Les cheveux doivent onduler, pas se transformer en tentacules
Par Oleg Sidorkin, CTO et cofondateur de Cinevva

Un personnage tourne la tête. Ses cheveux doivent suivre un instant plus tard, se balancer légèrement, puis revenir au repos. Notre première version faisait autre chose : les pointes se recourbaient vers l’intérieur, comme si la coiffure essayait de se transformer en tentacule.
Les os conservaient leur longueur. La simulation restait stable. Les valeurs que nous surveillions étaient conformes. Pourtant, le mouvement paraissait toujours incorrect.
Voici la suite de notre travail sur l’auto-rig : doter les cheveux de leurs propres articulations et de mouvements secondaires. Nous avons commencé avec un maillage de test simple, puis sommes passés à deux avatars réels. Cela a changé à la fois l’implémentation et ce que nous mesurons.
D’abord, reconstruire une vraie queue-de-cheval
Seed-san possède un maillage de queue-de-cheval distinct. Pour ce test, nous avons effacé les poids de skinning d’origine de ce maillage, l’avons attaché à la tête et avons demandé à notre ajusteur géométrique de créer une nouvelle chaîne capillaire de six articulations. Le reste du personnage a conservé son skinning d’origine. Les sept courtes chaînes de la frange ont également conservé les poids définis par l’artiste.
L’ajusteur suit la surface capillaire connectée depuis sa racine vers l’extérieur, place les articulations le long de ce parcours et mélange les influences des articulations voisines. Une petite bande au niveau de l’attache reste fixe. Il s’agit d’un workflow par mèches sélectionnées : nous lui indiquons quel maillage correspond aux cheveux. Il ne détecte pas automatiquement chaque mèche d’un personnage arbitraire.
Essayez la queue-de-cheval ci-dessous. Utilisez Mouvement des cheveux pour basculer entre l’ancien solveur et le solveur amélioré dans un même aperçu. Choisissez Bouger, puis revenir au repos pour observer les cheveux s’immobiliser. Mettez en pause pour examiner une pose, ou faites glisser l’aperçu pour tourner autour du personnage. Le sélecteur Animation propose les 260 animations Universal. Choisissez un clip pour voir bouger l’ensemble du corps ; Cadrage → Gros plan sur les cheveux ramène la caméra sur les mèches. Test de rotation de la tête rétablit la comparaison contrôlée.
Nous avons masqué le sac à dos et le bras robotique distincts de Seed-san dans ces vues afin que rien ne cache la queue-de-cheval. Le corps, la géométrie des cheveux, les poids de skinning et l’animation restent inchangés par cette modification de visibilité ; il ne s’agit pas d’une correction des collisions avec le sac à dos.
Essayez la bibliothèque d’animations Universal
Le sélecteur d’animations utilise le même système de retargeting en espace monde que le rig et le moteur d’exécution de Cinevva. Nous faisons correspondre les métadonnées humanoïdes VRM de chaque avatar aux noms d’articulations attendus par le système de retargeting, sélectionnons le skin du corps plutôt qu’un ancien skin limité aux cheveux et capturons la pose non animée du corps avant le début de la démonstration capillaire. Cela évite de considérer une tête tournée ou une posture accroupie comme la pose de repos du personnage lorsqu’un autre clip est sélectionné.
Le clip sélectionné est récupéré depuis la bibliothèque Universal partagée, retargeté une seule fois, puis joué sur le personnage choisi. Le déplacement horizontal est supprimé afin de maintenir le personnage dans le champ. Toutes les animations Universal sélectionnées tournent en boucle dans ces démonstrations, y compris les actions initialement définies comme non répétitives. Redémarrer rejoue l’action sélectionnée. Le mouvement des cheveux est calculé après l’animation du corps.
Nous avons retargeté les 260 clips sur chaque avatar : 520 sorties, sans articulation corporelle requise manquante, sans piste numérique invalide et sans piste d’animation corporelle ciblant les articulations capillaires. Nous avons également échantillonné les animations Idle, Walk, Jump, Back Flip, Dance, Crouch Forward et Sitting Idle, vérifié le mouvement du corps et la synchronisation, puis inspecté les poses rendues. Ces contrôles établissent que le retargeting est exploitable sur ces deux rigs, et non qu’il est visuellement parfait à chaque image. Résultats des contrôles de retargeting.
Les vêtements ont eux aussi besoin de leurs contrôleurs d’origine. Cet exemple VRM utilise des contraintes de visée et de torsion pour les manches et la déformation des membres ; animer uniquement les articulations humanoïdes laisse les manches dans leur pose initiale. La démonstration charge désormais ces contrôleurs avec le module officiel de contraintes de nœuds VRM et les met à jour après l’animation du corps, avant la simulation capillaire. Cela préserve le rig de vêtements fourni ; aucune simulation de tissu n’est ajoutée.
La bibliothèque complète peut être examinée, mais les mesures d’intersection et d’étirement ci-dessous utilisent toujours la séquence contrôlée de rotation de la tête. Elles ne démontrent pas que les cheveux évitent toute collision dans chaque danse, chute ou salto.
L’erreur se trouvait dans la forme au repos
Une chaîne d’articulations a besoin d’une direction vers laquelle revenir. Notre ancien solveur calculait cette direction par rapport à l’articulation déjà courbée située au-dessus. Une légère déviation en haut modifiait donc la direction de repos du segment suivant, qui modifiait à son tour celle du segment d’après.
Cette accumulation produisait la boucle. Conserver la longueur correcte de chaque os ne suffisait pas à l’empêcher.
Le nouveau solveur mémorise l’arc d’origine de la coiffure dans le repère mobile de la tête. Chaque segment possède toujours une inertie et un amortissement, mais sa direction de rappel provient de cette forme d’origine. La tête peut tourner tandis que les cheveux prennent du retard ; ce retard ne devient plus une nouvelle courbe de repos pour tous les segments inférieurs.
Nous avons également rendu les rigs existants créés par les artistes un peu plus fermes et augmenté l’amortissement. La comparaison avant/après inclut ce réglage, et pas seulement le changement de repère.
Une cible mobile qui préserve l’arc d’origine
Pour le segment
Chaque étape combine l’attraction vers cette cible avec la gravité et un amortissement exponentiel :
Ici,
Nous replaçons ensuite l’extrémité à sa distance fixe
Cette projection préserve la longueur de l’os. À elle seule, elle ne préserve pas chaque arête de triangle et ne maintient pas la mèche hors des vêtements. L’implémentation utilise la direction de repos si la direction candidate dégénère.
Essayez ensuite une coiffure complète
Le second avatar, un exemple de pixiv, possède douze chaînes capillaires et 12 868 sommets de cheveux. Ici, nous conservons les articulations et les poids de l’artiste et remplaçons le comportement du mouvement secondaire. Cet exemple montre l’animation d’une coiffure existante, et non la reconstruction automatique de son maillage capillaire fusionné.
Observez les pointes de côté et de dos. La version améliorée préserve davantage la silhouette voulue tout en maintenant le mouvement. L’ancienne version rassemble les pointes en une boucle plus prononcée.
Les modèles réels ont également révélé un bug plus discret : certaines mèches courtes de la frange se terminent par un nœud qui n’est pas lui-même un os skinné. Nous ignorions ces chaînes. L’importateur accepte désormais ces extrémités et lit les chaînes capillaires explicitement nommées dans les métadonnées de ressort VRM 1. Il lit également les volumes de collision sphériques et en capsule ainsi que les rayons de collision propres à chaque articulation.
La spécification des spring bones de VRM fournit la structure d’échange. Notre mouvement repose sur un solveur personnalisé avec des valeurs par défaut ajustées, plutôt que sur une implémentation complète de chaque paramètre de ressort VRM. Les démonstrations utilisent le chargeur de matériaux MToon de pixiv pour reproduire les ombrages, textures et contours du visage et des vêtements définis par l’artiste. Nous désactivons les coques de contour capillaire élargies, car elles coupent ces fines surfaces superposées. Les deux réglages de mouvement utilisent un éclairage et des matériaux identiques. L’implémentation des spring bones de three-vrm par pixiv constitue une référence reconnue pour cet écosystème.
Pourquoi les mèches de devant traversaient-elles le haut ?
Vérifier uniquement la position des articulations ne détectait pas un défaut visible : la mèche située entre deux articulations pouvait traverser une épaule alors même que ses deux extrémités se trouvaient hors de son volume de collision. Nous avons aussi découvert une erreur d’indexation dans notre gestion des rayons VRM : la lecture du rayon de l’articulation suivante attribuait un rayon nul au dernier segment.
Les deux mèches de devant utilisent désormais des tests de collision sur toute la longueur de chaque segment. Une passe d’ajustement partagée mesure la géométrie visible du corps et des vêtements autour des volumes de collision existants, avec des limites d’expansion basées sur la taille du corps. La portée des mèches, leur position et l’attribution des poids de skinning déterminent quelles chaînes nécessitent des tests par segment. Les deux avatars utilisent désormais cet algorithme sans règles fondées sur le nom du modèle ou de la mèche. L’extension des tests de collision à l’ensemble de la coiffure augmentait l’étirement ; les contraintes d’attache à la tête et les mèches courtes de la frange conservent donc leur traitement d’origine.
Nous avons vérifié le résultat par rapport au haut réellement skinné, indépendamment de ces volumes. Sur un cycle de rotation de la tête, le haut masquait jusqu’à 555 des 1 503 sommets des mèches de devant avec l’ancien mouvement. L’ajustement automatique n’a relevé aucun impact au-delà du seuil de mesure de 1 mm, aussi bien à 30 qu’à 120 images par seconde. La profondeur maximale précédemment mesurée était de 75,2 mm. Il s’agit d’une mesure d’occlusion en vue de face, et non d’une affirmation de collision de surface parfaite ni d’une garantie valable pour toutes les animations. Télécharger les mesures des collisions des mèches de devant.
Maintenir les mèches hors du haut implique un compromis : l’étirement au 99e percentile de la coiffure dégradée est passé de 17,1 % avant l’ajustement des collisions à 18,0 %. Il reste inférieur aux 26,0 % de l’ancien solveur ; le tableau ci-dessous reflète le résultat actuel.
La réponse au contact nécessitait une correction distincte : repousser une mèche hors des vêtements était converti en vitesse, provoquant un rebond visible à l’étape suivante. Nous résolvons désormais le chevauchement sans ajouter cette impulsion, supprimons le mouvement entrant au moment du contact et préservons le mouvement de glissement. Un test de régression sur une mèche au repos vérifie à la fois le contact à l’extrémité et sur l’ensemble du segment : la mèche corrigée reste à la position de contact au lieu d’être projetée au loin.
Contact sur toute la mèche, sans impulsion de rebond
Un maillon capillaire et l’axe d’une capsule sont tous deux des segments de droite. Écrivons leurs points sous la forme
Pour éviter de transformer la correction de position en rebond, nous reconstruisons la vitesse avant de repousser l’extrémité hors du contact :
Après une correction de contact non nulle, soit
Le mouvement tangentiel est conservé, ce qui permet à la mèche de glisser. La correction de position elle-même n’est pas ajoutée à la vitesse. Le solveur répète la projection de contact, puis supprime la vitesse le long de la direction radiale du maillon ; l’interaction entre les contraintes peut néanmoins laisser un chevauchement résiduel.
Back Flip a révélé une autre lacune de couverture sur la queue-de-cheval reconstruite : son skin capillaire distinct ne contenait pas les os du torse. La détection des colliders parcourt désormais la hiérarchie du corps, et l’ajusteur partagé ajoute une capsule de torse lorsque la couverture du tronc est insuffisante. Un test Back Flip de six secondes, effectué à 30 et à 120 images par seconde, n’a détecté aucune pénétration échantillonnée des maillons de la queue-de-cheval dans cette capsule. Il s’agit d’un test de collision avec un volume simplifié, et non d’une garantie contre chaque triangle des vêtements ; les contrôles de déformation d’origine lors de la rotation de la tête réussissent toujours.
Les mouvements rapides nécessitent également des contrôles entre les poses. La démonstration fait désormais progresser ensemble le corps, les contraintes des vêtements et les cheveux à 120 étapes par seconde, et teste les mèches contre des volumes sphériques et en capsule mobiles entre ces étapes. Le contact préserve le glissement latéral au lieu d’immobiliser toute la mèche, ce qui rendrait autrement les cheveux collants. Walk et Back Flip ont produit, sur les deux avatars, des positions et vitesses capillaires échantillonnées identiques à 30, 60 et 120 images par seconde lors de nos contrôles de quatre secondes. Cela prend en charge le mouvement échantillonné de primitives ; il ne s’agit pas d’une détection continue des collisions avec chaque triangle des vêtements, et des contraintes supplémentaires peuvent toujours laisser des contacts non résolus. Télécharger les contrôles de fréquence d’images et de contact. Cette cohérence a un coût. Dans le benchmark précédent à deux vues et à 60 images par seconde, le 95e percentile du temps de mise à jour mesuré était d’environ 1 ms pour Seed-san et de 14 à 23 ms pour le modèle multicouche, hors rendu. Ces coûts concernent deux personnages, alors que la démo interactive n’en affiche désormais qu’un. Le cas multicouche doit encore être optimisé ; ces mesures sur ordinateur ne permettent pas de conclure quant aux performances sur téléphone.
L’outil d’ajustement repose toujours sur des hypothèses anatomiques et une expansion bornée. Il conserve les réglages définis par l’artiste lorsque les rôles corporels ou la géométrie nécessaires sont absents, et signale les transformations non prises en charge. Huit vérifications supplémentaires couvrent le renommage des os, les changements d’échelle, l’épaisseur des vêtements, les accessoires masqués et la restauration des réglages d’origine. Ces deux avatars ont servi au réglage ; il reste nécessaire de tester des coiffures et des vêtements encore jamais utilisés avant de pouvoir considérer le résultat comme généralement fiable.
Mesurer le maillage, pas seulement le squelette
Un os peut conserver sa longueur tandis que les triangles qui l’entourent s’étirent. Nous avons donc mesuré chaque arête triangulaire des cheveux pendant une séquence de douze secondes : quatre secondes de mouvement de la tête, suivies de huit secondes de stabilisation. La simulation s’exécute à 120 pas par seconde ; les mesures du maillage sont échantillonnées 30 fois par seconde.
Pour chaque arête, nous enregistrons son étirement maximal pendant la séquence. Le tableau indique le 99e percentile de ces maxima par arête : 99 % des arêtes sont restées à ce niveau d’étirement ou en dessous.
Pour l’arête
| Test sur un modèle réel | Mouvement précédent | Mouvement amélioré |
|---|---|---|
| Seed-san : queue de cheval reconstruite et frange d’origine | 8,0 % | 5,0 % |
| Seed-san : rig capillaire d’origine | 7,6 % | 5,1 % |
| pixiv : rig d’origine des cheveux multicouches | 26,0 % | 18,0 % |
La pire arête individuelle reste importante. Sur le modèle multicouche, son étirement est passé de 102,7 % à 70,8 % — un défaut persistant que le percentile ne doit pas masquer. Dans les deux cas, la pire arête de Seed-san est passée de 35,2 % à 27,8 %. Il s’agit de mesures effectuées sur des exemples de développement utilisés pour le réglage, et non d’un taux de réussite sur des coiffures encore jamais testées.
Les racines des chaînes sont restées fixes. Pendant les deux dernières secondes, le déplacement mesuré des pointes entre les images échantillonnées était inférieur à 0,001 mm dans chaque cas amélioré. Treize tests ciblés couvrent le rigging, les racines fixes, la préservation de la forme, les collisions, les extrémités courtes, l’importation et la gestion de l’animation. Nous avons également vérifié l’application et l’annulation du rig dans la visionneuse, ainsi que l’exportation d’animations en boucle et à lecture unique.
Télécharger les mesures. Les exemples interactifs utilisent le même code de solveur que la visionneuse et le processus d’exportation du prototype. Ce sont des rendus interactifs, pas des vidéos préenregistrées.
Ce que cela rend possible — et ce que cela ne résout pas encore
Pour une queue de cheval ou une mèche distincte, nous disposons désormais d’un processus qui transforme la géométrie sélectionnée en articulations, poids de skinning et mouvement secondaire. Pour un rig capillaire existant et compatible, nous pouvons préserver le travail de l’artiste et l’animer. Lorsqu’une animation contient déjà des pistes pour ces articulations capillaires, le solveur procédural laisse la priorité au mouvement défini par l’artiste plutôt que d’y superposer un second mouvement.
Le benchmark numérique des cheveux utilise des rotations de la tête et de légères translations du corps. Le sélecteur Universal permet aux lecteurs d’examiner d’autres actions, mais ces mesures ne permettent pas de conclure quant à la qualité des cheveux pendant la course, les sauts ou les roulades. Les volumes de collision simplifiés ne constituent pas une collision complète avec la surface du corps, et nous ne gérons pas encore l’autocollision des cheveux. Les tresses, les boucles, les régions capillaires fusionnées et les performances réelles sur téléphone nécessitent leurs propres tests.
Cette fonctionnalité reste expérimentale. Mais les vérifications sur de vrais personnages ont rendu l’amélioration concrète : les cheveux peuvent bouger sans réécrire continuellement la forme à laquelle ils sont censés revenir.
Crédits des modèles. Seed-san © VirtualCast, Inc., issu de la collection officielle d’exemples VRM. VRM1_Constraint_Twist_Sample © 2022 pixiv Inc., issu des modèles d’exemple de three-vrm. Les deux fichiers incluent des métadonnées de la licence publique VRM 1.0 autorisant la redistribution et la modification. La queue de cheval reconstruite et le mouvement personnalisé sont nos modifications. Les URL sources et empreintes des fichiers identifient les exemples exacts utilisés.
Crédits des animations. Les clips Universal sont de Quaternius, issus de l’Universal Animation Library et de l’Universal Animation Library 2, fournies sous licence CC0.
Étape suivante : des cheveux réutilisables sur un personnage généré
La suite de nos travaux commence avec des maillages de bibliothèque sans rig : ajuster 46 coiffures à une grenouille et examiner les guides de mèches qui en sont extraits. L’expérience interactive sépare l’attache au cuir chevelu de la simulation physique qui reste à développer.