Les Images clés
Création d'images clés
Pour créer une image clé sur une propriété d'un calque, nous allons utiliser la méthode setValueAtTime() qui
nécessite deux paramètres : l'instant où doit être placée la clé et la valeur à lui affecter.
L'accès aux propriétés géométriques d'un calque peut se faire soit en utilisant property() soit directement le nom de la propriété (par exemple myLayer.property("position") ou myLayer.position).
Essayons cela sur un exemple simple dans lequel nous avons un seul solide dans la composition et
nous souhaitons animer ses propriétés d'échelle et de rotation.
Nous supposerons avoir une composition de durée 4s, de taille 320*240 ainsi qu'un solide carré légèrement plus petit 200*200.
Nous récupérons notre solide dans une variable "mySolid" par exemple, ainsi que nos deux propriétés à animer:
mySolid = app.project.activeItem.layer(1);
myScaleProperty = mySolid.scale;
myRotationProperty = mySolid.rotation;
et nous ajoutons trois images clés sur la propriété d'échelle : t=0 [0,0], t=2 [70,70], t=4 [0,0]
myScaleProperty.setValueAtTime(0,[0,0]);
myScaleProperty.setValueAtTime(2,[70,70]);
myScaleProperty.setValueAtTime(4,[0,0]);
ainsi que trois images clés sur la propriété de rotation : t=0 [0], t=2 [-180], t=4 [-360]
myRotationProperty.setValueAtTime(0,0);
myRotationProperty.setValueAtTime(2,-180);
myRotationProperty.setValueAtTime(4,-360);
note : si nous utilisons la petite "Console" pour éditer et tester ce script,
il faudra l'écrire en deux étapes car la console a un nombre de caractères limité à 255.
Interpolation et lissage
Il est possbile de paramétrer l'interpolation et le lissage d'images clés.
Pour définir un type d'interpolation pour une image clé, nous pourrions avoir recours à la méthode setInterpolationTypeAtKey() qui prend en paramètres
l'index de la clé à modifier, le type d'interpolation en entrée et le type d'interpolation en sortie. Si ce dernier paramètre n'est pas précisé,
il sera considéré comme ayant la même valeur que le type spécifié en entrée.
La valeur d'un type d'interpolation peut être KeyframeInterpolationType.LINEAR, KeyframeInterpolationType.BEZIER ou KeyframeInterpolationType.HOLD, respectivement pour une
interpolation linéaire, Bézier ou maintien.
L'attribut numKeys indiquera le nombre d'images clés que comporte une propriété.
Si nous souhaitons par exemple définir pour les images clés de la propriété d'échelle le type d'interpolation Bézier en entrée et en sortie, nous pourrions écrire cela :
for(i = 1; i <= myScaleProperty.numKeys; i++) {
myScaleProperty.setInterpolationTypeAtKey(i,KeyframeInterpolationType.BEZIER);
}
Nous pouvons également contrôler le lissage temporel d'une image clé avec la méthode setTemporalEaseAtKey(). Il nous faudra préciser l'index de cette clé ainsi que ses paramètres de lissage d'approche et d'éloignement (sous forme de tableaux).
Si le paramètre de lissage d'éloignement n'est pas précisé il sera considéré comme identique à celui de l'approche.
Un paramètre de lissage correspond à un objet KeyframeEase(), lequel est déterminé par la vitesse et l'influence de l'image clé.
Le paramètre d'influence s'exprime sur une échelle de 0 à 100.
Supposons que nous voulions lisser les images clés de la propriété de rotation, nous pourrions écrire par exemple
for(i = 1; i <= myRotationProperty.numKeys; i++) {
myEase = new KeyframeEase(1,30);
myRotationProperty.setTemporalEaseAtKey(i,[myEase]);
}
|