Forums Développement Multimédia

Aller au contenu

Boucle video avec effets turbulences

VIDEO After Effects

2 réponses à ce sujet

#1 viinnch

    Ceinture Jaune

  • Members
  • PipPip
  • 23 messages

Posté 16 August 2009 - 18:01 PM

Bonjour,

Je débute sous After Effects et je cherche à créer un "boucle vidéo".
Concrètement, j'utilise l'effet "Turbulences" avec une expression "time*200" sur le paramètre Evolution.
Jusqu'ici tout va bien par contre j'aimerais au cours de l'animation avoir un effet de lecture inversée
ne trouvant pas de moyen d'y parvenir, je me suis dit qu'il faudrait que j'arrive à paramétrer mon effet turbulence
pour qu'a la moitié de l'animation, il refasse la même chose mais à l'envers.

J'ai aussi fait quelques tests du genre, duplique le calque, le positionner à la fin de l'original et utiliser le remappage temporel pour inverser les images clés. Dans ce cas de figure, j'ai une variation de luminosité (une sorte de flash) quand la tête de lecture passe sur le calque dupliqué.

Je cherche un peu partout mais rien n'y fait, si vous avez quelque conseils pour m'aider à avancer.

Merci d'avance

#2 viinnch

    Ceinture Jaune

  • Members
  • PipPip
  • 23 messages

Posté 17 August 2009 - 13:59 PM

J'ai enfin pu résoudre le problème, je poste la réponse si jamais ça pourrait intéresser quelqu'un.
Par contre, je ne suis pas convaincu que ce soit la meilleure solution.

Concrètement, j'avais appliqué un effet turbulence sur un élément graphique avant de une "pré comp" que je réutilisé à X exmplaire dans ma composition finale. Le paramètre évolution de l'effet turbulence était gérer par une expression.

Je cherchais à obtenir une courte vidéo qui me servirait de "boucle".
Au final, j'ai dupliqué ma composition dans laquelle j'ai inverser le sens de lecture (Calques/Temps/Inverser le sens de lecture).

Dans une nouvelle composition,j'ai placé ma première comp suivi de la seconde.
Je n'ai plus de différence de luminosité etc....

Si vous avez d'autres solutions n'hésitez pas, je suis plus que preneur.
Merci d'avance en espérant que cette solution pourra dépanner un jour l'un d'entre vous.

#3 ehmicky

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 56 messages

Posté 17 August 2009 - 14:25 PM

Salut,

Si c'est créer une boucle vidéo, déjà, il vaut mieux éviter de dupliquer tes calques en faisant un remappage temporel, car si tu veux changer ton remappage (sa durée par exemple), tu seras obligé de refaire la manipulation. Pourquoi ne pas utiliser le filtre Déformation temporelle en mettant des images clés sur le paramètre "Vitesse". A 100, tu auras une vitesse de lecture normale, et à -100 une vitesse de lecture inversée.
Maintenant, pour que ton filtre Turbulences produise les mêmes turbulences à un instant T, que cet instant soit affiché en lecture normal ou en lecture inversée, tu as plusieurs solutions selon moi :
- mettons que tu veuilles faire une lecture inversée brusque. De la seconde 0 à la seconde 15, tu as une vitesse de 100, puis de la seconde 15 + 1 frame à la seconde 30, tu as une vitesse de -100. Eh bien, ce que tu pourrais mettre comme expression dans le paramètre Evolution de ton filtre Turbulences serait :
if (time < 15) {
time*200;
}
else {
(30-time)*200;
}
ce qui pourrait d'ailleurs être optimisé en :
Math.abs(15-time)*200
pour peu que tu ne dépasses pas la seconde 30.

- cependant, cette technique ne fonctionne que si tu as une lecture inverse brusque et soudaine. Si tu veux plus de subtilité dans le passage de la lecture normale à la lecture inverse, cela ne suffira pas. Voici une technique qui te permettra de synchroniser tes turbulences avec ton remappage temporel, quel que soit ce dernier (tu peux faire des aller-retours comme tu le souhaites, les turbulences resteront les mêmes sur tous les instants t de ta vidéo ;-) ).
evol = 0;
amplitude = 4; /*Cette variable désigne l'amplitude des turbulences*/
duree = thisComp.frameDuration; /*Cette variable désigne la durée en secondes d'une frame. Ceci nous permettra de modifier le nombre de frames par secondes sans modifier l'animation. Ceci nous sera également utile avec la méthode valueAtTime ;) */

for (compteur = 0; compteur <= timeToFrames(); compteur++) {
evol += duree*amplitude*effect("Déformation temporelle")("Vitesse").valueAtTime((compteur-0.5)*duree);
}
/*A chaque frame, la variable "evol" va s'incrémenter d'un nombre fixe (duree*amplitude), qu'elle va multiplier par la vitesse de la déformation temporelle ("effect("Déformation temporelle")("Vitesse")"). Ainsi, en lecture normale, "evol" augmentera, et en lecture inversée, "evol" diminuera. Cependant, pour se "souvenir" de toutes les valeurs d'"evol" pour calculer chaque frame (car il est nécessaire de s'en souvenir ici), il est nécessaire, à chaque frame, de "reparcourir" toute l'évolution d'"evol" depuis l'instant 0. C'est le sens de cette boucle. En effet, la variable compteur va simuler un temps virtuel dans la boucle, et la méthode valueAtTime va nous permettre d'obtenir les valeurs de la vitesse de la déformation temporelle durant chaque instant de ce temps virtuel, et d'incrémenter "evol" avec. Quant au "0.5", il s'agit juste d'un petit truc pour que le calcul soit impeccable :) */

evol;

Bon, c'est pas très clair mon explication, en tout cas, le code fonctionne parfaitement ! Regarde le code si tu ne comprends pas mes commentaires.
Il y a sûrement des méthodes plus propres ou plus rapides pour parvenir au même résultat, mais c'est la seule que j'ai trouvée. Bon courage ;-)



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