Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1920 connectés 

  FORUM HardWare.fr
  Graphisme
  Infographie 3D

  [OpenGL] Orienter un objet

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[OpenGL] Orienter un objet

n°481525
Longfield
Posté le 16-06-2004 à 18:33:19  profilanswer
 

Hello !!!
 
J'ai un problème en OpenGL. Voilà, c'est simple, j'essaie d'orienter un objet avec la même orientation que la surface (qui est un mesh) sur lequel il repose.
 
J'ai calculé toutes les normales aux faces de mon mesh et j'y accède juste ça pas de problème (donc pas besoin de me me dire : controle tes normales, elles sont certifiées) ... ce que j'ai du mal à faire, enfin où je pense qu'il y a l'erreur c'est pour calculer les angles des deux rotations qui correspondent au 4ème et 5ème degrés de liberté d'un solide indéformable. Donc à partir de la normale je calcule les deux angles en question avec le thérorème du cosinus ...
 
Alors voilà, des fois ça marche, et des fois pas, et tout ça ça pue les irrégularitées des fonctions du genre acos !!! J'ai rajouté à la louche des +- M_PI/2, ça marche un peu mieux, mais pas encore top ...
 
Alors voilà, je pense que si des gens ont déjà fait de l'OpenGL avant, ils vont me sortir ça facilement et moi j'arrive plus à trouver des erreurs dans ce code que voici (l'endroit où je calcule les angles fatidiques) :
 

Code :
  1. yrob = get_ground_high(xrob, zrob, ground_points, ground_flat_normals, NB_WIDTH);
  2. get_smoothed_ground_normal(xrob, zrob, ground_flat_normals, last_normals, normalerob, NB_WIDTH, SMOOTH_SIZE);
  3. directionrob[0] = cos(anglerob_y*M_PI /180);
  4. directionrob[1] = 0.;
  5. directionrob[2] = sin(anglerob_y*M_PI /180);
  6. directionrobOrtho[0] = - directionrob[2];
  7. directionrobOrtho[1] = 0.;
  8. directionrobOrtho[2] = directionrob[0];
  9. anglerob1 = acos(dotProduct(directionrobOrtho, normalerob) / (norme(directionrobOrtho) * norme(normalerob))) -(M_PI/2);
  10. // il faut faire un test sur le sinus pour savoir si le signe de l'angle est juste  
  11. /* produitVectoriel(init, directionrobOrtho, normalerob, directionTemp);
  12. if (directionTemp[1] < 0.) {  
  13. // on a le sinus négatif : vecteur négatif en y  
  14. anglerob1 = -anglerob1; } */
  15. anglerob1 = anglerob1 * 180 / M_PI;
  16. anglerob2 = acos(dotProduct(directionrob, normalerob) / (norme(directionrob) * norme(normalerob))) -(M_PI/2);
  17. /* produitVectoriel(init, directionrob, normalerob, directionTemp); if (directionTemp[1] < 0.) {  
  18. // on a le sinus négatif : vecteur négatif en y  
  19. anglerob2 = -anglerob2; } */
  20. anglerob2 = anglerob2 * -180 / M_PI;

mood
Publicité
Posté le 16-06-2004 à 18:33:19  profilanswer
 

n°481535
Suri
Darksurious
Posté le 16-06-2004 à 18:39:32  profilanswer
 

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Graphisme
  Infographie 3D

  [OpenGL] Orienter un objet

 

Sujets relatifs
[The Gimp ou Photoshop] Compter le nombre d'objet d'une séléctionMAYA - Exportaion d'un objet avec sa texture
[WIP] LPM pour rendu temps réel OpenGLCréation d'un objet 3D et application d'une image dessus
critique sur objet designcréer un bouton de création d'objet?
Objet MiroirLe fonctionnement de Directx et OpenGl ?
Rendre plus sombre ou foncer un objet ? 
Plus de sujets relatifs à : [OpenGL] Orienter un objet


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR