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 :

animation en python avec Blender


Sujet :

3D Python

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 45
    Points : 27
    Points
    27
    Par défaut animation en python avec Blender
    Bonjour,

    Je suis débutant pour apprendre python et cherche a réaliser l'animation de la translation d'un cube (de 6 unités vers la droite). Le script marche mais Blender ne m'affiche que la derniere frame. Je voudrais que mon script crée l'animation de maniere a ce qu'il n'y ait plus qu'a exporter en avi et qu on puisse la visualiser dans Blender...

    Si quelqu'un s'y connais en python....
    merci d'avance
    Voici le 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
    15
    import Blender
    from Blender import NMesh
     
    ob = cube('cube') #crée un cube de type Blender Object et de nom 'cube'
    lipo = Blender.Ipo.New('Object','ipo')
    ob.setIpo(lipo)
    posX = lipo.addCurve('LocX')
    start_frame = Blender.Get('curframe')
    end_frame = start_frame + 25
    posX.addBezier((start_frame, ob.getLocation()[0]+6))
    posX.addBezier((end_frame, ob.getLocation()[0]+6))
    posX.setInterpolation('Linear')
    posX.setExtrapolation('Cyclic')
    posX.Recalc()
    Blender.Redraw()

  2. #2
    Membre éclairé
    Avatar de parp1
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    829
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Mai 2005
    Messages : 829
    Points : 872
    Points
    872
    Par défaut
    Quest ce que tu veux faire exactement?

    Extraire un fichier AVI de ton animation?

    Moi il y a un truc qui me chiffone, tu me diras surement t'y connais rien a blender "Mise a part que c'est hollandais et developpez pour les animations de la defunte console la NEOGEO".

    Ton blender.redraw, il ne faudrait pas que tu le refasses pour actualiser ta renderwindow?


    Par exemple mettre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    while i <25:
     
    end_frame = start_frame +i
    tout le traitement de bezier
    Blender.redraw
    i++
    Je pense que ton code fonctionne mais c'est le refresh de ta window qui ne vas pas.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 45
    Points : 27
    Points
    27
    Par défaut
    Effectivement je ne connais que peu Blender, idem pour Python d'ailleurs (wow ca rime XD).
    Oui je pense qu il faut rafraichir la fenetre mais je n'y arrive pas
    J'ai essayé de faire en boucle comme tu m'as dit mais je l'ai surement pas fait correctement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    ob = cube('cube')
    lipo = Blender.Ipo.New('Object','ipo')
    ob.setIpo(lipo)
    posX = lipo.addCurve('LocX')
    start_frame = Blender.Get('curframe')
    for i in range(25):
       end_frame = start_frame + i
       posX.addBezier((start_frame, ob.getLocation()[0]+6))
       posX.addBezier((end_frame, ob.getLocation()[0]+6))
       posX.setInterpolation('Linear')
       posX.setExtrapolation('Cyclic')
       posX.Recalc()
       Blender.Redraw()

  4. #4
    Membre éclairé
    Avatar de parp1
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    829
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Mai 2005
    Messages : 829
    Points : 872
    Points
    872
    Par défaut
    Tout d'abord édite ton poste surligne ton code et clic sur le bouton #, ca te permet de mettre ton code comme cela


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    print "tout mon code entre balises  #"

    Deuxieme chose quant tu programme je te conseil d'indenter ton code surtout pour les boucles.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    for i in range(480)
    while i <200
    "print I superieur a 200"
    for j in range(680)
    print i
    print j
    C'est un peu fouilli tu ne trouves pas?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    for i in range(480)
        while i <200
               "print I superieur a 200"
                for j in range(680)
                        print i
                        print j
     
    print 'Je suis sortie de ma boucle'
    C'est pas un peu plus claire comme ca? Au moins tu sais ou ca commence et ou ca se termine.

    Autre info mais je voies que tu as commencé n'ésite pas a commenter ton programme. Ne serai ce que pour l'aide que peux t'apporter.

    Voila

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 45
    Points : 27
    Points
    27
    Par défaut
    Oui dsl pour la balise code je ne savais pas comment on faisait, je comprends meme pas comment j'ai fait dans mon premier post XD.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    ob = cube('cube')
    lipo = Blender.Ipo.New('Object','ipo')
    ob.setIpo(lipo)
    posX = lipo.addCurve('LocX')
    start_frame = Blender.Get('curframe')
    for i in range(25):
       end_frame = start_frame + i
       posX.addBezier((start_frame, ob.getLocation()[0]+6))
       posX.addBezier((end_frame, ob.getLocation()[0]+6))
       posX.setInterpolation('Linear')
       posX.setExtrapolation('Cyclic')
       posX.Recalc()
       Blender.Redraw()
    J'ai oublié de préciser que le resultat etait que Blender met le cube dans la premiere frame et rien dans les autres :s

  6. #6
    Membre éclairé
    Avatar de parp1
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    829
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Mai 2005
    Messages : 829
    Points : 872
    Points
    872
    Par défaut
    Citation Envoyé par ryu sensei
    Oui dsl pour la balise code je ne savais pas comment on faisait, je comprends meme pas comment j'ai fait dans mon premier post XD.
    Regarde en marge inférieur c'est marqué derniere modif par _GUIGUI.


    Donc ton programme tu constuis un cube dans la premiere frame mais rien dans les autres MEME PAS LA DERNIERE????

    Si c'est le cas ca change tout! C'est peut etre pas un faute de refresh.....

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 45
    Points : 27
    Points
    27
    Par défaut
    Voila c'est bien ca, je pense qiul faudrait changer la frame courante, qqch comme ca.... (sans en etre sur grace a ma merveilleuse connaissance du matos) mais comment.....?

  8. #8
    Membre éclairé
    Avatar de parp1
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    829
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Mai 2005
    Messages : 829
    Points : 872
    Points
    872
    Par défaut
    J'image que tu as eu ta source ici

    Dans ce cas essaye d'aller sur BlenderClan ou relie le tutoriel qu'il y a la page du dessus.

    J'ai lu cela et je ne crois pas le voire dans ton code est ce qu'il est au dessus?

    Nous commencons par récupérer une référence vers l'objet que nous souhaitons animer.

    unobjet = Blender.Object.New('Empty' , 'Mon Empty')
    Blender.Scene.GetCurrent().link(unobjet)

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 45
    Points : 27
    Points
    27
    Par défaut
    [code]
    unobjet = Blender.Object.New('Empty' , 'Mon Empty')

    Ceci crée un objet vide, moi j'ai créé un cube du meme type.

    Blender.Scene.GetCurrent().link(unobjet)
    Ceci rettache l'objet a la scene et ma fonction cube rattache deja le cube a la scene, si je met cette fonction un message d'ereur me dit que l'objet est deja dans la scene

  10. #10
    Membre éclairé
    Avatar de parp1
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    829
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Mai 2005
    Messages : 829
    Points : 872
    Points
    872
    Par défaut
    OK OK Si tu as été sur blenderclan? tape ca dans google, Je pense que , vu les bete que ce sont sur blender,(programmation de Tombraider) etc etc il en save long sur le sujet a propose du python.

    ;-)

    N'oublies pas ...


    Tu en as ouvert une mais pas refermée.

    Le plus simple tu tapes ton code dans ton message, tu surligne ce code et tu appuis sur le bouton # Et c'est bon.

    Pour apprendre facilement Python suis ces tutoriels et cours Python : http://python.developpez.com/cours/
    Le cours Python : Apprendre à programmer avec Python 3 par Gérard Swinnen http://python.developpez.com/cours/apprendre-python3/

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 45
    Points : 27
    Points
    27
    Par défaut
    Je vais aller voir,


  12. #12
    Membre éclairé
    Avatar de parp1
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    829
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Mai 2005
    Messages : 829
    Points : 872
    Points
    872
    Par défaut
    réédit le message précedent quand meme. :;-)

Discussions similaires

  1. Exécution d'un script python dans Blender avec un fichier .bat
    Par ero91 dans le forum Général Python
    Réponses: 4
    Dernier message: 24/01/2013, 12h53
  2. Ecrire une instruction en python avec support blender
    Par ainrahma dans le forum Programmation multimédia/Jeux
    Réponses: 2
    Dernier message: 15/04/2011, 14h28
  3. Pb Python avec 'getservbyport()'
    Par tse_tilky_moje_imja dans le forum Réseau/Web
    Réponses: 2
    Dernier message: 26/02/2006, 16h11
  4. exporter en .x avec blender
    Par ben1002 dans le forum DirectX
    Réponses: 3
    Dernier message: 10/02/2006, 03h08
  5. Installer Python avec Apache
    Par vincent_nk dans le forum Déploiement/Installation
    Réponses: 8
    Dernier message: 28/01/2006, 18h21

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