PDA

Voir la version complète : Apparition d'objets en séquence



salvazalvi
16/12/2005, 13h34
Bonjour,

Question de débutant : je cherche à faire apparaître des éléments les uns après les autres. Je me dis que ça doit pouvoir se faire soit avec un "set driver", soit dans expresso sur un groupe (plus pratique car une expression en tout et pour tout).

Je continue à cherche de mon côté, mais si vous avez des conseils, ils sont les bienvenus.

Salvador

Vincent
16/12/2005, 13h44
L'Xpresso te servira à "automatiser" l'action. Donc à te simplifier les choses pendant l'animation.

Sinon, pour faire apparaitre/disparaitre un objet, tu as plusieurs méthodes possibles;
Une simple recherche sur le forum devrait t'en lister quelques-unes ...

champagne
16/12/2005, 13h48
Sur ma 6CE avec presque rien, j'utilise l'échelle.
Echelle 0 à la frame précédent l'apparition, échelle 1 sur la frame d'apparition.
C'est bricolé mais ça fonctionne très bien :wink:

Vincent
16/12/2005, 13h52
Et oui Champagne ! très astucieux :poucehaut:
Y'en a un paquet de méthodes ... et je ne connaissais pas celle là :D

salvazalvi
16/12/2005, 13h52
Le probleme n'est pas l'apparition que j'arrive à gérer (avec un tag "Display"). Ce que je cherche à faire, c'est l'expression qui fera apparaitre mes objets les uns après les autres au sein d'un groupe.

L'anim que je cherche à faire est : sur une terre qui tourne, des points apparaissent les uns après autres sur les différents pays.

Je continue, je vais finir par trouver.

Merci,

Salvador

salvazalvi
16/12/2005, 16h21
L'expression que je cherche à écrire serait du genre :

objet(index"n+1").visibilité=100 SI objet(index"n").visibilité=100 à temps-1image, sinon objet(index"n+1").visibilité=0.

Comment faire ceci dasn xpresso ?

Mystère.

salvazalvi
17/12/2005, 10h40
Juste au cas où, base80 m'a aidé hier soir et donc je continue sur mon projet.

Si quelqu'un est intéressé par l'expression, je peux lui demander si je peux la poster ici.


Salvador

Tengaal
17/12/2005, 12h48
Tu as peut-être plus simple pour faire apparaitre tes objets successivement...
C'est d'abord de trouver l'indice de l'objet à modifier en fonction de l'image en cours, plutôt que de traiter les objets un par un et d'appliquer un test sur le temps, ce qui est le contraire.

exemple:
tu as 10 objets, et tu veux avoir 10 images entre la disparition d'un objet et l'apparition du suivant.
durée=10 images.
au départ tous tes objets sont invisibles (visibilité 0%)

tu définis également l'image de début pour cette animation en chaine, l'image 50 par exemple.
début=50

l'objet n°1 va donc passer de 0% (image 50) à 100% (image 50+10)
l'objet n°2 va donc passer de 0% (image 50+10) ) 100% (50+10+10)
etc..

Donc ici ton animation de 10 objets qui apparaissent successivement commence à l'image 50 et se termine 10 objets*10 images plus loin, à l'image 150.

donc il faut au départ calculer le facteur de croissance du taux de visibilité en fonction du temps
en 10 images il faut passer de 0% (0.0) à 100% (1.0) donc
taux=1/10 = 0.1
ce qui signifie qu'en fonction de l'image dans cette section de 10 images, on va calculer la valeur exacte de visibilité image*taux

donc pour un instant précis dans l'animation, image F:
indice objet = int ( (F - début) / durée ) + 1
"int" est la valeur entière de la division, arrondie à l'inférieur, donc le résultat est 0 au minimum, on peut donc ajouter +1 pour que le 1er objet soit l'indice 1 et non 0.
donc ici sur ce principe, si on est à l'image 64 alors:
indice objet = int ( ( 64 - 50 ) / 10) + 1 = int ( 14 / 10 ) + 1= 2 (objet n°2 à animer donc)

on prend l'objet n°2 puis :
visibilté= taux * Modulo ( ( F - debut ) / durée )
Modulo(a,b) calcul le reste de la division de a/b, donc ici donne le n° de l'image dans la sequence de 10 images en cours.

par exemple à l'image F = 64, l'objet n°2 aura donc comme taux de visibilité:
visibilité = 0.1 * modulo ( (64-50) / 10 ) = 0.1 * modulo ( 14/10 ) = 0.1* 4 = 0.4
Soit 40 % de visibilité à l'image 4 pour la sequence de cet objet donc.*

voilà pour le principe, c'est une possibilité, qui est paramétrable car cet alogoritme permet des apparitions progressives enchainées avec le réglage de la durée d'apparition entre chaque objet, ainsi que l'image de démarrage de cette animation.* :wink:

EDIT: au début je dit "plus simple", avec le recul, mon message pourrait exprimer le contraire avec mes lignes de calculs de la mort !* :lol:

bon sinon bien sûr il y a aussi la méthode manuelle :
tu animes ton 1er objet, puis dans la fenêtre ligne temporelle tu copies cette piste sur les autres objets et du la décales précisément avec la fonction "deplacement/mise à l'échelle".

Vincent
17/12/2005, 13h34
Alors ça c'est du cours magistral !
Je dis "Monsieur" ! :prie: :prie: :prie:


Merci ! :love:

base80
17/12/2005, 16h30
http://www.base80.com/tips/onoff/on-off.jpg

si le temps + le délai / l'intervalle est plus grand ou égal a l'indice de l'objet dans la hiérarchie il devient visible

base80
17/12/2005, 16h41
pour les paresseux voici le fichier
http://www.base80.com/tips/onoff/on-off.c4d.zip

salvazalvi
19/12/2005, 14h54
Bonjour,

Désolé, je n'avais pas vu qu'il y avait des réponses à ce sujet.

Et bien je commence à comprendre peu à peu la logique Xpresso. J'avoue être un peu déstabilisé par la logique de programmation alors que j'étais plutôt content avec mes expressions toutes simples sur After.

Le plus rageant, c'est que je comprends vos explications mais n'en suis pas encore à pouvoir conceptualiser dès le départ comment m'y prendre dans Xpresso. Ca viendra en m'y collant régulièrement je suppose. Ca ma fait un peu la même chose en passant sur des logiciels de compositing à arborescence.

Il y a Darter sur CGTalk qui m'a proposé une expression plus "complexe" encore mais sur le même principe, avec options pour cumuler les visibilités ou les alterner.

Bref, merci pour votre aide et je dois avouer que la communauté de C4d, et notamment celle-ci, est agréablement efficace et sympathique.

Petite question : mon expression à la "javascript" postée plus haut ne fonctionnerait pas dans ce cas (bien sûr après avoir été traduite dans XPresso) ?