Cinématique inverse
Ce tutoriel explique comment utiliser la cinématique inverse (IK) dans PixelOver.
Vous apprendrez à créer une chaîne d'os, à y attacher des images, à configurer une contrainte IK et à contrôler la chaîne à l'aide d'une cible (et éventuellement d'une cible de pôle).
Voici un exemple vidéo montrant comment réaliser une configuration IK animée dans PixelOver :
Hey, let's review another #PixelOver functionality, inverse kinematics ! Used to animate bones by moving the chain target.https://t.co/FjZM9FyuZi #GodotEngine #madewithgodot #indiedev #pixelart #gamedev pic.twitter.com/n0FEGmJp6l
— Deakcor (@deakcor) November 28, 2022
Qu'est-ce que la cinématique inverse ?
La cinématique inverse (IK) vous permet de contrôler une chaîne d'os en déplaçant une cible.
Au lieu de faire pivoter chaque os manuellement, la chaîne résout automatiquement les rotations pour que l'extrémité de la chaîne suive la cible.
L'IK est idéale pour :
- les bras et les jambes
- les queues et les cordes
- les tentacules
- tout rig nécessitant un posing et une animation rapides
IK et flux repos / pose
La cinématique inverse n'est active qu'en mode pose.
- En mode pose, les contraintes IK sont activées et la chaîne suivra la cible.
- En mode repos, les contraintes IK sont désactivées. Ce mode sert à configurer le placement par défaut des os sans aucune résolution IK.
Cela facilite la construction d'un rig propre en mode repos, puis son animation en toute sécurité en mode pose.
1. Créer une chaîne d'os (et attacher des images)
Créer les os
- Sélectionnez l'outil os
- Cliquez dans la vue pour créer le premier os
- Cliquez à nouveau pour créer l'os suivant comme enfant
- Répétez jusqu'à obtenir une chaîne complète
Une chaîne typique ressemble à :
- Bras → Avant-bras → Main
ou - Cuisse → Tibia → Pied
Astuce
Gardez votre chaîne simple. Dans la plupart des cas, 2 ou 3 os suffisent pour un membre.
Attacher des images à la chaîne
Pour animer des personnages en pixel art, le flux habituel consiste à attacher des parties d'image aux os.
- Importez vos images (ou découpez un personnage en parties avec le flux Dessin)
- Dans l'arbre de scène, placez chaque image sous l'os qui doit la piloter
(par couper/coller ou glisser-déposer)
Structure d'exemple :
- Os_Bras
- Image_Bras
- Os_AvantBras
- Image_AvantBras
- Os_Main
- Image_Main
Information
Parenter les images aux os garantit que les images suivent automatiquement les transformations des os.
2. Ajouter une contrainte IK (sur le premier os de la chaîne)
L'IK est appliquée à l'os racine de la chaîne (le premier os).
- Sélectionnez le premier os de votre chaîne
- Vérifiez le panneau des propriétés
- Réglez la contrainte IK dans la section contrainte
3. Créer ou choisir une cible IK
La cible IK est l'objet que la chaîne tente d'atteindre.
Créer une cible
Il existe deux options courantes :
- Créer un objet cible IK dédié
- Réutiliser un objet existant comme cible
Une fois créée, assignez-la dans la contrainte IK en tant que Cible.
Bonnes pratiques pour les cibles
Pour des rigs propres, il est fortement recommandé de :
- Renommer la cible clairement
Exemple :IK_Cible_Main,IK_Cible_Pied - Régler sa longueur à
0px(pour qu'elle se comporte comme un point de contrôle)
Cela rend la cible plus facile à gérer et l'empêche de se comporter comme un segment d'os visible.
Astuce
Les cibles sont censées être des contrôleurs, pas des déformateurs. Les garder à 0px facilite leur positionnement précis.
4. Configurer la contrainte d'angle
Les contraintes d'angle imposent la façon dont la chaîne doit se plier.
C'est utile pour :
- empêcher un pliage non naturel
- forcer un membre à se plier dans la bonne direction
- stabiliser les poses pendant l'animation
Contraintes d'angle positives vs négatives
Selon l'orientation de votre rig, la chaîne peut devoir se plier :
- dans le sens horaire
- dans le sens antihoraire
C'est pourquoi la contrainte peut être réglée sur une plage d'angle positive ou négative.
Exemples d'utilisation :
- Un coude ne doit se plier que dans un sens (pas vers l'arrière)
- Un genou ne doit se plier que vers l'avant
Astuce
Si la chaîne se plie dans le mauvais sens, essayez d'inverser le signe de la contrainte d'angle (positif ↔ négatif).
5. (Optionnel) Ajouter une cible de pôle pour un meilleur contrôle
Une cible de pôle aide à contrôler le plan de la chaîne IK, rendant le sens de pliage plus stable et prévisible.
Les cibles de pôle sont particulièrement utiles pour :
- les coudes et les genoux en 2D
- les rigs 3D, où la chaîne peut se tordre de façon imprévisible
- les configurations où les contraintes d'angle ne sont pas disponibles ou insuffisantes
Utiliser une cible de pôle
- Créez un nouvel objet cible (ou réutilisez-en un existant)
- Renommez-le clairement
Exemple :IK_Pole_Coude,IK_Pole_Genou - Assignez-le comme Cible de pôle dans la contrainte IK
- Déplacez la cible de pôle pour contrôler la façon dont la chaîne se plie
Une règle simple :
- La chaîne se plie vers la cible de pôle
Astuce
Placez la cible de pôle légèrement sur le côté du membre (pas au-dessus de la cible IK), pour que le solveur ait un sens de pliage clair.
Attention
En 2D, évitez d'utiliser une contrainte d'angle dans le sens opposé à la cible de pôle, car cela peut créer un comportement inattendu. Si vous utilisez une cible de pôle, il vaut généralement mieux régler la contrainte d'angle sur libre, ou vous assurer qu'elle n'entre pas en conflit avec le sens du pôle.
Résumé
Pour configurer l'IK dans PixelOver :
- Créez une chaîne d'os
- Attachez des images aux os (parentage dans l'arbre de scène)
- Ajoutez une contrainte IK sur le premier os
- Créez et assignez une cible (renommez-la et réglez la longueur à
0px) - Utilisez des contraintes d'angle pour contrôler le sens de pliage (positif ou négatif)
- Ajoutez éventuellement une cible de pôle pour un contrôle plus stable et précis (surtout en 3D)
Pour aller plus loin
Une fois l'IK configurée, vous pouvez :
- animer les cibles à l'aide de l'Animation
- combiner l'IK avec des images clés et des animations importées
- construire des rigs de personnage complets avec plusieurs chaînes IK (bras + jambes)