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

OpenGL Discussion :

test des paramètres d'une caméra


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 44
    Par défaut test des paramètres d'une caméra
    Bonjour,
    Comment dois je faire pour tester avec openGL les paramètres intrinsèques et extrinsèques d'une caméra (par exemple: si je voudrai dessiner un cube) ?
    Merci beaucoup

  2. #2
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 44
    Par défaut
    J'ai essayé la portion de code suivante pour tester une paramètre extrinsèque de ma caméra :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    double matEx[4][4];
    glViewport(0,0,300,200);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    //matEx: matrice des paramètres extrinsèques 
    glLoadMatrixd((const GLdouble *)matEx);
    glMatrixMode(GL_MODELVIEW);
    dessiner();
    résultat : l'objet (triangle) est affiché mais de façon incorrecte. Pour y apporter des corrections, j'ai inséré la matrice des paramètres intrinsèques :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    double matEx[4][4], matProj[3][3] ;
    glViewport(0,0,300,200);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    //matProj : matrice des paramètres intrinsèques matProj
    glLoadMatrixd((const GLdouble *)matProj);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    //matEx: matrice des paramètres extrinsèques 
    glLoadMatrixd((const GLdouble *)matEx);
    glMatrixMode(GL_MODELVIEW);
    dessiner();
    La matrice des paramètres intrinsèques que j'ai eu après calibrage c'est de la forme :
    [ fx 0 cx]
    [ 0 fy cy]
    [ 0 0 1 ]
    résultat : il n'y a rien qui s'affiche à l'écran. Est ce que quelqu'un a une idée ?
    Merci

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 399
    Par défaut
    Salut,

    si j ai bien compris :
    les parametres extrinseques definissent la matrice de projection.
    les parametres intrinseques definissent la matrice de transformation de la caméra.

    Deja la matrice transformation doit etre en coordonnées homogenes, c est a dire 4x4. Dans la matrice que tu presente, il manque les composantes de translations.

    Ensuite si cette matrice definit la position et l orientation de la camera dans le monde, ic est alors son inverse qu il faut utiliser pour setter la matrice modelView. En effet la matrice modelView definit la transformation du monde et non de la camera.
    SPARK
    Moteur de particule C++ opensource avec modules de rendu OpenGL, Irrlicht et SFML

  4. #4
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 44
    Par défaut
    Salut,

    si j ai bien compris :
    les parametres extrinseques definissent la matrice de projection.
    les parametres intrinseques definissent la matrice de transformation de la caméra.
    Non,
    les paramètres extrinsèques définissent la matrice de modélisation
    les paramètres intrinsèques définissent la matrice de transformation de la caméra. Cette dernière à mon avis sera utilisée pour la projection.

    Deja la matrice transformation doit etre en coordonnées homogenes, c est a dire 4x4. Dans la matrice que tu presente, il manque les composantes de translations.
    Est ce que la translation figure aussi dans la matrice des paramètres intrinsèque ? Puisque le logiciel que j'ai utilisé ne me donne que la matrice matProj (matrice des param. intrinsèque). A mon avis la translation est déjà dans la matrice des paramètres extrinsèques.

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 399
    Par défaut
    oui en fait j ai inversé les 2. je voulais dire :
    intrinseque : projection (de l univers sur un plan 2D)
    extrinseque : tranformation (position et rotation de la camera dans l univers)

    Ce qui est logique en soi.

    Si ta matrice de projection est une 3x3, elle n est pas bonne. en plus tu risques un plantage car openGL attend un tableau de 16 valeurs. Ta matrice de transformation est en 4x4 donc elle doit etre bonne.

    Un autre truc a faire attention en openGL, c est que les matrices sont stockées de facon contigue en column major. Donc en gros tu as :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    (0   4   8   12)
    (1   5   9   13)
    (2   6   10  14)
    (3   7   11  15)
    et non en row major

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    (0   1   2   3 )
    (4   5   6   7 )
    (8   9   10  11)
    (12  13  14  15)
    Donc si tes matrices sont en row major, il faut convertir avant et pas faire un loadMatrix direct dessus
    SPARK
    Moteur de particule C++ opensource avec modules de rendu OpenGL, Irrlicht et SFML

  6. #6
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 44
    Par défaut
    Je tiens à te signaler que le logiciel de calibrage m'avait donné deux types de matrices distinctes : la matrice pour les paramètres intrinsèques et les matrices des paramètres extrinsèques dont voici le lien :http://research.graphicon.ru/calibra...toolbox-5.html.
    Si je comprends bien, ce logiciel m'avait fourni une matrice variante du modèle sténopé d'après ce site http://fr.wikipedia.org/wiki/Calibration_de_cam%C3%A9ra dont la forme en coordonnées homogènes (pour la matrice des paramètres intrinsèques) est comme celle -ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    (fx  0   Cu  0)
    (0  fy   Cv  0)
    (0   0    1  0)
    j'ai déjà appliqué tes conseils :
    1. transformation row major en column major
    2. passé en paramètres de la fonction glLoadMatrixd les vecteurs ainsi obtenus

    Mon problème c'est que je ne sais pas quel genre de transformation devrais appliquer pour la matrice des paramètres intrinsèques.
    Voici le code subit de modification :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    GLdouble matExInv[4][4],matProj[3][4];
    GLdouble matExInv_OGL[16], matProj_OGL[16];
    .....
     
    glViewport(0,0,300,200);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    //transformation row major -> column major
    convertRowToColMajor(matProj, matProj_OGL);
    glLoadMatrixd((const GLdouble *)matProj_OGL);
     
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    //transformation row major -> column major
    convertRowToColMajor(matExInv, matExInv_OGL);
    glLoadMatrixd((const GLdouble *)matExInv_OGL);
    glMatrixMode(GL_MODELVIEW);
    dessiner()
    NB : matExInv c'est la matrice inverse de la matrice des paramètres extrinsèques.
    résultat : l'écran est tjrs noir, pas d'objet affiché.

Discussions similaires

  1. Réponses: 2
    Dernier message: 02/02/2006, 18h46
  2. Evaluations des paramètres d'une fonction
    Par WebPac dans le forum Langage
    Réponses: 15
    Dernier message: 06/10/2005, 09h46
  3. Récupération des paramètres d'une requête
    Par TomPad dans le forum Access
    Réponses: 10
    Dernier message: 16/06/2005, 15h11
  4. Récupération des paramètres avec une procedure stockée
    Par samlerouge dans le forum Bases de données
    Réponses: 2
    Dernier message: 31/03/2004, 22h00
  5. Comment obtenir la liste des paramètres d'une SP ?
    Par Le Gritche dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 14/03/2003, 16h54

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