Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

3D Python Discussion :

Python Maya scripting


Sujet :

3D Python

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    février 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : février 2012
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Python Maya scripting
    Bonjour,

    je suis entrain d'essayer d'écrire un code pour montrer une animation de la tour d'hanoi sous Maya.

    J'aimerais savoir s'il est possible de 'connecter' deux objets ensemble de manière a ce que je puisse dire a mes disques "bougez jusqu'à la tour 1" par exemple.

    voilà mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    import maya.cmds as cmds # import the python lybrary
     
    numTower = 3
    for i in range(3): 
     
     tower = cmds.polyCylinder( name = 'tower' + str(i), radius = 5, height = 100 )     # create 3 cylinder
     cmds.move(0, 50, i*80, ('tower' + str(i))) # move  all cylinders space by 50
     
     
    rad = 70
    for i in range(4) :
        disc = cmds.polyCylinder( name = 'disc' + str(i), radius = rad, height = 10) # create 4 discs
        cmds.move(0, 12*i, 160, ('disc' + str(i))) # move them to tower 1
        rad = rad*0.5
    donc pour l'instant je me suis contenté de bouger les disques à l'endroit où se trouvait la tour...j'aimerais leur dire directement d'aller sur cette tour.

    mon autre problème est que je ne sais pas vraiment comment faire l'animation. est ce que je dois faire l'animation d'un seul disque et après ecrire une ligne de code pour dire aux autre de faire pareil en incluant ma solution a la recursivité?

    bref, je suis un peu perdu :/

    merci de votre aide

  2. #2
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    février 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : février 2012
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    personne ne peut m'aider ? :/

  3. #3
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Développeur python
    Inscrit en
    juillet 2006
    Messages
    2 850
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur python
    Secteur : Santé

    Informations forums :
    Inscription : juillet 2006
    Messages : 2 850
    Points : 4 765
    Points
    4 765
    Par défaut
    Je ne connais pas maya, mais dans ce que tu dis, il y a quelquechose de logique et si tu connais un peu maya, tu dois trouver.

    donc pour l'instant je me suis contenté de bouger les disques à l'endroit où se trouvait la tour...j'aimerais leur dire directement d'aller sur cette tour.
    Si tu veux aller jusqu'à cette tour, il faut simplement détecter la position de cette tour.

    Une méthode doit s'y trouver, il suffirait de regarder les méthodes existantes avec un simple print dir(tower)

    mon autre problème est que je ne sais pas vraiment comment faire l'animation. est ce que je dois faire l'animation d'un seul disque et après ecrire une ligne de code pour dire aux autre de faire pareil en incluant ma solution a la recursivité?
    J'ai pas tout compris, mais la récursivité en python, c'est pas sa tasse de thé.

    Si tu commences à avoir beaucoup d'objets identiques, je te conseille de créer des classes qui sont comme des plans d'objets.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    class Tour(cmds.polyCylinder):
        def __init__(self, name, radius, height):
            cmds.polyCylinder.__init__(self, name, radius, height)
            self.name, self.radius, self.height = name, radius, height
    #   def move(self, ...):
    #       self.cyl.move(...)
    #   ...
     
    def construire(name, rad, height):
        return Tour(name, rad, height)
     
    mes_tours = [construire("tower"+str(i), 5, 100) for i in range(3)]
    mes_disc = []
    rad = 70
    for i in range(4):
        mes_disc.append(construire("disc"+str(i), rad, 10))
        rad *= 0.5
     
    print ','.join([objet.name for objet in mes_tours]) # Affichage des noms des tours existantes.
     
    #...
    Non testé, mais les classes te permettraient d'être plus organisé

    N'ayant pas de version de données, je considère que c'est python 2.x
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  4. #4
    Candidat au Club
    Homme Profil pro
    Développeur multimédia
    Inscrit en
    mai 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur multimédia
    Secteur : Arts - Culture

    Informations forums :
    Inscription : mai 2009
    Messages : 3
    Points : 4
    Points
    4
    Par défaut Animation
    Salut
    pour ton animation tu peux utiliser les commandes:

    cmds.select( 'nom de ton objet qui se déplace' )//pour selectionner
    cmds.move(...)
    cmds.setKeyframe(time= 1)//pour placer des keyframe dans ta time slice

    tu peux aussi faire un select all avant de placer ta keyframe.

    En espérant que sa t'aidera.

Discussions similaires

  1. Help Python Maya - remplacer valeur par un slider
    Par lortac dans le forum Programmation multimédia/Jeux
    Réponses: 0
    Dernier message: 20/05/2013, 16h25
  2. python wrapper script
    Par _Chronos_ dans le forum Bibliothèques tierces
    Réponses: 0
    Dernier message: 29/06/2012, 16h23
  3. Problème python dans script shell et cron
    Par Tintin87 dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 15/11/2011, 23h29
  4. Traduire des scripts Python en scripts PhP
    Par rambc dans le forum Général Python
    Réponses: 7
    Dernier message: 28/04/2011, 23h35
  5. Réponses: 3
    Dernier message: 05/04/2005, 15h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo