Aller au contenu
weSkelDOCUMENTATION
Documentation/Animation/Switch FK/IK

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é.

ArmLegFK / IK

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.

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.

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é.