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

OpenGL Discussion :

animer bras manipulateur à 6 articulation


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2005
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 12
    Par défaut animer bras manipulateur à 6 articulation
    bjrs tt le monde,

    voilà j réalisé une scène d'un bras manipulateur à 6 degrés de libertés en Opengl sous visual c++ en utilisant les MFC.
    mais pour animer ce bras j pas pu. j utiliser des matrice de passage de chaque articulation par rapport à sa précedente (le modele géometrique direct) mais ça ne marche tjrs pas.

    j'aimerais utiliser les les piles "glPushMatrix(), glPopMatrix()" d'opengl
    mais quand j'englobe le tout " bras manipulateur"dans ces deux fonctions et je met une rotation ou translation je perds tt, j rien lors de l'affichage. par contre pour une seul articulation ces deux fonctions marche. j une animation

    ya t'il qlq 1 pour m'aider ou m'orienté comment faire???

    merci
    rym

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Forum DirectX pour de l'OpenGL ?

    Sujet déplacé...

  3. #3
    Membre Expert
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 580
    Par défaut
    glPushMatrix() et glPopMatrix() sont des fonction de sauvegarde/récupération de matrice avec un système de pile

    avant de faire une transformation, tu fais un glPushMatrix() ce qui aura pour effet de mémoriser la matrice dans une pile

    ce système permet effectivement de faire des mouvement hiérarchisés
    il faut toujours avoir autant d'appels à glPopMatrix qu'à glPushMatrix car chaque fois qu'on appelle glPush une matrice est sauvardée (par copie) et lorsqu'on appelle glPop la matrice en haut de la pile est récupérée (par déplacement)

    exemples de problèmes :
    - si tu fais 3 push et 2 pop, au bout d'un moment ta pile va finir par déborder et pouf plantage
    si tu fais 2 push et 3 pop tu plantes direct (en fait une erreur se produit je crois) car le 3ème pop essaye de récupérer une matrice dans la pile qui est vide

    j'espère que ces indications t'orienteront un peu
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  4. #4
    Membre averti
    Inscrit en
    Mai 2005
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 12
    Par défaut merci
    merci pour vos indications, je les ai suivis,
    mon problème maintenant c que, voilà j une chaine de cylindre, chacune est au dessus de la précedente. j met les piles de OpenGL au debut et à la fin du dessin, puis j met un glRotate avant glPushMatrix(), je voulais que le premier cylindre fasse une rotation, mais que les autre cylindres suivent le mouvement , mais je resultat que j'obtient ce que tout l'ensemble du dessin qui fait la rotation. c comme si j pris l'objet au complet et je l'ai deplacé, alors que le but que je veux atteindre et d'avoir une rotation d'un seul membre du dessin mais que les autres membres suivent le mouvement .

    merci de m'aider

  5. #5
    Membre Expert
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 580
    Par défaut
    J'espère ne pas dire de bétises mais voici la marche à suivre :

    tu dois penser au bras à partir de son extrémité (le dernier élément de la chaine, la main ou autre)

    pour chaque élément tu dois agir ainsi (de la main à l'épaule donc) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    -glRotate ton élément pour l'orienter comme tu le souhaite
    -glTranslate ton élément à la position qu'il doit avoir par rapport à son élément père
    -affiches ton élément
    je sais, il n'y a pa de glPush... ni de glPop..., en fait il faut les utiliser si tu as plusieurs éléments qui utilisent la même base (par exemple, des doigts)
    auquel cas tu englobe ton bloc dans des glPush... {bloc} glPop

    par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    glPush
    bloc doigt 1
    glPop
    glPush
    bloc doigt 2
    glPop
    glPush
    bloc doigt 3
    glPop
    bloc avant bras
    bloc bras
    dis moi si c'est bon comme cela
    tu peux aussi voir dans le redbook opengl, à la fin du chapitre 3, quelques exemples dont un bras articulé (en cherchant un peu les sources doivent se trouver) :
    http://rush3d.com/reference/opengl-redbook-1.1/chapter03.html

    bon aller chui sympa je t'aide un peu :
    http://www.opengl.org/resources/code/basics/redbook/
    (cherches robot.c)
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  6. #6
    Membre averti
    Inscrit en
    Mai 2005
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 12
    Par défaut merci
    merci pour votre aide

    je vais suivre vos instructions et je vous informe du résultat.

    merci
    rym

  7. #7
    Rédacteur
    Avatar de bafman
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    2 574
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Par défaut
    moi ca me parrait suspect de comencer par les doigts pour finir par l'epaule, ce serait pas plutot l'inverse ? (a verifier car je sais qu'il y a des "truc" dans l'ordre d'utilisation des matrice...)
    * Il est infiniment plus simple de faire rapidement un code qui marche que de faire un code rapide qui marche
    * pour faciliter les recherches, n'oubliez pas de voter pour les réponses pertinentes
    Mes articles

Discussions similaires

  1. simulation d'un bras manipulateur
    Par mar1985 dans le forum Robotique
    Réponses: 0
    Dernier message: 24/04/2013, 18h28
  2. Réponses: 0
    Dernier message: 01/06/2012, 17h54
  3. Manipulation bras de robot : problème avec l'animation
    Par guns_and_roses dans le forum Interfaces Graphiques
    Réponses: 17
    Dernier message: 04/12/2009, 10h56
  4. [ Bras Articulé ]
    Par gladek dans le forum OpenGL
    Réponses: 1
    Dernier message: 03/12/2009, 22h55
  5. conception d'un bras animé et génération de code C++
    Par safwa dans le forum Moteurs 3D
    Réponses: 2
    Dernier message: 25/04/2008, 13h05

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