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 :

glRotate et perte d'information


Sujet :

OpenGL

  1. #1
    Membre à l'essai
    Inscrit en
    Août 2004
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 15
    Points : 15
    Points
    15
    Par défaut glRotate et perte d'information
    Salut, je suis en train de faire un jeu de voiture ayant une dynamique et gestion des collisions.

    Quand je veux faire tourner ma voiture, j'utilise un glRotate. Ok ! pas de probleme le dessin de la voiture a bien tourne. Maintenant, j'aimerai connaitre toutes les nouvelles positions des vertex de ma voiture. Et la probleme car deux possibiltes s'offrent a moi :

    1°) soit je calcule a la main le resultat des rotations, ce qui parait idiot car je fais a chaque fois deux calculs de rotation (le glRotate et ma rotation : d'ou chute du CPU).
    2°) soit je bricole un moyen (et je ne le connais pas !!) qui permet pendant que j'appelle un glRotate, de recuperer la nouvelle position du vertex (peut etre sur le sommet de la pile de matrice ?!). Et la je me demande comment les ingenieurs qui ont fait GTA 3 ont pu optimiser la chose.

    Je trouve ca bizare qu'OpenGL ne retourne jamais le resultat de ces transformations !

    Merci,

  2. #2
    Membre à l'essai
    Inscrit en
    Avril 2004
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 8
    Points : 10
    Points
    10
    Par défaut
    yop,

    Saches ke tu peux recuperer le resultat de toutes les transformations et les rotations que tu appliques a la matrice modelview active (haut de la pile) avec

    glGetFloatv(GL_MODELVIEW_MATRIX, ...);

    Pour une gestion plus simple, je te conseil d'associer une matrice a chaque objet de ta scene (vehicule, terrain, cameras, etc..). Cette matrice representera la position ainsi ke les differentes orientations de chaque objet. Super pratique !

    Ensuite pour placer chaque objet tu n'auras k'a multiplier la matrice associée a ton objet avec la matrice representant ton "repere monde"(une camera en generale)

    Je ne sais po comment tu geres les collisions, mais je suppose ke tu calculs s'il y a intersection entre tout les vertex de ta voiture et tout les vertex de ton environnement. Si tu fais ca !! ya bcp mieux

    Je te conseil donc de regarder du coté des bounding box et des octrees.
    tu elimineras ainsi beaucoup de test d'intersections.

    Mon avis est k'il est inutile de calculer les nouvelles positions de chake vertex de ta voiture

    si j'ai po ete tres clair, desole, j'essairai de l'etre la prochaine fois

    @+

  3. #3
    Membre à l'essai
    Inscrit en
    Août 2004
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 15
    Points : 15
    Points
    15
    Par défaut
    Sur le forum de gamedev http://www.gamedev.net/community/forums/topic.asp?topic_id=261148 j'ai pose la meme question, il m'ont repondu ceci :

    Instead of transforming the whole car mesh into world coordinates and do the collision testing with the (lets call them) test points/tris there, you might also transform the test points/tris into object coordinates (using the inverse modelview matrix) and doing the collision test in object space. This pays off if the number of test points/tris is less than the number of car mesh points.

    For two different objects, say O1 and O2, you have 2 modelview matrices, say M1 and M2. Then for every point P(x,y,z) of O1 you can compute
    (x,y,z,1)*M1*M2^(-1)

    Mais je ne comprend pas comment il peuvent recuperer deux matrices differente, meme en utilsant glGetFloatv(GL_MODELVIEW_MATRIX, ...);
    De plus peuvent changer si j'utilise des translations ou des rotations ?

    De plus j'ai peur qu'ils se trompent. Ils disent (x,y,z,1)*M1*M2^(-1) pourrait marcher mais il me semble

    (x,y,z,1) * ( (M1*M2)^(-1) ) ou meme (x,y,z,1) * (M1^(-1) * M2^(-1)) soit correct ou je me trompe grossierement qq a une idee ou de la doc sur ceci :

    Sinon, je suis deja au courant des bounding box, des octrees et des arbres BSP, c'est cool (www.bluesnews.com/abrash/ ils n'ont pas tout mis les articles !)! je vais plustot opter pour un octree

    @+

Discussions similaires

  1. Zéro perte d'information
    Par bbo1991 dans le forum Schéma
    Réponses: 3
    Dernier message: 17/11/2006, 16h27
  2. Perte d'information dans un Recordset
    Par heddicmi dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 18/10/2006, 18h17
  3. [MySQL] Perte d'information modifiée
    Par aokiseiichiro dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 23/12/2005, 14h42
  4. Perte d'informations d'un objet initialisé dans un thread
    Par Progs dans le forum Threads & Processus
    Réponses: 4
    Dernier message: 21/11/2005, 20h17
  5. [MySQL] Perte d'information lors d'une requête de visualisation
    Par niccco dans le forum PHP & Base de données
    Réponses: 17
    Dernier message: 21/10/2005, 13h46

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