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

Discussion: Récupérer la position d'une particule sous la forme d'un nombre réel

  1. #1
    Squatteur Avatar de istef
    Date d'inscription
    janvier 2007
    C4D version
    R16 Studio
    OS
    Win 11_64
    Messages
    183

    Récupérer la position d'une particule sous la forme d'un nombre réel

    salut à tous,

    je cherche à récupérer la position y d'une particule, mais dans un noeud résultat sous la forme d'un nombre (entier ou réel).

    Or la chose se complique dès que l'émetteur émet plus d'une particule sur la longueur de la ligne temporelle, en effet la position se réinitialise à chaque création de nouvelle particule.

    Je sais que le noeud PConduit, entre autre, permet de récupérer l'indice d'une particule, ou encore la quantité de particules émises, donc j'imagine qu'en isolant une particule spécifique, la particule numéro x, on doit pouvoir récupérer sa position.

    Le hic, je n'arrive pas à mettre cela au point, je me suis pris la tête sans résultat probant, en posant des conditions et des comparaisons multiples et diverses, en tentant d'activer le Xgroupe qui effectue le calcul à un instant T ou à la création de la Xième particule, mais sans succès.

    La soluce n'est pas loin pourtant, je le sens, mais je n'ai plus le recul, alors je m'en remets à une âme charitable du forum.
    Fichiers attachés Fichiers attachés
    Dernière modification par istef ; 13/04/2011 à 17h18.

  2. #2
    Vieux Croûton Avatar de Aurety
    Date d'inscription
    juillet 2002
    C4D version
    R17 Studio
    OS
    Mac
    Messages
    14 477
    Billets dans le blog
    3
    je ne sais pas par TP, pas encore poussé aussi loin ( malheureusement ) mais en détournant un peu via Mograph, on peut en sortir quelque chose... Enfin là ca semble marcher.
    Fichiers attachés Fichiers attachés
    kenavo !! // Pinterest KAMIGAZ®

  3. #3
    Squatteur Avatar de istef
    Date d'inscription
    janvier 2007
    C4D version
    R16 Studio
    OS
    Win 11_64
    Messages
    183
    Oui bien vu !
    En effet, ça le fait ;-)

    Mais j'aurais bien aimé rester dans TP, ça m'énerve, grrrrr

  4. #4
    Big Boss Avatar de base80
    Date d'inscription
    février 2003
    C4D version
    R12 Studio
    OS
    Fémur
    Messages
    8 330
    je ne sais pas si ca peux servir mais j'ai une fois posé une question sur CGTalk et on m'as même répondu
    c'est ici
    http://forums.cgsociety.org/showthre...f=182&t=961492

  5. #5
    Pilier Avatar de oli_d
    Date d'inscription
    avril 2004
    C4D version
    Autre
    OS
    MacOS X
    Messages
    707
    Avec python c'est relativement simple, enfin si j'ai bien compris..

    EDIT : attention si on veut la première particule il faut rentrer 0 sous no_part
    Fichiers attachés Fichiers attachés
    Dernière modification par oli_d ; 12/04/2011 à 20h56.

  6. #6
    Vieux Croûton Avatar de Aurety
    Date d'inscription
    juillet 2002
    C4D version
    R17 Studio
    OS
    Mac
    Messages
    14 477
    Billets dans le blog
    3
    pffff c'est clair ca calme !! Merci pour le code Oli
    kenavo !! // Pinterest KAMIGAZ®

  7. #7
    Squatteur Avatar de istef
    Date d'inscription
    janvier 2007
    C4D version
    R16 Studio
    OS
    Win 11_64
    Messages
    183
    Citation Envoyé par base80 Voir le message
    je ne sais pas si ca peux servir mais j'ai une fois posé une question sur CGTalk et on m'as même répondu
    c'est ici
    http://forums.cgsociety.org/showthre...f=182&t=961492
    j'ai vu ton post sur CG

    "Wow! Great file, super thanks. I've spent a week on this one and did not figure it out. (particle ID)"

    bon ça va, je comprends pourquoi ça m'a mis mal à la tête tout cela

    et je ne désespère pas

    sinon, ça m'a l'air un tout petit peu éloigné de ma demande initiale, même si la position de la particule est certes bel et bien récupérée dans cet exemple, c'est clair.

    Anyway, un grand merci pour le lien vers ce fichier, un peu complexe et donc à décortiquer tranquillou
    Dernière modification par istef ; 14/04/2011 à 12h59.

  8. #8
    Squatteur Avatar de istef
    Date d'inscription
    janvier 2007
    C4D version
    R16 Studio
    OS
    Win 11_64
    Messages
    183
    Citation Envoyé par oli_d Voir le message
    Avec python c'est relativement simple, enfin si j'ai bien compris.
    oui oui, relativement (ouarf ouarf)

    je suis curieux de savoir où as-tu "enfin si j'ai bien compris" tout cela ???
    c'est si simple présenté comme cela, c'est déconcertant !
    c'est où donc qu'on apprend à faire si simple ?

    en tout cas, bravo >>>>>>> applause applause ;-)
    et Mille mercis ;-)

  9. #9
    Squatteur Avatar de istef
    Date d'inscription
    janvier 2007
    C4D version
    R16 Studio
    OS
    Win 11_64
    Messages
    183
    Citation Envoyé par Aurety Voir le message
    pffff c'est clair ca calme !! Merci pour le code Oli
    t'as raison !
    la queucla qu'il m'a mis master oli_d
    ;-)

  10. #10
    Pilier Avatar de oli_d
    Date d'inscription
    avril 2004
    C4D version
    Autre
    OS
    MacOS X
    Messages
    707
    Citation Envoyé par istef Voir le message
    je suis curieux de savoir où as-tu "enfin si j'ai bien compris" tout cela ???
    là je parlais de ta question ...

    Citation Envoyé par istef Voir le message
    c'est où donc qu'on apprend à faire si simple ?
    Il faut "juste" apprendre le python et éplucher la doc python de c4D

    Mais en gros pour utiliser un noeud python (je sens que je vais perdre le 99.9% du public en délire):

    • On crée un noeud python (si,si, dingue non ?)
    • On crée des ports d'entrée et de sortie au format souhaité avec un petit nom bien a eux (sans accent, ni espace)
    • et on tape le code (et c'est là que ça se corse!)

    Pour le code attention de bien respecter le nom des ports (y compris la casse), pour les ports de sortie il faut les déclarer comme "global" (je rentre pas dans les détails).

    Il faut savoir qu'il y a par défaut une variable qui s'appelle tp et qui récupère le système de particule du document (TP_MasterSystem). Ensuite si on va dans la doc du python de C4D (téléchargeable chez Maxon) on peut regarder tout ce que l'on peut faire sous Modules/thinkingparticles/TP_master. Et là il y a une méthode TP_MasterSystem.Position(pid) qui renvoie le vecteur de position de la particule n° pid, donc j'attribue au port val_y tp.Position(particule) et le .y à la fin me permet de renvoyer que la partie y du vecteur.

    NB Ce qui est après les # c'est du commentaire pour expliquer le code


    Code PHP:
    import c4d  #ça on le met toujours c'est pour importer la bibliothèque c4d


    val_y 0.0 #ici cela permet de donner une valeur à l'initialisation, si on coche "réinitiliser à l'image 0" 
                      #dès que la timeline repart la variable prend cette valeur

    def main():                                        #fonction principale appelée à chaque frame
        
    global val_y                                   #indispensable pour les ports de sortie
        
    if particule == no_part:                   # condition : si le port particule est égal à (attention double signe) no_part...
            
    val_y =tp.Position(particule).y      # .... attention le décalage est important pour le reste voir ci dessus 
    bon je pensais que ça allait être simple à expliquer, mais non ....

    Si jamais regardez le code par défaut d'un noeud python qui additionne les deux ports en entrée et qui renvoie le résultat au port de sortie :

    Code PHP:
    import c4d
    #Welcome to the world of Python


    def main():
        global 
    Output1
        Output1 
    Input1 Input2 
    Il faut vraiment que je trouve du temps pour refaire mon tuto obsolète ....

  11. #11
    Squatteur Avatar de istef
    Date d'inscription
    janvier 2007
    C4D version
    R16 Studio
    OS
    Win 11_64
    Messages
    183
    Citation Envoyé par oli_d Voir le message
    là je parlais de ta question ...
    aaah, je pensais que ton "enfin si j'ai bien compris" signifait que tu étais fraichement émoulu à l'usage de Python
    et que cela me donnait un espoir de m'y mettre moi aussi
    vu la simplicité avec laquelle tu avais résolu la question en passant par Python


    Citation Envoyé par oli_d Voir le message
    Il faut "juste" apprendre le python et éplucher la doc python de c4D
    ouais j'ai tenté, téléchargé la doc, mais non, c'est vraiment pas pour moi, autant j'arrive à décrypter le code que tu as utilisé pr trouver la solution, et qui devient encore plus clair avec tes explications limpides, autant dès qu"il faut se taper la doc ou tenter une approche pour écrire, voire même penser en code, je suis largué.

    Rien que l'explication de "TP_MasterSystem.Position(pid)" me déroute !

    Pourtant je suis dans la doc de C4D à longueur de temps qd je bosse avec, donc c'est pas une doc de plus qui me rebute.


    En tout cas, merci pour ce petit cours de Py, c'était bien sympa, ma foi

    ;-)
    Dernière modification par istef ; 14/04/2011 à 09h30.

Discussions similaires

  1. Réponses: 4
    Dernier message: 02/12/2011, 10h56
  2. Récupérer la position Y d'une particule
    Par actarus dans le forum Xpresso
    Réponses: 7
    Dernier message: 11/12/2008, 03h29
  3. Réponses: 10
    Dernier message: 27/08/2006, 14h04
  4. Fou..Fou je deviens...Particule le long d'une spline
    Par maraben dans le forum Général Cinema 4D
    Réponses: 8
    Dernier message: 08/05/2006, 10h07
  5. Réponses: 14
    Dernier message: 22/01/2006, 11h16

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