IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement 2D, 3D et Jeux Discussion :

projection perspective 3d->2d


Sujet :

Développement 2D, 3D et Jeux

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2007
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2007
    Messages : 610
    Points : 66
    Points
    66
    Par défaut projection perspective 3d->2d
    bonjour,
    j'ai une point (x,y,z) dans un objet 3D et je voudrais connaitre sa projection dans une image 2D et par qonséquence je dois récupiré (u',v') le résultat de projection d'une point (x,y,z)




    pour faire ça j'ai une question peut être bête pour vous (mais j'ai pas l'habitude de faire ça )

    est ce que dans cette cas de préférable je travaille avec gluperspective , glUnProject() , ou il faut que je multiplié chaque point du cylindre avec la matrice de projection ( dans cette dernière idée il faut que je spécifie moi même la matrice ) ou même l'utilisation de glhFrustumf2
    http:
    //www.opengl.org/wiki/GluPerspective_code

    dans cette cas comment je dois spécifie
    "loat left, float right, float bottom, float top, float znear, float zfar"

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 860
    Points : 219 064
    Points
    219 064
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    IL faut utiliser glProject() qui fera les multiplications des matrices pour vous.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2007
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2007
    Messages : 610
    Points : 66
    Points
    66
    Par défaut
    bon, merci pour votre conseil
    mais si je voudrais récupérés les coordonnées du point (x,y,z)
    en 2d
    comment je dois faire ou en d'autre terme comment je dois faire l'appele de cette fonction ?

  4. #4
    Expert éminent
    Avatar de raptor70
    Inscrit en
    Septembre 2005
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Septembre 2005
    Messages : 3 173
    Points : 6 812
    Points
    6 812
    Par défaut
    Quelque soit ta techno utilisé, il faut multiplier la matrice de projection de ta camera par ta position 3D. La matrice de projection peut être différente en fonction d'une camera orthographique ou perspective, etc...

    Certains outils spécifiques au techno (comme OGL) propose de récupérer cette matrice directement ou de faire le calcul pour toi comme te l'à précisé LittleWhite (a l'exception que c'est gluProject )

    Voilà sa doc : http://www.opengl.org/sdk/docs/man/xhtml/gluProject.xml
    Mes Tutos DirectX, OpenGL, 3D : http://raptor.developpez.com/

  5. #5
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2007
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2007
    Messages : 610
    Points : 66
    Points
    66
    Par défaut
    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 .)
    -est ce que je peux calculer la distance focale entre camera et mon objet ?
    j'ai lus dans un article qu'on peut le supposé fixe mais j'ai pas trouvé une méthode me permet de le calculé ou comment je dois supposé ce valeur

  6. #6
    Expert éminent
    Avatar de raptor70
    Inscrit en
    Septembre 2005
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Septembre 2005
    Messages : 3 173
    Points : 6 812
    Points
    6 812
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    GLdouble model_view[16];
    glGetDoublev ( GL_MODELVIEW_MATRIX, model_view);
     
    GLdouble projection[16];
    glGetDoublev ( GL_PROJECTION_MATRIX,projection);
     
    GLint viewport[4];
    glGetIntegerv ( GL_VIEWPORT,viewport);
     
    GLdouble out_X, out_Y, out_Z;
    gluProject(X,Y,Z,model_view,projection,viewport,&out_X,&out_Y, &out_Z);
    Mes Tutos DirectX, OpenGL, 3D : http://raptor.developpez.com/

  7. #7
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2007
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2007
    Messages : 610
    Points : 66
    Points
    66
    Par défaut
    merci infiniment raptor70 pour votre aide
    j'ai une autre question dans ce domaine j'ai trouvé qu'il existe une projection perspective comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    1	0	0	0
    0	1	0	0
    0	0	1	0
    0	0	1/f	0
    où f c'est la distance focale
    pour utilisé cette matrice comment je trouve "f" en supposant qu'il est constant . est ce que je peux le donné un valeur quelconque?

  8. #8
    Expert éminent
    Avatar de raptor70
    Inscrit en
    Septembre 2005
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Septembre 2005
    Messages : 3 173
    Points : 6 812
    Points
    6 812
    Par défaut
    en fait, il correspond à la distance entre l'origine et ton plan de projection. Si je ne dit pas de bétises, il me semble que c'est la distance "Near" quand tu configure ta projection.
    Mes Tutos DirectX, OpenGL, 3D : http://raptor.developpez.com/

  9. #9
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2007
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2007
    Messages : 610
    Points : 66
    Points
    66
    Par défaut
    alors si je récupère la matrice de projection utilisé en opengl
    je fait le f = znear?

  10. #10
    Expert éminent
    Avatar de raptor70
    Inscrit en
    Septembre 2005
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Septembre 2005
    Messages : 3 173
    Points : 6 812
    Points
    6 812
    Par défaut
    Citation Envoyé par dreamVIG Voir le message
    alors si je récupère la matrice de projection utilisé en opengl
    je fait le f = znear?
    Je ne comprends pas vraiment ta question .... la matrice que tu récupère est déjà correcte ...
    Mes Tutos DirectX, OpenGL, 3D : http://raptor.developpez.com/

  11. #11
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2007
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2007
    Messages : 610
    Points : 66
    Points
    66
    Par défaut
    mon question est si je travaille avec cette matrice et pas par celle d'opengl par ce que j'ai trouvé que j'ai besoins de travaillé par cette matrice
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    1	0	0	0
    0	1	0	0
    0	0	1	0
    0	0	1/f	0
    comment je dois faire pour donner une valeur à f?
    Note : j'ai besoins de connaitre les valeurs de la matrice perspective pour calculer une autre matrice "la matrice jacobienne"

  12. #12
    Expert éminent
    Avatar de raptor70
    Inscrit en
    Septembre 2005
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Septembre 2005
    Messages : 3 173
    Points : 6 812
    Points
    6 812
    Par défaut
    Citation Envoyé par dreamVIG Voir le message
    mon question est si je travaille avec cette matrice et pas par celle d'opengl par ce que j'ai trouvé que j'ai besoins de travaillé par cette matrice
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    1	0	0	0
    0	1	0	0
    0	0	1	0
    0	0	1/f	0
    comment je dois faire pour donner une valeur à f?
    Note : j'ai besoins de connaitre les valeurs de la matrice perspective pour calculer une autre matrice "la matrice jacobienne"
    Donc oui, c'est la réponse que je t'ai donné plus haut .... le seul moyen pour être sur, de toute facon, c'est d'essayer
    Mes Tutos DirectX, OpenGL, 3D : http://raptor.developpez.com/

  13. #13
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2007
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2007
    Messages : 610
    Points : 66
    Points
    66
    Par défaut
    essayé
    j'ai essayé plusieurs valeurs mais aucune résultat
    est ce qu'il existe une chose à faire pour limité le nombre d'essai

  14. #14
    Membre régulier
    Inscrit en
    Juillet 2008
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 104
    Points : 95
    Points
    95
    Par défaut
    Citation Envoyé par dreamVIG Voir le message
    essayé
    j'ai essayé plusieurs valeurs mais aucune résultat
    est ce qu'il existe une chose à faire pour limité le nombre d'essai
    je suppose que f est la longueur de la focal non ?

    projection perspective 3D => 2D (camera aligné sur le monde)

    x2d=x3d/(focal+z3d)
    y2d=y3d/(focal+z3d)

    (nb: pas sur que je n'ai pas oublié qq chose dans la formule mais elle se retrouve simplement à l'aide de Thales)

Discussions similaires

  1. [OpenGL 4.x] Projection perspective "isometrique", what!?
    Par Driyo dans le forum OpenGL
    Réponses: 2
    Dernier message: 02/06/2013, 09h36
  2. Projection et perspective
    Par atlanthot dans le forum Moteurs 3D
    Réponses: 2
    Dernier message: 22/08/2012, 14h42
  3. projection perspective de l'image 2d sur un plan 3d
    Par info_sara dans le forum Développement 2D, 3D et Jeux
    Réponses: 6
    Dernier message: 18/05/2010, 20h45
  4. Projection en perspectives
    Par 77Camille dans le forum MATLAB
    Réponses: 5
    Dernier message: 23/04/2008, 20h30
  5. La projection perspective
    Par Ito A dans le forum Développement 2D, 3D et Jeux
    Réponses: 8
    Dernier message: 18/01/2008, 22h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo