Forums Développement Multimédia

Aller au contenu

Formé un cercle avec des étoiles

VIDEO After Effects

6 réponses à ce sujet

#1 freenetstef

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 173 messages

Posté 19 July 2009 - 16:05 PM

salut à tous

j'ai cherché à réaliser un effet et a en automatiser le process, ce qui me semblait de prime abord tout con.
Au final j'ai du y aller au tricot, calque par calque.
Soit des étoiles comme dans le drapeau européen, disposées pour formées un cercle donc. Ce genre là quoi :

http://isiwww.insa-toulouse.fr/ects/curren...ures/europe.jpg

Je voulais les faire apparaître les unes après le autres et donc automatiser le process.
Je pensais utiliser l'effet de répétition des calques de forme, mais je n'arrive pas à former un cercle en faisant se répéter mes étoiles ???
si qqu'un a la soluce :-)

#2 couad

  • Members
  • PipPipPipPipPipPipPipPip
  • 1002 messages

Posté 20 July 2009 - 08:15 AM

Hello Netstef,

Si tu passes par les calques de forme et leur option "répétition", tu arriveras à créer un cercle d'étoiles, mais elles tourneront au fur et à mesure de leur emplacement sur le cercle (cf screen plus bas).

Si tu veux absolument automatiser la création de ce drapeau européen, bien que ça demande 10 secondes à faire à la main en déplaçant le point d'ancrage, en dupliquant l'étoile et en modifiant le paramètre rotation de chaque étoile ;-), une solution serait d'utiliser une expression dans le paramètre "rotation" qui se base sur la valeur de rotation du calque qui le précède (ou le suit, ca dépend) pour définir la sienne. Si tu as 12 étoiles, t'as juste à lui dire schématiquement "valeur de rotation du calque qui est au dessus + 30°", et ainsi de suite.
Tu peux même pousser le vice plus loin en définissant automatiquement la valeur de rotation à adopter en fonction du nombre de calques "étoile" présents dans ta compo.
Idem pour l'opacité vu que tu veux les faire apparaitre les unes après les autres : tu animes une seule étoile en opacité, et tu places une expression dans tous les autres calques pour qu'ils prennent la même valeur, mais en décalé dans le temps avec le paramètre valueAtTime.
Si ça t'intéresse, je pourrai te montrer comment ça fonctionne.

Mais je précise que dans ton cas, ça prend vraiment 10 secondes de le faire à la main plutôt que d'utiliser des expressions :) .

Fichier(s) joint(s)



#3 freenetstef

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 173 messages

Posté 21 July 2009 - 19:34 PM

super, merci pour ta réponse couad ;-) :mrgreen:

10 secondes, en effet, oui, c'est plus ou moins le temps que ça m'a pris, mais le truc c'est que je pensais pouvoir automatiser le process, et, sur le coup, dans le rush, j'étais pas très content de ne pas trouver comment faire d'emblée.

Depuis mon post, j'ai pensé à quelques soluces comme celle dont tu parles en 1er, "valeur de rotation du calque qui est au dessus + 30°", et ainsi de suite."

donc un truc du genre :

thisComp.layer(index+1).transform.zRotation+30

et pour l'opacité :

thisComp.layer(index+1).transform.opacity.valueAtTime(time*0.5)

Le seul truc, j'ai pas trouvé comment faire en sorte que les étoiles ne tournent pas justement comme tu l'évoques dans ta réponse et comme on peut le voir dans ton fichier joint.

J'ai essayé avec une étoile picto dans un calque de texte, avec un masque sur un calque et avec un calque de forme, toutes tournent !

Le seul qui me semble possible est le calque de forme puisqu'il possède a a la fois un point d'ancrage général et un point d'ancrage pour son contenu étoile, mais je n'arrive pas à trouver la valeur exacte à répercuter sur chaque nouveau calque pour ne pas faire tourner l'étoile.
:roll:

#4 freenetstef

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 173 messages

Posté 22 July 2009 - 12:38 PM

Voir le messagecouad, le Jul 20 2009, 09:15 AM, dit :

Idem pour l'opacité vu que tu veux les faire apparaitre les unes après les autres : tu animes une seule étoile en opacité, et tu places une expression dans tous les autres calques pour qu'ils prennent la même valeur, mais en décalé dans le temps avec le paramètre valueAtTime.
Ooops, au fait, j'ai pas précisé, "merki“ couad pour l'astuce valueAtTime pour gérer l'opacité et le décalage, j'y avais pas pensé, j'avais simplement décalé mes calques dans la timeline. :sad:

Voir le messagecouad, le Jul 20 2009, 09:15 AM, dit :

Tu peux même pousser le vice plus loin en définissant automatiquement la valeur de rotation à adopter en fonction du nombre de calques "étoile" présents dans ta compo.
Si ça t'intéresse, je pourrai te montrer comment ça fonctionne.
Ah ouais, c'est cool ça ! Je vais essayer et si je bloque, ...ben, je t'appelle, .... ok !
:? ;-)

#5 freenetstef

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 173 messages

Posté 23 July 2009 - 01:42 AM

salut couad,

j'ai réussi à automatiser et obtenir mon effet avec des calques de formes (fichier joint) mais pas avec des calques contenant un masque en forme d'étoile ou encore avec un calque de texte avec une étoile en typo picto à l'intérieur, sur ces derniers les étoiles "tournent" !

Si jamais tu as une astuce, ...

Sinon, j'ai repris ton idée de déterminer la rotation en fonction du nombre total de calques dans la compo, ça donne :

thisComp.layer(index+1).transform.zRotation+(360/thisComp.numLayers)

mais par contre je ne sais pas comment pousser l'expression pour définir le nombre total de calques avec le nom "étoile“, moi ma formule elle tombe à l'eau si j'ajoute une caméra par exemple.

Voir le messagecouad, le Jul 20 2009, 09:15 AM, dit :

Tu peux même pousser le vice plus loin en définissant automatiquement la valeur de rotation à adopter en fonction du nombre de calques "étoile" présents dans ta compo.
Si ça t'intéresse, je pourrai te montrer comment ça fonctionne.
Ben ouais, chui preneur alors ! :-)

Fichier(s) joint(s)



#6 couad

  • Members
  • PipPipPipPipPipPipPipPip
  • 1002 messages

Posté 24 July 2009 - 21:46 PM

Voir le messagenetstef, le Jul 23 2009, 02:42 AM, dit :

Ben ouais, chui preneur alors ! :-)
Comme je sens que tu es joueur, je vais te donner un indice :texas: .

Tout ce qu'il te manque, c'est d'avoir un moyen automatique de savoir le nombre de calques qui se nomment "ETOILE" dans ta compo, donc t'as juste à mettre cette expression quelque part (paramètre glissière, etc...)) et d'aller chercher le résultat :

nbreEtoiles = 0;
nom = "ETOILE";

for (i = 1; i <= thisComp.numLayers; i++) {
if (thisComp.layer(i).name == nom) {
nbreEtoiles++;
}
}
nbreEtoiles


Dans ce cas, il faut juste veiller à ce que les étoiles se nomment bien toutes "ETOILE".
A partir de ce nombre, tu pourras automatiquement définir les angles, etc...

Voir le messagenetstef, le Jul 23 2009, 02:42 AM, dit :

j'ai réussi à automatiser et obtenir mon effet avec des calques de formes (fichier joint) mais pas avec des calques contenant un masque en forme d'étoile ou encore avec un calque de texte avec une étoile en typo picto à l'intérieur, sur ces derniers les étoiles "tournent" !
Ah bin c'est normal étant donné que les calques de forme disposent de sous attributs de rotation, indépendants de la rotation du calque elle-même, donc parfaits pour "compenser" la rotation.

#7 freenetstef

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 173 messages

Posté 29 July 2009 - 17:01 PM

Voir le messagecouad, le Jul 24 2009, 10:46 PM, dit :

Comme je sens que tu es joueur, je vais te donner un indice :mrgreen: .
hé hé hé :texas:

Voir le messagecouad, le Jul 24 2009, 10:46 PM, dit :

for (i = 1; i <= thisComp.numLayers; i++) {
if (thisComp.layer(i).name == nom) {
nbreEtoiles++;
}
}
nbreEtoiles[/i]
Aaah une boucle, okèèèèèèèèèèh ! :oops:
...
Et en plus ça fonctionne. ;-)

Tanklou Mistère Couad :Hola:

...
Sinon, t'avais ben raison, ce genre de truc c'est bcp plus rapide à tailler à la main, mais bon, j'avais un peu de temps à perdre et envie de me la pêter un peu en jonglant avec qqs expressions ;-)
...
Et pis, toute cette petite histoire m'aura donner l'occase de voir la démoreel 2009 et la nouvelle version du site de seed factory que je connaissais pas t'encore :lol:

@ +
stef : : :



1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)

authorised training centre

Centre de Formation Mediabox - Adobe et Apple Authorised Training Center.

Déclaré auprès de la Direction du Travail et de la Formation Professionnelle

Mediabox : SARL au capital de 62.000€ - Numéro d'activité : 11 75 44555 75 - SIRET : 49371646800035

MEDIABOX, 23, rue de Bruxelles, 75009 PARIS

FFP