projection objet 3d [opengl] - C++ - Programmation
Marsh Posté le 15-06-2010 à 21:39:23
Salut,
Si tu veux faire des correspondances entre l'espace et l'écran, tu peux utiliser gluProject/gluUnProject.
Marsh Posté le 15-06-2010 à 21:51:45
ptitchep a écrit : Salut, |
j'ai pas compris ce que tu veux dire
Marsh Posté le 16-06-2010 à 09:38:51
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.
Marsh Posté le 16-06-2010 à 10:19:52
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. |
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
Marsh Posté le 16-06-2010 à 11:36:03
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"
Marsh Posté le 16-06-2010 à 12:04:16
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
Marsh Posté le 17-06-2010 à 21:28:08
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?
Marsh Posté le 18-06-2010 à 18:08:05
ptitchep a écrit : En fait, j'avoue que je ne comprends pas trop ce que tu veux faire :-s |
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
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
Marsh Posté le 20-06-2010 à 13:34:22
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.
Marsh Posté le 04-07-2010 à 08:25:14
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
Marsh Posté le 05-07-2010 à 17:38:13
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.
Marsh Posté le 05-07-2010 à 22:35:29
Code :
|
Marsh Posté le 15-06-2010 à 21:22:12
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