-
Animer une formule
Bonjour,
J'ai l' "objet formule" que j'aimerais utiliser afin d'animer une sorte de voile.
J'aimerais simplement que la formule de type :
Sin((u+t)*2.0*PI)*0.5 diminue petit à petit jusqu'à stopper.
Donc visiblement il faudrait que je passe de : Sin((u+t)*2.0*PI)*0.5 à Sin((u+t)*2.0*PI)*0
Mais lorsque j'anime ma formule à l'aide de point clé sur la timeline, la formule passe de l'un à l'autre sans intermédiaire.
J'imagine que Xpresso que je connais très très très peu pourrait m'aider.
Mais par quel moyen ?
Un indice ?
Merci d'avance.
Nico
-
Salut tonib,
Tu peux faire ça avec un Tag Python sur ta formule.
Exemple pour passer de 0.5 à 0 entre la frame 10 et 50 :
Code PHP:
import c4d
frame_start = 10 # Frame de début
frame_end = 50 # Frame de fin
x_from = 0.5 # Valeur à la frame de début
x_to = 0 # Valeur à la frame de fin
def range_convert(old_value, old_min, old_max, new_min, new_max):
# On change de range
new_value = (((old_value - old_min) * (new_max - new_min)) / (old_max - old_min)) + new_min
# On clamp entre le min et le max (sachant que le min peut être plus grand que le max)
max_f, min_f = (max, min) if new_min < new_max else (min, max)
return max_f(min_f(new_value, new_max), new_min)
def main():
# On récupère la frame courante
current_frame = doc.GetTime().GetFrame(doc.GetFps())
# On converti la valeur de la frame courante qui est entre [frame_start, frame_end]
# en une valeur comprise entre [x_from, x_to]
current_x = range_convert(current_frame, frame_start, frame_end, x_from, x_to)
op.GetObject()[c4d.FORMULAOBJECT_DLT] = "Sin((u+t)*2.0*PI)*" + str(current_x)
Je pense que tu peux faire la même chose avec Xpresso et une cartographie d'intervalle.
-
Salut Yann et merci pour ta réponse,
J'y jette un oeil quand je reviens sur le projet.
Du python je n'ai pas fais non plus et ne sais pas comment l'intégrer, je vais voir tout ça !!