Continuité de pose
Switch FK/IK
Passer de FK à IK et inversement sur Arm et Leg en conservant au mieux la pose du membre sélectionné.
Commuter depuis la sélection
Section intitulée « Commuter depuis la sélection »Dans Maya, sélectionne un ou plusieurs contrôleurs du même membre et du même côté, puis exécute :
from weSkel.src.tools.animation import switch_fk_ik
result = switch_fk_ik()Les shapes de contrôleur sont acceptées. Une sélection vide, mixte ou un contrôleur central partagé ne désigne pas un membre. Le module doit posséder FK et IK. Le switcher agit sur sa pose actuelle, sans build ni rebuild.
Une correspondance exacte commute immédiatement. Sinon, le viewport affiche une proposition et le dialogue donne ses écarts de position, d’orientation et de scale/shear. Accept Approximation l’applique ; Cancel restaure la pose sans clé ni entrée Undo. Une commutation appliquée constitue un seul Undo, avec Redo de la même opération.
| État d’animation | Effet du switch |
|---|---|
| Auto Key OFF | Valeurs à la frame courante ; aucune clé ajoutée ou modifiée. Une réévaluation temporelle peut rétablir les valeurs des courbes existantes. |
| Auto Key ON, canal déjà animé | Les canaux modifiés et keyables reçoivent une clé, ou mettent à jour celle de la frame. |
| Auto Key ON, canal sans courbe | La valeur change ; aucune courbe n’est initialisée automatiquement. |
Intégrer dans un picker
Section intitulée « Intégrer dans un picker »Un picker peut conserver une cible explicite, indépendante des noms et de la sélection courante :
from weSkel.src.tools.animation import resolve_fk_ik_target, switch_fk_ik
# Capture once from a selected limb; retain the root UUID and side.target = resolve_fk_ik_target().target
# The picker can invoke this later without changing Maya selection.result = switch_fk_ik(target)Le contrat sérialisable est FkIkTarget(instance_id, side) : UUID de la racine
du module et côté l ou r. Le service résout ces identités à nouveau à chaque
appel ; ne conserve pas les wrappers ou une proposition préparée entre frames.
result.applied indique si la pose a été appliquée ; result.report.exact
distingue une correspondance exacte d’une approximation acceptée.
Limites et diagnostic
Section intitulée « Limites et diagnostic »En batch, une approximation est annulée par défaut. Le paramètre optionnel
confirm_approximation(report) doit retourner un booléen explicite et rester
strictement en lecture seule pendant l’aperçu. Les animation layers, character
sets, proxies, connexions non prises en charge, playback et canaux protégés
produisent un refus explicite.
Pour ce tool, ouvre une nouvelle session Maya après un changement de code ou
de checkout et vérifie weSkel.__file__ : le runtime annulable peut déjà être
chargé.