Boutique Cinema 4D
Affichage des résultats 1 à 9 sur 9

Discussion: Xpresso - Animation d'un effecteur bend lors d'une collision

  1. #1
    Pilier Avatar de OrlaV
    Date d'inscription
    septembre 2012
    C4D version
    R19 Studio
    OS
    Win 10
    Messages
    768

    Xpresso - Animation d'un effecteur bend lors d'une collision

    Salut à tous!

    J'aimerais résoudre un problème auquel je suis confronté en ce moment.
    Je dois créer une boite à musique de ce type:

    Cliquez sur l'image pour la voir en taille réelle 

Nom : 		4647913.14991e3f.560.jpg 
Affichages :	4 
Taille :		78,5 Ko 
ID : 			9998

    Tout le mécanisme doit être automatisé parce qu'il va falloir faire des changements de rythme pour une animation.
    Mon problème concerne les petites lattes qui créent le son. Je cherche donc un système avec Xpresso pour automatiser l'animation des lattes mais c'est là que ça pêche.
    Il faut une collision et un effecteur bend pour courber la latte.

    Voici ce que j'ai pu faire mais il n'y a que 2 états de l'effecteur bend, un état à 0% et un autre état que je peux contrôler.

    Cliquez sur l'image pour la voir en taille réelle 

Nom : 		1386358626-capture-d-ecran-2013-12-06-a-20-35-11.png 
Affichages :	10 
Taille :		26,8 Ko 
ID : 			9999

    Donc au final j'aimais que l'effecteur bend s'anime en fonction de la collision des piques sur les lattes.

    J'espère avoir été assez clair, merci d'avance!

  2. #2
    Pilier Avatar de sansalvador
    Date d'inscription
    décembre 2012
    C4D version
    R13 Studio
    OS
    windows 7 ultimate 64
    Messages
    1 744
    Bonsoir Orlav

    je n'y connais pas grand chose , mais je me permets d'intervenir car ton sujet m'a fait penser à un autre sujet qu'avait ouvert Géantvert , et je me suis dis que cela pourrait être une autre piste pour ce que tu veux faire sur tes lamelles , Fluffy avait amené une solution avec un exemple de scène téléchargeable , donc si cela peut t'aider , il s'agit d'utiliser le module HAIR , voici le lien :
    http://frenchcinema4d.fr/showthread....hair-dynamique

    peut être que....

  3. #3
    Pilier Avatar de OrlaV
    Date d'inscription
    septembre 2012
    C4D version
    R19 Studio
    OS
    Win 10
    Messages
    768
    Et bien c'est une magnifique alternative! en bidouillant un peu j'arrive presque à ce que je veux.
    L'unique problème est que c'est une simulation et que cela ram dans le viewport.
    Je serais quand même preneur d'une autre solution.

    Mais merc à toi sansalvador!

  4. #4
    Pilier Avatar de Floc
    Date d'inscription
    novembre 2012
    C4D version
    R15 Studio
    OS
    WindOSX
    Messages
    1 617
    J'ai bien une solution. C'est un peu bourrin mais ça à l'avantage d’être simple.
    Utilisation du range mapper pour controller le bend en fonction de la rotation. C'est bourrin parce qu'il va falloir un xpresso sur chaque lamelle et régler manuellement les courbes de chaque lamelle.
    En même temps en y a pas dix mille. Il suffit de régler correctement le premier xpresso ensuite il n'y qu'a le dupliquer et décaler les courbes du range mapper. Comme tu as une retour visuel ça peu aller assez vite.
    A mon avis en une demi-heure c'est réglé. Par contre après ça suivra le rythme et avec la courbe du range mapper tu a un contrôle précis de l'animation de la lamelle.
    Fichiers attachés Fichiers attachés

  5. #5
    Vieux Croûton Avatar de Fluffy
    Date d'inscription
    septembre 2003
    C4D version
    R18 Studio
    OS
    Win 10 Pro
    Messages
    13 711
    Billets dans le blog
    1
    Pas forcément besoin de dynamiques pour ce genre de truc. Tu devrais pouvoir te créer un Xpresso qui vient agir sur ton bend lorsque la distance entre deux objets se réduit (picots<>objets placés au bout des lamelles).
    Je vais voir si j'ai un peu de temps pour te sortir un fichier.

    *Edit*
    Ah, grillé par Floc.
    Fluffy mais costaud...www.fluffy4d.com

  6. #6
    Pilier Avatar de OrlaV
    Date d'inscription
    septembre 2012
    C4D version
    R19 Studio
    OS
    Win 10
    Messages
    768
    Et bien c'est bourrin mais c'est exactement ce que je recherchais! Cela s'adapte évidemment à la vitesse de la rotation et c'est le principal!
    Et oui, je n'ai que 13 lamelles ça ne devrait pas être trop long.
    Merci Floc!

    Oui Fluffy, ce serait une possibilité, je testerai tout seul ça devrait aller pour cette option là

    Merci à vous deux ce fut fort instructif!
    Dernière modification par OrlaV ; 07/12/2013 à 00h56.

  7. #7
    Pilier Avatar de xs_yann
    Date d'inscription
    février 2005
    C4D version
    R19 Studio
    OS
    Mac OS X 10.13
    Messages
    1 990
    Salut,

    J'ai tenté un truc en Python : Télécharger



    Code PHP:
    import c4d

    collide 
    False # En cours de collision : collide = True
    prevRotation # Rotation du cylindre a la frame precedente

    MAX_STRENGTH 0.8 # Valeur maximale du bend
    SPEED_FACTOR 2.0 # Vitesse de courbure

    # Fait converger 'a' vers 'value' par pas de 'step'
    # exemples : 
    #     converge(10, 0, 0.5) = 9.5
    #     converge(-5, 0, 0.2) = -4.8
    def converge(avaluestep):
        
    # Permet de ne pas osciller quand 'a' est proche de 'value'
        
    if abs(a) >= abs(value) + abs(step):
            if 
    value:
                
    -= step
            elif a 
    value:
                
    += step
        
    else:
            
    value
        
    return a

    def main
    ():
        global 
    collision
        
    global strength
        
    global rotation
        
    global Output
        
        
    global collide
        
    global prevRotation
        
        
    # Si une collision est detectee on amorce la collision
        
    if collision:
            
    collide True
        
        
    # On calcule la vitesse de rotation grace a la rotation precedente et
        # la rotation courante
        
    if not prevRotation:
            
    velocity 0
        
    else:
            
    # On s'assure que la vitesse est plus petite que la valeur maximale
            
    velocity min(MAX_STRENGTH, (prevRotation rotation) * SPEED_FACTOR)
        
        
    # Si une collision est en cours on augmente la courbure
        
    if collide:
            
    strength += velocity
        
        
    # Si on atteint la valeur maximale on arrete la collision
        
    if abs(strength) >= MAX_STRENGTH:
            
    collide False

        
    # Si aucune collision n'est en cours on converge vers la position de repos
        
    if not collide:
            
    strength converge(strength00.2)
        
        
    prevRotation rotation
            
        Output 
    strength 
    En gros, dès que la lamelle a une collision, elle se courbe (à une vitesse dépendant de la vitesse de rotation du cylindre) jusqu'à une valeur maximale, puis revient à son point de départ.

    Avec MAX_STRENGTH la valeur maximale et SPEED_FACTOR la vitesse, qui sont les deux paramètres à adapter.

    C'est pas très précis mais ça a l'air de fonctionner (dans les deux sens).

    Dans le zip j'ai mis mon fichier sur lequel j'ai fait des tests et une adaptation sur le fichier de Floc.
    Dernière modification par xs_yann ; 07/12/2013 à 01h40.

  8. #8
    Pilier Avatar de Floc
    Date d'inscription
    novembre 2012
    C4D version
    R15 Studio
    OS
    WindOSX
    Messages
    1 617
    Haaa, xs_yann ça marche top bien. On a même envie de jouer avec.
    OrlaV avec ce outil, tu vas pouvoir faire des symphonies de boites à musique !

  9. #9
    Pilier Avatar de OrlaV
    Date d'inscription
    septembre 2012
    C4D version
    R19 Studio
    OS
    Win 10
    Messages
    768
    Oula, l'artillerie lourde!
    Ca marche quand même au poil ce système. Je testerai tout ça demain!
    Merci à toi xs-yann!

Discussions similaires

  1. mouvement non visible lors d'une animation
    Par amateur dans le forum Animation
    Réponses: 5
    Dernier message: 14/06/2013, 18h00
  2. Accélérer la vitesse d'un objet lors d'une chute?
    Par lovevcade dans le forum Nouveaux membres
    Réponses: 4
    Dernier message: 21/03/2010, 17h11
  3. Prob lors d'une animation
    Par dedebusinet dans le forum Nouveaux membres
    Réponses: 4
    Dernier message: 19/06/2008, 17h21
  4. clignottement lors d'une animation
    Par darsanha dans le forum Nouveaux membres
    Réponses: 5
    Dernier message: 11/03/2007, 19h59
  5. Retard lors d'une animation.
    Par ramkin dans le forum Xpresso
    Réponses: 8
    Dernier message: 09/03/2007, 20h08

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •  
Mediaworks - Logiciels 3D | Design Internet - Creation site internet