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

Newton Discussion :

[Newton] probleme d'angle de rotation des objet


Sujet :

Newton

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    juillet 2007
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juillet 2007
    Messages : 318
    Points : 291
    Points
    291
    Par défaut [Newton] probleme d'angle de rotation des objet
    Comme indiquer dans le sujet j'ai un probleme pour recupere les angles de rotation des objets afin de les dessiner correctement.

    Afin de récuperer les angles de rotation en x , y, z j'utilise la méthode
    NewtonGetOmega qui me renvoie les angle d'euler: angleX, angleY, angleZ en radian.
    Ensuite je convertie ces angles en degrés et j'utilise avec openGL avant l'affichage:
    glRotatef( angleX, 1.0f,0.0f,0.0f);
    glRotatef( angleY, 0.0f,1.0f,0.0f);
    glRotatef( angleZ, 0.0f,0.0f,1.0f);

    Dans ma petite démo ou une sphere roule sur une autre sphere avant de tomber sur un plan horizontale:
    En faisant comme ca , au début les angles sont correcte ( ma sphere roule correctement) et vers 220° quand elle perd le contacte avec la sphere les angle obtenu avec newton ne corresponde plus ( les angles diminuent!) la sphere fini meme par rouler en sens inverse de la marche sur le plan.

    J'ai aussi des cubes tombant sur le plan et les angles apres l'inacte sont n'importe quoi aussi.

    Merci pour votre aide.

  2. #2
    Membre éclairé

    Homme Profil pro
    Développeur Java
    Inscrit en
    février 2007
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : février 2007
    Messages : 179
    Points : 652
    Points
    652
    Par défaut
    Tu as vérifié si la conversion était correcte ?
    Tu recharge a chaque fois la matrice identité (avec OpenGL) ?
    aprés je vois pas trop ce que ca peut être
    L'expérience est une lanterne que l'on porte sur le dos et qui n'eclaire jamais que le chemin parcouru.

    La nature fait les choses sans se presser, et pourtant tout est accompli.

  3. #3
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : septembre 2005
    Messages : 1 386
    Points : 2 640
    Points
    2 640
    Par défaut
    NewtonGetOmega te retourne la vitesse angulaire du corps. Si tu veux dessiner correctement, il te suffit de recuperer la matrice actuelle du corps (via NewtonBodyGetMatrix), puis multiplier la matrice OpenGL par celle du corps avant de dessiner ton objet (voir mes tutos).

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    juillet 2007
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juillet 2007
    Messages : 318
    Points : 291
    Points
    291
    Par défaut
    En lisant j'ai vu hier soir que NewtonBodyGetOmega retourne une valeur angulaire.
    J'utilise maintenant NewtonGetEulerAngle qui renvoie bien des angles. mais qui ne donne pas un résultat satifaisant avec plus d'une rotation d'angle: avec une rotation suivant z c'est parfait sinon j'ai n'importe quoi. ca doit venir de ça dans mon code openGL:

    glRotatef( angleX, 1.0f,0.0f,0.0f);
    glRotatef( angleY, 0.0f,1.0f,0.0f);
    glRotatef( angleZ, 0.0f,0.0f,1.0f);

    Je ne comprend pas vraiment pourquoi.

    J'ai bien lu tes tutos, mais je n'ai pas envie d'utiliser directement la matrice car il faut que je refasse tout une partie de code existant et en plus ma classe matrice est la transposée de la matrice newton:
    par exemple dans ton tuto tu recuperes la position de l'objet avec les élément 3, 7, 11 de ta matrice chez moi c'est 12, 13, 14 ; c'est pas tres compliqué, mais ça fais bizzard au début quand l'objet ne bouge pas.

  5. #5
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : septembre 2005
    Messages : 1 386
    Points : 2 640
    Points
    2 640
    Par défaut
    NewtonGetEulerAngle renvoit des angles en radians tandis que glRotate prend des angles en degrees.

    J'ai bien lu tes tutos, mais je n'ai pas envie d'utiliser directement la matrice car il faut que je refasse tout une partie de code existant et en plus ma classe matrice est la transposée de la matrice newton:
    par exemple dans ton tuto tu recuperes la position de l'objet avec les élément 3, 7, 11 de ta matrice chez moi c'est 12, 13, 14 ; c'est pas tres compliqué, mais ça fais bizzard au début quand l'objet ne bouge pas.
    Normalement ya pas de soucis. J'ai essaye il y a peu avec la partie de translation dans les elements 12 13 et 14 et ca marchait aussi. Tout depend de comment tu passes tes matrices a Newton.

    Apres, tu disposes de la fonction glMultTransposeMatrix ou quelque chose comme ca.

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    juillet 2007
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juillet 2007
    Messages : 318
    Points : 291
    Points
    291
    Par défaut
    Citation Envoyé par Bakura
    NewtonGetEulerAngle renvoit des angles en radians tandis que glRotate prend des angles en degrees.
    Convertir les angles de radian a degré c'est la premiere chose que j'ai faite. ca ne pose pas de probeme.

    mes matrices sont tout simplement: float matrice[16];

    j'ai fait un essai avec glMultMatrix mais j'obtient des déformations ( étirement en x, y , z de mes objets ) au lien de rotations.

    j'ai procédé de la facon suivante:
    glTranslatef -> pour positionner
    glMultMatrix -> pour les rotations

    j'ai fait aussi un essai de glMultMatrix avec les éléments de rotation et de position dans la matrice et la j'ai n'importe quoi.

  7. #7
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : septembre 2005
    Messages : 1 386
    Points : 2 640
    Points
    2 640
    Par défaut
    Et en remplacant glMultMatrixf par glMultTransposeMatrixf ?

  8. #8
    Membre actif
    Profil pro
    Inscrit en
    juillet 2007
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juillet 2007
    Messages : 318
    Points : 291
    Points
    291
    Par défaut
    Citation Envoyé par Bakura
    Et en remplacant glMultMatrixf par glMultTransposeMatrixf ?
    ca ne change rien puisque avant glMultMatrix j'avais déjà fait une transposition de ma matrice newton.

  9. #9
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : septembre 2005
    Messages : 1 386
    Points : 2 640
    Points
    2 640
    Par défaut
    Je n'en ait aucune idee alors :/. Desole. Essaye sur le forum de Newton.

  10. #10
    Membre actif
    Profil pro
    Inscrit en
    juillet 2007
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juillet 2007
    Messages : 318
    Points : 291
    Points
    291
    Par défaut
    Ce week end j'ai reprit tout mon code et j'ai résolue le probleme.
    Je n'utilise plus glTranslate et glRotate car sa pose probleme
    j'utilise a la place glMultMatrix.
    Le probleme de transposé n'est en fait pas genante puisque la matrix de newton est directement utilisable par openGL. Il y a juste a pas se tromper quant je prend des valeur particuliere comme celle pour les translations.
    Par deçu tout cela j'avais des petites errreurs de codes par ci par la.

    Merci encore por ton aide, Bakura et désolé pour le dérangement.
    Je viens de finir d'implémenter tes 5 tres bons tuto dans mon code.
    A par le colision tree qui pose quelque souci le reste marche impéccable.

  11. #11
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : septembre 2005
    Messages : 1 386
    Points : 2 640
    Points
    2 640
    Par défaut
    Content que ça soit résolu .

    Et qu'est-ce qui plante avec les collision tree ? Est-ce avec l'optimisation d'activée ?

  12. #12
    Membre actif
    Profil pro
    Inscrit en
    juillet 2007
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juillet 2007
    Messages : 318
    Points : 291
    Points
    291
    Par défaut
    j'ai l'impression qu'il y a des trous dans mon collision tree, les objets ont tendence à s'y coincer ou à passer au travers apres avoir rebondit par exemple.

    peut être faut il des conditions particulières sur les faces: par trop petites par rapport aux objets ou bien lors de la création entré dans un certain ordre...
    Je ne pense pas que se sois non plus l'idéal pour une heighmap.

    Je vais regarder ca avant de poster un nouveau problème

  13. #13
    Rédacteur
    Avatar de Bakura
    Homme Profil pro
    Étudiant
    Inscrit en
    septembre 2005
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : septembre 2005
    Messages : 1 386
    Points : 2 640
    Points
    2 640
    Par défaut
    Je pense que c'est parceque tu as le mode optimisation d'activé (le dernier paramètre lorsque tu finalises la création du collision tree). Essaye de désactiver l'optimisation (passer le dernier paramètre de 1 à 0 si ma mémoire est bonne) en attendant la prochaine version de Newton.

    At this point I suggest using it un-optimized until new version is released.
    optimized trees in some cases are generating uncoplanar faces.
    The had bee solve in new version.

  14. #14
    Membre actif
    Profil pro
    Inscrit en
    juillet 2007
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juillet 2007
    Messages : 318
    Points : 291
    Points
    291
    Par défaut
    J'ai résolue mon problème avec les arbres de collision.
    Celui ci était du a une mauvaise orientation des triangles. L'orientation permettant a l'arbre de déterminer l'interieur et l'exterieur de l'objet.

    Mon arbre était créé corectement mais pas mon terrain

    Maintenant ça marche impéccable.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. probleme avec les pointeurs sur des objet heterogene
    Par Fifou625 dans le forum Débuter
    Réponses: 4
    Dernier message: 09/12/2011, 21h27
  2. probleme pour générer des objets aleatoirement
    Par tonytrua dans le forum Débuter
    Réponses: 10
    Dernier message: 09/12/2011, 15h09
  3. Comment faire une rotation 3D des objets
    Par dimainfo dans le forum ActionScript 3
    Réponses: 1
    Dernier message: 19/05/2009, 19h56
  4. probleme dans la creation des objet avec condition
    Par yassin123441 dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 28/04/2009, 11h03
  5. Rotation, zoom, et mise à jour des objets
    Par thefrog dans le forum OpenGL
    Réponses: 2
    Dernier message: 19/09/2007, 22h49

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