begin process at 2012 05 30 15:50:20
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Linux

 > 

OpenGL

 > 

Retrouvé les coordonnees 3d depuis la 2D


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Retrouvé les coordonnees 3d depuis la 2D

samedi 7 avril 2007 à 17:38:28 | Retrouvé les coordonnees 3d depuis la 2D

Seboo

Bonjour,
J ai un probleme pour retrouver les coordonnees en 3d de la souris.
J'utilise sous glut un lookat en -5,5,5 qui regarde en direction 0,0,0 soit selon le vecteur (-5,5,5).
Ce que l'on voit à l'ecran comme forme est selon le plan centré en -5,5,5  selon le vecteur normal (-5,5,5) (donc d'equation -5x+5y+5z -75=0). Donc ma premiere question est: comment connaitre la position de la souris  en M(X,Y,Z) sur ce plan sachant quel est en en A(x,y) sur l'ecran.

A partir de la, je peut obtenir une equation de droite.
Et j'aurai un autre probleme qui s'en suit: Comment savoir si une droite coupe un plan delimité par 4points (x,y,z)?

Merci pour votre précieuse aide.
samedi 7 avril 2007 à 20:50:30 | Re : Retrouvé les coordonnees 3d depuis la 2D

luhtor

Réponse acceptée !
On fait ca avec la fonction "gluUnProject". Look sur google pour les détails, ou sur nehe.
samedi 7 avril 2007 à 23:51:31 | Re : Retrouvé les coordonnees 3d depuis la 2D

Seboo

Sinon avec le piking ... mais j'ai eu du mal à comprendre leur emploi ... Enfaite j'aurai bien voulu creer mes propres fonctions car je modifie les valeurs de mes coordonnees de coordonnee point que j ai stocker dans des variables... donc sa rend compliqué... enfin merci au moin je suis orienté vers une idee certaine.
dimanche 8 avril 2007 à 00:17:16 | Re : Retrouvé les coordonnees 3d depuis la 2D

luhtor

Réponse acceptée !
gluUnProject a juste besoin de la donnée de profondeur qu'on récupère avec ReadPixel, ca permet donc d'obtenir un point très précis. Je n'utilise que ca personnellement. Le picking te donnera rien en ce qui concerne la position exacte pointée par la souris.
dimanche 8 avril 2007 à 00:25:51 | Re : Retrouvé les coordonnees 3d depuis la 2D

Seboo

ok merci je vais tester ta methode sa à l'aire d'etre ce que je voulait m'amusé à programmer lol
ThX
dimanche 8 avril 2007 à 01:36:06 | Re : Retrouvé les coordonnees 3d depuis la 2D

Seboo

Finalement je vais utiliser le picking, car il me permet de savoir quelle face du cube j ai selectionné :"Comment savoir si une droite coupe un plan delimité par 4points (x,y,z)?"
Cependant, mon objet selectionné est definit par un glPushName(1 à 7) et un glLoadName(1 à 9) et eventuellement un autre glPushName.
Ma question enfaite comment extraire le nom de l'objet, le nom de l'ensemble au quelle il appartient et eventuellement le nom de l'ensemble de l'enssemble auquelle il appartient car si j ai bien compris on peut imbriquer 32 glPushName.
(mon probleme vient au niveau du processe Hit que je ne comprends pas et dont le printf n'a pas d'effet sur ma fenetre glut.)

merci pour votre aide.

dimanche 8 avril 2007 à 13:00:01 | Re : Retrouvé les coordonnees 3d depuis la 2D

Seboo

Bon bas j ai finalement crée un glLoadName composé de " (la valeur du glPushName*10)+(valeur du glLoadName initiale) ". Sa marche mais je ne trouve pas sa tres propre ....Quelqu'un saurait comment faire pour extraire d'un objet cliqué leglPushName correspondant (et voir tout les autre si j'en ai imbriqué plusieur) ??

Si je fait reponse acceptée cela fermera la conversation ?

Merci
dimanche 8 avril 2007 à 18:23:59 | Re : Retrouvé les coordonnees 3d depuis la 2D

luhtor

Non ca fermera pas la conversation.

Pour le picking, faut récupérer toute la pile de "hit". Ca te donne tous les objets sous le curseur.
Pour savoir a quel ensemble appartient ton object, c'est a toi d'utiliser des indices dans tes glLoadName et glPushName qui te permettent de remonter.
dimanche 8 avril 2007 à 18:59:37 | Re : Retrouvé les coordonnees 3d depuis la 2D

Seboo

Justement je fait passer le buffer et le HITS :

void processHits(GLint hits, GLuint buffer[]){
   unsigned int i, j;
   GLuint names, *ptr, minZ,*ptrNames, numberOfNames;
   int numFaceCarre[2],tmpFace,tmpCarre;

   ptr = (GLuint *) buffer;
   minZ = 0xffffffff;
   for (i = 0; i < hits; i++) {
      names = *ptr;
      ptr++;
      if (*ptr < minZ) {
          numberOfNames = names;
          minZ = *ptr;
          ptrNames = ptr+2;
      }
      ptr += names+2;
            }
}
Enfaite grace à : ptrNames[0] j'arrive à extraire le glLoadName(); correspondant mais minZ et numberOfNames ne me donnent rien du tout.
Enfaite j'arrive pas à comprendre comment naviguer dans la pile.
Pourtant si dans mon affichage des objets je place glLoadName( nom_glPushName*10 + nom_glLoadName); au lieu de glLoadName( nom_glLoadName);  j arrive grace à ptrNames[0] à extraire nom_glPushName et  nom_glLoadName. et tout marche trés bien sans problème.


dimanche 8 avril 2007 à 19:15:50 | Re : Retrouvé les coordonnees 3d depuis la 2D

luhtor

Bas je peux pas trop t'aider, ca fait longtemps ke j'ai fais ca. Faut regarder la doc sur la pile du picking. J'ai une source qui utilisait le picking et abondament commenté. Peut etre que j'avais dis kkch la dessus.

1 2

Cette discussion est classée dans : plan, 3d, 2d, coordonnees, retrouvé


Répondre à ce message

Sujets en rapport avec ce message

Coord 2D to 3D [ par bat67000 ] Comment optenir d'un point 2D sur l'app les coordonnees du point 3D associé avec la matrice de projection ?(je pige pas bien comment fonctionne la mat de la 3d a la 2d [ par azkab ] bonjour tt le monde,dans mon projet j ai un nombre de primitives (rectangles, cercles, polygones, lignes..) que j ai modelisé en 2d. je stock leur con Collision 3D [ par DJPierreB ] Actuellement, j'ai fait un programme qui dessine les murs et le sol d'une pièce.Je sais me déplacer dans la pièce. Je voudrais donc y ajouter des test Comment fonctionne un moteur 2D ? [ par psykocrash ] Bonjour,J'ai pour projet de développer un rpg à la Final Fantasy (en 2D, 4 héros, un inventaire pour les techniques et les armes, des combats tour à t Image 2D sur fond 3D [ par CyberP ] J'ai une question peut être stupide mais comment faire pour dessiner une image par dessus un rendu OpenGL ? Je pensais utiliser les trucs avec bitblt plan de coupe 3D sur objet [ par jcloupgarou ] Bonjour,je réalise un modeleur pour un projet info et je dois ajouter un outil permettant de faire des plans de coupe 3d des objets modélisés, donnant tableau 2D/3D du structure. [ par goldziko9 ] Bonjour.    Mon problem est avec les tableau de structure, du genre :struct info{ char nom[20]; char prenom[20]; int age };struct info fete[20][20][20 Calcul du squelette d'une forme 2D ou 3D [ par FiReTiTi ] Bonjour, je souhaiterai savoir si quelqu'un saurait où trouver du code qui calcule le squelette d'une forme 2D ou 3D. De préférence, des méthodes autr Filtre gaussien 3D [ par Titeuf007 ] Bonjour, J'aimerai appliquer un filtre gaussien 3D à un volume de données. En 2D, pas de problème, je promène mon mask sur chaque pixel de l'image et trouver un point du mode 3D en 2D [ par thespartan ] Bonjour. Dans mon jeu, je me balade dans un univers 3D et j'ai besoin de faire des explosions. Je me suis dit qu'il faudrait afficher les images en mo


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,076 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales