Aperçu
L'Expression évalue une formule à chaque frame et alimente le paramètre cible avec le résultat. Permet des automations sophistiquées : oscillations sinusoïdales, conditions, références inter-paramètres complexes.
Différence vs simple expression «=...» sur un paramètre : le modifier expose une UI dédiée avec preview, historique, gestion d'erreurs ; et il devient un node dans le graph qu'on peut réutiliser pour piloter plusieurs paramètres.
Où trouver ce modifier
- Clic droit sur un paramètre →
Modify With→Expression. - Crée un node Expression dans le graph, lié au paramètre cible.
Syntaxe et fonctions
- Variables disponibles
time= frame courant,value= valeur courante du paramètre, références à d'autres nodes par leur nom (par ex.Transform1.Size.X).- Fonctions trigonométriques
sin(x),cos(x),tan(x)en radians. Multiplier parmath.pi/180pour entrée en degrés.- Fonctions mathématiques
math.sqrt(x),math.abs(x),math.floor(x),math.ceil(x),math.exp(x),math.log(x).- Random
math.random()retourne 0-1. Pour seed reproductible :math.randomseed(time); math.random().- Conditions
if condition then x else y endpour branchements. Évite besoin de ternaire.
Configuration
Oscillation sinusoïdale : Transform.Center.X → Expression : 0.5 + math.sin(time * 0.1) * 0.2 = oscille entre 0.3 et 0.7 Condition : Visibility → Expression : if time > 30 then 1 else 0 end = devient visible après frame 30 Référence inter-paramètre : Blur.Size → Expression : Transform1.Size * 5 = blur 5x scale du transform Random shaky : Position.X → Expression : math.randomseed(time); 100 + (math.random() - 0.5) * 10 = position centrée 100 avec ±5 de shake Combinaison time + référence : Rotation → Expression : Slider1 * math.sin(time * 0.05) = rotation oscillante avec amplitude pilotée par Slider1
Onglet Controls
- Expression
- Champ texte multi-ligne où on saisit la formule. Validation en temps réel. Erreurs syntaxe affichées.
- n1, n2, n3... (inputs supplémentaires)
- Variables d'entrée additionnelles liables à d'autres paramètres. Référencables comme
n1,n2dans la formule. - p1, p2, p3... (point inputs)
- Pour des paramètres de type Point (position 2D). Accédables comme
p1.X,p1.Y.
Cas d'usage
- Animations procédurales - oscillations, ondulations, pulsations sans clés à animer manuellement.
- Lier paramètres complexes - relations non-linéaires entre paramètres (par ex. blur en quadratique de scale).
- Conditions temporelles - activer / désactiver des effets selon le frame, sans avoir à animer une opacité.
- Random / shake reproductible - shake camera procédural avec seed basée sur time = même résultat à chaque play.
- Multi-paramètres synchronisés - driver scale, rotation, position simultanément depuis une seule expression.
- Formules de transformation- conversion d'unités complexes, interpolations, easing curves custom.
- Logique pipeline - activer un compositing alternatif selon un metadata field via Has Metadata en référence.
Astuces
- Lua syntax stricte - pas de point-virgule obligatoire, mais
thenetendpour conditions. Pas de accolades {}. - time vs Time -
timeen minuscules dans les expressions. Casing matters. - Performance- évalué à chaque frame. Pour formules lourdes ou échantillonnage d' images, le coût peut s'accumuler.
- Random sans seed - random sans seed change à chaque évaluation = scintillement perpétuel. Si non voulu, fixer le seed avec time.
- Référence syntaxe -
NodeName.ParamName. Pour nested params :Transform1.Center.X. - Inputs n1, n2 pour clarté - pour formules complexes, plutôt référencer via inputs liés que via noms directement = expression plus lisible.
- Tester dans la console - ouvrir Console Fusion (
print(...)) pour debugger des formules complexes avant de les copier dans le modifier. - Pour animations très sophistiquées (multi-segments, easing personnalisé), considérer des Macros Fusion ou Fuses pour réutilisabilité.
