Salut à tous,
J'utilise gluProject pour détecter des collisions entre la souris et le monde 3D. En gros, lorsque le résultat de projection est proche de la souris, je dis qu'il y a collision.
Bizarrement, le résultat est assez aléatoire. 80% du temps ça marche pas mal, et le reste du temps, on dirait que les coordonnées résultant de gluProject sont complètement fausses. J'ai vu d'autres posts sur le web où des gens disaient aussi avoir constaté des décalages bizarres.
1) J'ai essayé de retélécharger la librairie glut à jour (fichiers glut.lib glut32.lib et glut.h) mais bizarrement, quand j'inclus glut.h et pas glu.h, j'ai des erreurs de linkage ? Pourtant j'ai bien comme paramètres "-lglut32 -lglu32 -lopengl32 -lwinmm -lgdi32"
2) Beaucoup de posts parlent de l'alternative du picking avec des noms pour les objets, mais ça me paraît beaucoup trop compliqué, donc je préfèrerais en rester à gluProject, surtout si ça peut marcher !
Est-ce que quelqu'un a déja été confronté à ces problèmes ? Merci d'avance
PS: voici le bout de code qui fait la projection
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 GLdouble X,Y,Z; GLint viewport[4]; GLdouble modelview[16]; GLdouble projection[16]; glGetDoublev(GL_MODELVIEW_MATRIX,modelview); glGetDoublev( GL_PROJECTION_MATRIX, projection ); glGetIntegerv( GL_VIEWPORT, viewport ); int r=gluProject(world.x,world.y,world.z,modelview,projection,viewport, &X, &Y, &Z); if(r==GL_TRUE)return Point3D(X,Y,Z); else error("Projection failed");
Partager