Comment garder les cibles des pieds IK en place lorsque le corps d’un personnage bouge
Pour garder les pieds IK en place, maintenez la position de chaque cible de pied dans l’espace monde tout en déplaçant le contrôle du corps du personnage. Laissez le solveur de jambes ajuster les articulations entre le corps en mouvement et la cible fixe. Si une cible hérite du mouvement du corps, séparez cette relation de transformation ou compensez-la avant le calcul IK.
Ce guide s’adresse aux créateurs qui posent un personnage virtuel équipé d’un rig, dont le corps doit osciller, s’incliner ou se déplacer tandis que les deux pieds restent en place. Le processus ci-dessous associe le comportement documenté des transformations et de l’IK à une séquence de diagnostic pratique ; la terminologie de Unity et Godot sert de référence concrète.
Pourquoi les cibles des pieds bougent-elles avec le corps ?
Une cible peut conserver les mêmes coordonnées locales tout en se déplaçant dans la scène. Les transformations locales décrivent un objet par rapport à son parent ; déplacer un ancêtre modifie donc aussi la transformation de l’enfant dans l’espace monde. Godot documente cette distinction avec transform et global_transform. Utiliser les transformations 3D — Godot Engine
Commencez par afficher les contrôles des cibles de pied et déplacez légèrement le corps sur le côté. Observez les cibles séparément des pieds visibles. Si une cible bouge avec le corps, examinez ses ancêtres : elle se trouve peut-être sous le bassin, le contrôle du corps ou un autre groupe mobile.
Ne vous fiez pas uniquement aux champs de position locale pour évaluer la configuration. Relevez la position de la cible dans l’espace monde avant et après le déplacement. Vous pourrez ainsi distinguer deux questions utiles : la cible a-t-elle quitté la position prévue, ou la jambe n’a-t-elle pas suivi une cible immobile ?
Comment organiser les contrôles du corps et des pieds ?
Utilisez des branches de contrôle distinctes pour le mouvement du corps et les cibles des pieds ancrés. Une organisation pratique place le squelette et les contrôles du corps dans une branche, et les cibles des pieds gauche et droit dans une autre branche sous un contrôle de scène immobile. L’essentiel est que le contrôle du corps que vous manipulez ne déplace pas la branche des cibles.
Un contrôle général du personnage peut toujours contenir les deux branches si vous ne déplacez que le corps en dessous. En revanche, déplacer ce contrôle général déplacera les deux branches. Avant de choisir le contrôle, déterminez si l’opération consiste à « déplacer le corps au-dessus des pieds ancrés » ou à « déplacer tout le personnage ».
Si l’application permet de désactiver l’héritage indépendant des transformations, cela peut offrir une autre option. Par exemple, Node3D.top_level de Godot empêche un nœud d’hériter des transformations de son parent. Il s’agit d’une fonctionnalité documentée des transformations ; elle ne configure pas à elle seule un solveur IK. Node3D — Godot Engine
Lorsque vous modifiez le parent d’une cible ou son mode d’héritage, préservez sa pose actuelle dans l’espace monde. Relevez d’abord sa position et son orientation dans l’espace monde, modifiez la relation, puis rétablissez cette pose. Vérifiez le résultat avant de déplacer à nouveau le corps.
Que faire si la cible doit rester sous un parent mobile ?
Conservez séparément une référence de la pose ancrée dans l’espace monde et calculez la pose locale requise pour la cible à partir de la transformation actuelle du parent. Pour la position, la relation est la suivante : position locale de la cible = inverse de la transformation monde actuelle du parent × position monde enregistrée de la cible. Unity fournit la conversion de l’espace monde vers l’espace local avec InverseTransformPoint. Transform.InverseTransformPoint — Unity
Prenons un exemple simplifié, limité à la translation. Une cible est ancrée à X = 1.0 dans l’espace monde, et son parent se trouve initialement à X = 0.0. Sa position locale est donc 1.0. Déplacez le parent à X = 0.3 : la position locale de la cible doit être de 0.7 pour qu’elle reste à X = 1.0 dans l’espace monde. Si la position locale reste à 1.0, la cible se déplacera à X = 1.3 dans l’espace monde.
Cette soustraction ne fonctionne que pour l’exemple simplifié. Un parent pivoté ou mis à l’échelle nécessite la conversion complète de la transformation. La méthode TransformPoint de Unity convertit une position locale en espace monde et inclut explicitement l’échelle ; c’est pourquoi la conversion de position doit utiliser une opération sur un point plutôt qu’une opération sur une direction. Transform.TransformPoint — Unity
Enregistrez la pose ancrée au moment où le pied entre dans son état d’ancrage. Réutilisez cette valeur enregistrée pendant que le corps bouge. Si vous enregistrez à nouveau la cible après qu’elle a hérité du mouvement, vous prendrez simplement la dérive pour une nouvelle référence. Si l’orientation doit également rester fixe, préservez et convertissez aussi l’orientation de la cible.
Comment configurer l’IK des jambes pour qu’il suive les cibles ?
Vérifiez les affectations de la chaîne du solveur avant de tester un changement de pose important. Dans Animation Rigging 1.4.1 de Unity, Two Bone IK utilise les transformations Root, Mid et Tip, une Target et un Hint facultatif. Pour une jambe simple à deux segments, elles correspondent à l’articulation de la cuisse, au genou et à la cheville. Le hint contrôle la direction de flexion. Two Bone IK — Unity Animation Rigging
Pour un premier test, utilisez une influence de contrainte maximale et une influence maximale de la position cible. Vérifiez séparément l’influence de la rotation de la cible. Unity les expose sous forme de pondérations distinctes, ce qui permet de tester indépendamment le suivi de position et la correspondance d’orientation. L’option Maintain Target Offset de Unity préserve une différence initiale de position ou de rotation entre l’extrémité de la chaîne et la cible. Two Bone IK — Unity Animation Rigging
Alignez les cibles sur les poses de cheville prévues avant d’activer les contraintes. Si vous utilisez volontairement un décalage, notez ce qu’il représente. Un décalage initial inexpliqué complique les comparaisons ultérieures entre la cible et l’articulation résolue.
Établissez la flexion de genou souhaitée avec le hint ou le contrôle de pôle, puis déplacez légèrement le corps. Veillez à ce que le placement du hint reste compréhensible pendant le test ; modifier simultanément la cible, le corps et le contrôle de flexion rend plus difficile l’identification de la cause d’un résultat inattendu.
Jusqu’où le corps peut-il bouger tout en gardant les deux pieds ancrés ?
Des cibles fixes ne rendent pas toutes les positions du corps atteignables. Pour une chaîne idéale à deux segments, avec des articulations sans restriction et sans étirement, la géométrie impose que la distance entre la racine de la jambe et la cible soit comprise entre |longueur supérieure − longueur inférieure| et longueur supérieure + longueur inférieure. Les limites réelles des articulations peuvent réduire cette plage.
Prenons un personnage fictif dont les segments mesurent 0.45 et 0.45 unités de scène : la portée géométrique maximale est de 0.90 unité. Si la hanche se trouve à 0.80 unité au-dessus de la cible de cheville et à 0.30 unité horizontalement de celle-ci, leur distance est √(0.80² + 0.30²), soit environ 0.854 unité. Cette distance se trouve dans la plage idéale. Si la séparation horizontale passe à 0.50 unité, on obtient environ 0.943 unité, ce qui dépasse cette plage.
Servez-vous de ce calcul pour distinguer un problème de portée d’un problème de transformation. Si la cible reste fixe mais que la chaîne ne peut pas l’atteindre, réduisez le déplacement du corps ou repositionnez celui-ci pour tenir compte des deux jambes. Évaluez chaque jambe séparément : un déplacement latéral peut rapprocher une cible et éloigner l’autre.
Pour la première pose fonctionnelle, gardez une flexion visible dans les deux jambes et testez un mouvement modéré. Augmentez l’amplitude des mouvements du corps seulement après avoir vérifié où chaque jambe approche de ses limites de portée. Considérez cette plage comme propre au rig, plutôt que de reprendre une valeur de déplacement provenant d’un autre personnage.
Comment ancrer tout le pied plutôt que seulement la cheville ?
Définissez ce que signifie « ancré » pour votre rig. Une cible de cheville immobile fixe la position de l’articulation, mais le pied doit également avoir une orientation prévue. Le point de contact de la semelle et le pivot de la cheville sont deux références distinctes ; préservez le décalage prévu entre eux lors du placement du contrôle.
Pour un diagnostic utile, maintenez la position de la cheville fixe et faites pivoter uniquement le corps. Observez le talon et les orteils. S’ils bougent autour de la cheville, examinez les contrôles d’orientation du pied et les éventuels contrôles des orteils. Ce test permet d’isoler le contact visible de la position de la cible.
Enregistrez l’orientation prévue du pied ancré en même temps que sa position. Pendant le mouvement du corps, comparez les deux à la pose enregistrée. La documentation des transformations de Godot explique qu’une transformation combine une origine et une base représentant l’orientation et l’échelle ; c’est une référence utile pour comprendre une pose complète. Utiliser les transformations 3D — Godot Engine
Comment diagnostiquer le glissement de manière reproductible ?
Utilisez la séquence suivante comme aide pratique au diagnostic, fondée sur le comportement des transformations et du solveur décrit plus haut. Modifiez une seule condition à la fois, en commençant par le plus petit mouvement du corps qui reproduit le problème.
| Observation | Première vérification | Action suivante |
|---|---|---|
| La cible bouge avec le corps | Ancêtres mobiles et transformations héritées | Séparez les branches de contrôle ou rétablissez la pose monde enregistrée |
| La cible reste fixe, mais la cheville ne l’atteint pas | Affectations de la chaîne, influence de position et portée | Vérifiez la configuration, puis réduisez le déplacement du corps |
| La cheville reste fixe, mais le talon ou les orteils bougent | Orientation du pied et décalage du point de contact | Rétablissez l’orientation d’ancrage prévue |
| Le genou change de flexion de façon inattendue | Placement du hint ou du pôle | Testez le contrôle de flexion avec un mouvement modéré du corps |
| Le résultat diffère entre le déplacement à la souris et la lecture | Système qui écrit dans chaque contrôle et moment où il le fait | Inspectez les transformations évaluées pendant la lecture |
Pour une configuration animée ou procédurale, suivez un ordre explicite des dépendances : établissez la pose du corps, rétablissez ou convertissez les cibles enregistrées, puis évaluez l’IK des jambes. Vérifiez comment votre application planifie ces opérations. Un nom de callback ne garantit pas à lui seul que le solveur lise la cible mise à jour pendant la même évaluation.
Terminez par le test d’une courte boucle : déplacez le corps sur le côté, abaissez-le, faites-le pivoter légèrement, puis revenez à la pose de départ. Comparez en continu la pose monde de chaque cible à sa référence enregistrée. Une fois les cibles stabilisées, les ajustements restants deviennent spécifiques : les mouvements du corps à portée, la direction de flexion des genoux et l’orientation du pied nécessaires pour maintenir le contact prévu.
