IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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 :

[Panda3D] problème newbie avec les classes et panda 3d


Sujet :

3D Python

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 11
    Points : 2
    Points
    2
    Par défaut [Panda3D] problème newbie avec les classes et panda 3d
    Bonjour,
    Je suis en train de bosser sur python et je viens de rencontrer un cas que j'ai du mal à comprendre dans panda 3D:

    Code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #Load the panda actor, and loop its animation
    pandaActor = Actor.Actor("models/panda-model",{"walk":"models/panda-walk4"})
    pandaActor.setScale(0.005,0.005,0.005)
    pandaActor.reparentTo(render)
    pandaActor.loop("walk" )
     
    #Create the four lerp intervals needed to walk back and forth
    pandaPosInterval1= pandaActor.posInterval(13,Point3(0,-10,0), startPos=Point3(0,10,0))
    pandaPosInterval2= pandaActor.posInterval(13,Point3(0,10,0), startPos=Point3(0,-10,0))
    pandaHprInterval1= pandaActor.hprInterval(3,Point3(180,0,0), startHpr=Point3(0,0,0))
    pandaHprInterval2= pandaActor.hprInterval(3,Point3(0,0,0), startHpr=Point3(180,0,0))
    Actor est une classe, donc pandaActor est une instance de cette classe (ligne 2)
    Ce que je n'arrive pas à comprendre c'est le :
    pandaPosInterval1= pandaActor.posInterval(........)
    posInterval est aussi une classe, je ne comprends donc pas le : pandaActor.posInterval(........)
    Dans quel cas a-t-on instanceclasse2=instanceclasse1.classe2() (si j'ai bien compris le code panda 3d)
    Pratiquement, cela ne me pose aucun problème, j'ai bien compris le truc, mais au niveau théorique (pyhton pur), je ne vois pas à quoi cela correspond.
    Merci pour votre aide

  2. #2
    Membre expérimenté Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Points : 1 728
    Points
    1 728
    Par défaut
    Sans regarder le code, je pense que posInterval est une méthode qui renvoie un objet.
    Je te donne un exemple:
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    class Position(object):
     
        def __init__(self, x=0, y=0):
            self.x = x
            self.y = y
     
        def __str__(self):
            return "position: x=%i, y=%i" % (self.x, self.y)
     
    class Acteur(object):
     
        def __init__(self):
            self.positions = []
     
        # la méthode qui renvoie un objet
        def set_position(self, x, y, time): 
            pos = Position(x, y)
            self.positions.append((time, pos))
            return pos
     
        def get_positions(self):
            return self.positions
     
    acteur = Acteur()
    pos1 = acteur.set_position(x=1, y=1, time=1)
    pos2 = acteur.set_position(5, 2, 2)
     
     
    print pos1
    print pos2
    print
     
    for time, position in acteur.get_positions():
        print "temps: %i  => %s" % (time, position)
     
    print
    pos1.x = 12
    pos2.y = 10
    print
     
    for time, position in acteur.get_positions():
        print "temps: %i  => %s" % (time, position)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    position: x=1, y=1
    position: x=5, y=2
     
    temps: 1  => position: x=1, y=1
    temps: 2  => position: x=5, y=2
     
    temps: 1  => position: x=12, y=1
    temps: 2  => position: x=5, y=10
    "Etre conscient de la difficulté permet de l'éviter.."
    Lao-Tseu.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    Merci pour ta réponse,
    J'ai pensé à ce genre de chose aussi, mais dans la doc (réference) de panda 3d, posInterval est déclaré en tant que classe !!? Et, il n y a aucune trace d'une méthode posInterval (peut-être que dans panda 3d, les classes ne sont pas des classes mais des méthodes ??)
    Ce qui me rassure un peu, c'est que visiblement cela n'est pas un truc commun et je n'ai rien raté (sur ce sujet !) en lisant mes bouquins !!!

Discussions similaires

  1. problème avec les classes abstraite avec C#
    Par takfa2008 dans le forum C#
    Réponses: 1
    Dernier message: 29/06/2009, 10h25
  2. Problème avec les classes et les méthodes abstract
    Par BOLARD dans le forum Langage
    Réponses: 5
    Dernier message: 22/09/2007, 20h27
  3. Problème avec les classes HttpWebRequest et HttpWebResponse sous C#
    Par zouzoulikou dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 14/08/2007, 01h46
  4. Problème avec les classes
    Par 30barrett40 dans le forum C++
    Réponses: 6
    Dernier message: 28/03/2007, 14h04
  5. [POO] PHP5 : Problème avec les classes
    Par fleur_de_rose dans le forum Langage
    Réponses: 9
    Dernier message: 06/05/2006, 19h09

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