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

  FORUM HardWare.fr
  Programmation
  C++

  [opengl] projection objet 3d

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[opengl] projection objet 3d

n°2001943
dreamvig
Posté le 15-06-2010 à 21:22:12  profilanswer
 

bonjour,
si on a un objet 3d alors chaque pixel (ou point) u est défini par 3 coordonnées [x,y,z]    
si on project cet objet avec projection perspective (opengl)
comment on calcule les coordonnées 2d de u

mood
Publicité
Posté le 15-06-2010 à 21:22:12  profilanswer
 

n°2001947
ptitchep
Posté le 15-06-2010 à 21:39:23  profilanswer
 

Salut,
Si tu veux faire des correspondances entre l'espace et l'écran, tu peux utiliser gluProject/gluUnProject.


---------------
deluser --remove-home ptitchep
n°2001950
dreamvig
Posté le 15-06-2010 à 21:51:45  profilanswer
 

ptitchep a écrit :

Salut,
Si tu veux faire des correspondances entre l'espace et l'écran, tu peux utiliser gluProject/gluUnProject.


 :ouch:  
j'ai pas compris ce que  tu veux dire  :(  

n°2002035
ptitchep
Posté le 16-06-2010 à 09:38:51  profilanswer
 

La scène que tu visualises est en 3D. ton écran est en 2D. Si  je comprends bien, tu veux faire une correspondance entre les deux.
J'avais eu à le faire pour savoir sur quoi pointait ma souris. Je n'ai pas le code ici mais je pourrai regarder chez moi si besoin. J'avais utilisé les fonctions gluProject et gluUnProject. L'une te permet de "mapper des coordonnées 3D en 2D" et l'autre l'inverse.
http://www.opengl.org/sdk/docs/man [...] roject.xml
http://www.opengl.org/sdk/docs/man [...] roject.xml
 
J'espère être plus clair.


---------------
deluser --remove-home ptitchep
n°2002058
dreamvig
Posté le 16-06-2010 à 10:19:52  profilanswer
 

ptitchep a écrit :

La scène que tu visualises est en 3D. ton écran est en 2D. Si  je comprends bien, tu veux faire une correspondance entre les deux.
J'avais eu à le faire pour savoir sur quoi pointait ma souris. Je n'ai pas le code ici mais je pourrai regarder chez moi si besoin. J'avais utilisé les fonctions gluProject et gluUnProject. L'une te permet de "mapper des coordonnées 3D en 2D" et l'autre l'inverse.
http://www.opengl.org/sdk/docs/man [...] roject.xml
http://www.opengl.org/sdk/docs/man [...] roject.xml
 
J'espère être plus clair.


merci  ptitchep je vais les voir .
mais j'ai lu un article qui dit il faut un projection perspective et il faut nous connaitrons le focal length du camera  :??:  :??:  pour mappé le point 3d sur l'écran 2d  

n°2002108
ptitchep
Posté le 16-06-2010 à 11:36:03  profilanswer
 

gluProject se débrouille avec les matrices modelview projection et viewport et te donne directement les coordonnées à l'écran (potentiellement hors écran) il me semble. Par contre dans l'autre sens, je crois que cela te donne les coordonnées d'un point sur un certain plan. À toi de t'adapter.
Donc dans ton cas, je pense que tu n'as rien à faire, "juste" appeler gluProject.
Dans l'autre sens j'avais dû pêcher les informations avec goole => "objet curseur souris opengl gluUnProject"


---------------
deluser --remove-home ptitchep
n°2002120
dreamvig
Posté le 16-06-2010 à 12:04:16  profilanswer
 

il me semble que je ne peux pas utilisé cette fct
parce que   j'ai une cylindre 3d j'ai le projeté sur une image 2d donc  les point du cylindre ont deux façons pour les représenter soit en 3d soit en 2d  
j'ai fais mes calcule en 3d mais  la projections pour appliqué mes calcule  qui sont des transformations dans le  plan 2d.
(je ne sais pas est ce que j'ai bein compris les étap de mon projet ou
non
par ce que mon objectif est de mappé mon objet 3d comme cette vidéo
http://youtube.com/watch?v=TsbG7qiWhOM
 
 
 

n°2002585
ptitchep
Posté le 17-06-2010 à 21:28:08  profilanswer
 

En fait, j'avoue que je ne comprends pas trop ce que tu veux faire :-s
Lorsque tu dessines le cylindre sur le visage, tu le fais avec des coordonnées 3D?
C'est quoi que tu appelles mappé dans cette vidéo? Le point violet?


---------------
deluser --remove-home ptitchep
n°2002858
dreamvig
Posté le 18-06-2010 à 18:08:05  profilanswer
 

ptitchep a écrit :

En fait, j'avoue que je ne comprends pas trop ce que tu veux faire :-s
Lorsque tu dessines le cylindre sur le visage, tu le fais avec des coordonnées 3D?
C'est quoi que tu appelles mappé dans cette vidéo? Le point violet?


moi je veux faire comme cet article
http://www.cs.cmu.edu/~face/Papers [...] covery.pdf
c'est pour çà j'ai créer un cylindre  avec opengl.
ensuite  
http://xphilipp.developpez.com/tmp/Pose3D.png
mon problème dans les étape 2,3,5
parce que  
2et 3 représentent une projection des points en 2d sur un cylindre à une position défini  
5: représente la projection inverse

n°2003085
ptitchep
Posté le 20-06-2010 à 13:34:22  profilanswer
 

Est-ce que tu connais les positions des points de l'étape 2? et Δµ?

 

Si oui, tu utilises gluUnProject, tu obtiens les coordonnées des points sur le plan de l'écran. Ensuite tu calcules les équations des droites qui passent par la caméra et chacun des points. Tu cherches les points d'intersection entre tes droites et ton cylindre et tu obtiens les points en 3. Tu appliques Δµ pour obtenir les nouveaux points en 4 et tu utilises gluProject pour obtenir les coordonnées des nouveaux points en 5.


Message édité par ptitchep le 20-06-2010 à 13:41:24

---------------
deluser --remove-home ptitchep
mood
Publicité
Posté le 20-06-2010 à 13:34:22  profilanswer
 

n°2006943
dreamvig
Posté le 04-07-2010 à 08:25:14  profilanswer
 

bon;
si mes coordonnée 3d sont (x,y,z) et si je veux faire une projection perspective , je faire comme ça  
GLint gluProject( GLdouble   X,  
  GLdouble   Y,  
  GLdouble   Z,  
  const GLdouble *   GL_PERSPECTIVE_CORRECTION_HINT,  
  const GLdouble *   proj,  
  const GLint *   view,  
  GLdouble*   winX,  
  GLdouble*   winY,  
  GLdouble*   winZ);
????
(je sais que j'ai fais une coupé/collé mais désolé j'ai pas bien compris comment je travail avec cette fonction .:oops:)

n°2007224
ptitchep
Posté le 05-07-2010 à 17:38:13  profilanswer
 

Oui il me semble que c'est dans ce sens. Par contre je n'ai jamais compris à quoi servait winZ...
Ce soir je cherche un code où je l'utilise et je te poste ça.


---------------
deluser --remove-home ptitchep
n°2007262
ptitchep
Posté le 05-07-2010 à 22:35:29  profilanswer
 

Code :
  1. double modelMatrix[16], projMatrix[16];
  2. int viewport[4];
  3. double x,y,z;
  4. const Point& position (obj->getPosition());
  5. glGetDoublev(GL_MODELVIEW_MATRIX,modelMatrix);
  6. glGetDoublev(GL_PROJECTION_MATRIX,projMatrix);
  7. glGetIntegerv(GL_VIEWPORT,viewport);
  8. if ( gluProject( position.getX(),position.getY(),position.getZ(),modelMatrix, projMatrix,viewport,&x,&y,&z) == GL_TRUE &&
  9.      x >= 0 && x < largeurEcran &&
  10.      y >= 0 && y < hauteurEcran)
  11. {
  12.        ...
  13. }


Message édité par ptitchep le 05-07-2010 à 22:38:43

---------------
deluser --remove-home ptitchep
n°2008023
dreamvig
Posté le 08-07-2010 à 13:08:55  profilanswer
 

merci pour le code


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [opengl] projection objet 3d

 

Sujets relatifs
Methode permettant de bien affiché un objetvisualiser objet dessiner en opengl dans une fenêtre opencv
[OPENGL]usleep et affichageJava et OpenGl
[resolu][PHP] parcourir un tableau d'objetAcceder aux attributs d'un objet dans une liste
[OpenGl] Remplir un tétrahèdre pour réaliser des coupesPb d'affichage conditionnel d'objet dans un état
Plus de sujets relatifs à : [opengl] projection objet 3d


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