LookAt, ça va être simple à expliquer:
Cette fonction simplissime sert à donc à ce qu'un objet soit aligné avec un ou deux objets. Très pratique. Voilà comment on s'en sert.
Tout d'abord, votre calque doit être un calque 3d, car l'expression est faite pour "orientation" et non la rotation.
Créez deux calques, l'un carré l'autre en forme de barre, passez la barre en mode 3d, ouvrez son orientation, et écrivez ceci:
lookAt (
Comme d'habitude, le deuxieme mot des fonctions commence par une majuscule. La synthaxe est la suivante : lookAt ( A, B ) , ou A et B sont les positions respectives de deux objets. Si l'une des deux positions est celle de l'objet "barre", alors l'objet tournera sur son axe. Si les deux positions sont celles de deux autres objets, la barre s'orientera sur l'axe parallele à l'axe des deux objets.
Reprenons notre expressions lookAt ( . Placez le curseur apres la parenthese, prenez la corde, attachez la à la position de l autre objet, mettez une virgule, et écrivez position.
On se retrouve donc avec quelque chose qui ressemble à ça:
lookAt( thisComp.layer("Rouge uni 2").transform.position , position )
C'est finalement très simple, il suffit juste de donner les deux positions qu'on souhaite pointer. Il ne vous reste plus qu'à modifier le point d'ancrage de la barre si besoin est. Sur mon exemple, le point d'ancrage est à l'extrémité de l'objet et non en son centre comme initialement.
A noter que l'objet s'alignera, mais pas forcément dans l'axe que vous désiriez. Pour réajuster l'axe, utilisez les rotations X Y Z. (qui sont tjs animables si besoin est).
Il peut arriver qu'on ne veuille pas que le calque soit en 3d. Par exemple, si une camera est présente dans votre scene, le passage en 3d du calque change sa position dans la composition.
Nous verrons plus tard comment orienter un objet sans qu'il soit en 3d, c'est un peu plus compliqué.
mardi 22 janvier 2008
Inscription à :
Publier les commentaires (Atom)
L'orientation au final, est moins 'mathematique' que son explication ! ;)
RépondreSupprimerma barre vrille ds tous les sens ? normal docteur ?
hmmm... On a en général des comportements brusques lorsque le calque "target" est très proche de l'objet orienté, car le moindre mouvement change très vite l'angle.
RépondreSupprimerMais sinon, non ça n'est pas normal. C'est peut etre du à une addition avec des rotations en plus, je ne sais pas, ça ne m'est jamais arrivé.
Si jamais tu as un lien pour une vidéo exemple...
Bon, le poste est unpeu vieux, mais il m'a bien aidé.
RépondreSupprimerSi besoin, pour suivre un calque en 2D, j'utilise ça :
Faire une expression sur la ROTATION du layer à animer.
Vous avez juste à remplacer la variable objetAPointer
par le layer à suivre, et ça devrait fonctionner.
//suivre la direction d'un layer, en 2D
// selectionner le layer à suivre
objetAPointer = thisComp.layer("NomDuLayerASuivre");
// va nous servir a detecter la position du layer à suivre par rapport au layer à bouger
positionDeObjetApointerX = objetAPointer.transform.position[0]-transform.position[0];
positionDeObjetApointerY = objetAPointer.transform.position[1]-transform.position[1];
// position du layer à a pointer
objetAPointerPosition = objetAPointer.transform.position;
// faire pointer notre objet vers l'objet a pointer
directionDuCalque = lookAt (objetAPointerPosition,position);
// retourner des valeur sur un axe à 360°
// si l'objet à pointer est au-dessus de notre layer à bouger
if ( positionDeObjetApointerX < 0 && positionDeObjetApointerY< 0 || positionDeObjetApointerX > 0 && positionDeObjetApointerY < 0 )
{
180 - directionDuCalque[1];
}
// si l'objet à pointer est en-dessous de notre layer à bouger
else {
directionDuCalque[1];
}
Merci beaucoup monsieur De la Saucisse, je ne connaissais point cette fonction. Sans vous, oh grand maître, je n'aurais pu réaliser un exemple avec, comme la vidéo ci dessous. Bonne continuation.
RépondreSupprimerhttps://www.vectanim.com/animation-motion-design/formation-after-effects-animations-dillustrations-expressions/