Aide pour After Effect, techniques, expressions.

mercredi 23 janvier 2008

EXPRESSIONS : spot + diapo

Une utilisation concrète des vecteurs.

AE permet la création d' éclairage 3d. Ici, nous allons utiliser le spot 3d, à la façon d'une lampe torche. Nous allons d'ailleurs simuler le dessin lumineux créé par une vraie lampe torche. En effet, le spot n'est pas uniforme, mais hétérogène, à cause des miroirs.














Voilà l'image que j'ai créé sous photoshop pour l'effet.

Et voilà ce que nous cherchons à faire:












Ici, le cône de lumière a été rajouté par le plugin Lux, et n'est ici que pour une meilleure lecture de l'image.

On voit clairement que la lumière projète l'image.
Installons la scène.

Créez 2 solides 3d que vous mettrez perpendiculaire, et un petit solide 3d, devant, en hauteur (ici en jaune).

Créez un spot (ctrl alt shift L), "concentré" en français, avec un cone d'environ 50 degrés.
Faites en sorte que le spot éclaire les 3 solides, activez les ombres en reception et emission, et activez aussi les ombres pour la lumière. Le petit solide jaune crée donc une ombre sur les deux autres.











Rajoutez votre image de lampe torche. Le but est le suivant, placer cette image devant la spot, puis qu'elle reste toujours devant le spot, et orientée sur l'axe du spot, pour éviter toute déformation.
Nous allons utiliser les outils que nous avons deja utilisé, rien de bien nouveau.

Mettez votre image de lampe torche (ILT) en mode 3d.

Créez une expression pour sa position :

a=thisComp.layer("Lumière 1").transform.position;
b=thisComp.layer("Lumière 1").transform.pointOfInterest;

On a donc crée deux variables, la position de la source du spot, et la position du point ciblé par le spot.

V=sub(b,a);

On crée le vecteur correspondant.
Voilà la dernière ligne:

a+normalize(V)*50

que je me dois d'expliquer :

On cherche à ce que ILT soit toujours entre la source du spot et le point ciblé.
Tout comme dans le post précédent, on aurait pu écrire ceci:

a+V*0.2

Ainsi, ILT aurait été à 20% de la distance totale entre la source et la cible. Mais ça fonctionnerait mal, car dès que l'on animerait la source ou la cible, la distance entre les deux changerait, la position d'ILT changerait donc aussi par rapport à la source.

Imaginons que la distance entre la source et la cible soit de 1000 pixels.
Avec
a+V*0.2, ILT serait à 200 pixels de la source. Si 1000 se transforme en 1500, l ILT serait plus éloigné de la source, et donc l'ombre créée serait plus grande.

Nous voulons donc que la distance entre la source du spot et l'ILT soit fixe, qu'importe les animations futures. D'où la ligne
a+normalize(V)*50.

Quel est ce normalize(V) ?
C'est une fonction qui transforme un vecteur lamba en un vecteur de distance 1. On garde ainsi l'angle du vecteur, mais ça distance devient donc l'unité. Il suffit donc de multiplier cette valeur par ce que l'on veut, ici 50, et l'ILT sera donc toujours à 50 pixels de la source.

Il faut à présent orienter le calque ILT.
Créez une expression pour son orientation:

a=thisComp.layer("Lumière 1").transform.position;
b=thisComp.layer("Lumière 1").transform.pointOfInterest;
lookAt(a,b);

C'est exactement la meme chose que ce que nous avons vu précédemment. Ajuster les rotations XYZ si besoin est.


Il ne reste plus qu' à modifier un parametre 3d de l ILT, dans les options de surface. Mettez la transmission de lumière à 100%, pour que le calque agisse comme une diapositive (il faut biensur que ILT émette une ombre) .

Ajustez l'échelle du calque pour que sa taille et la taille du cone du spot coïncide. Et voilà.

Cette technique à quelques limites:

Cela interdit l'utilisation des ombres douces, puisque cela rendrait flou la diapositive.
L'autre soucis est que le calque de diapositive est forcément visible s'il entre dans le champs de la composition.

On peut évidemment projeter ce que l'on veut ainsi.

Aucun commentaire:

Enregistrer un commentaire