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 :

Réalité augmentée: Placer la caméra correctement


Sujet :

OpenGL

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Mai 2007
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Réalité augmentée: Placer la caméra correctement
    Bonjour,

    J'ai commencé OpenGL il n'y a pas longtemps, et je suis déjà bloqué
    Je travaille sur une application de réalité augmentée, et mon problème est que je n'arrive pas à placer ma caméra OpenGL au 'même endroit' où est la caméra réelle.

    La caméra a été calibrée, et je connais sa matrice de rotation et sa matrice de translation. Comment les utiliser pour placer ma caméra OpenGL correctement?

    Je pensais tout bêtement qu'il fallait charger la matrice model view, puis multiplier par la rotation puis la translation mais ça n'a pas l'air de marcher.
    J'ai aussi essayé d'utiliser glulookat après avoir calculé l'origine, la direction et le vecteur up, mais ça n'a pas l'air d'être ça non plus. (mauvais calculs ?)
    Ou faut-il passer directement par la matrice de projection???

    Je suis bloqué dessus depuis plusieurs jours Si quelqu'un pouvait m'aider...
    Merci

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Tes deux méthodes sont censées fonctionner. Maintenant pour en dire plus il faudrait voir le code correspondant, ainsi peut-être qu'un screenshot pour voir ce qui est différent par rapport à la vue souhaitée.

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Mai 2007
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Hello,

    Voilà un mini bout de code (en python). J'ai commenté au max
    voilà ce que je fais pour placer la caméra:


    #charge la texture background qui représente la vue de la caméra
    # ......

    #matrice de rotation de la caméra (en dur ici), en ordre de lignes
    R = array([[0.733962, -0.64499, 0.212811,0],
    [-0.401004, -0.665645, -0.629375,0],
    [0.547597, 0.376599, -0.747202,0],
    [0,0,0,1]])

    #vecteur de translation en dur
    T= array([-0.303357*100, 0.931184*100, 2.35674*100])

    #opengl veut des matrices arrangées par colones, alors on multiplie la transposée
    glMultMatrixf(list(transpose(R)))
    glTranslatef(T[0],T[1],T[2])

    # dessine n'importe quoi, que je devrais voir à la position 0,0,0 du monde
    # ....

    Rien ne s'affiche

    Sachant qu'après calibration j'ai
    Vecteur de translation (en mètres):
    -0.303357 0.931184 2.35674

    Matrice de rotation:
    0.733962 -0.64499 0.212811
    -0.401004 -0.665645 -0.629375
    0.547597 0.376599 -0.747202

    En gros j'ai une caméra dans un coin du plafond d'une salle qui me représente une scène, et j'aimerais réussir à dessiner une grille sur le sol de la salle. Tout est déjà prêt, sauf que je suis complètement perdu dans les rotations et tou et que ma grille n'est jamais au bon endroit.

    Merci

  4. #4
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 58
    Points : 50
    Points
    50
    Par défaut
    Alors pour ma part, je suis confronté aux mêmes problèmes...

    je cherche à utiliser les paramètres d'une caméra dans OpenGL. La caméra est autocalibrée à partir d'un logiciel comme boujou, matchmover, ou autre voodoo. J'exporte les paramètres de caméra pour 3DSMax et je lis les matrices de Rotation, Translation et la focale correspondante dans le fichier.

    J'ai essayé de projeter les points 3D fournis par le logiciel, qui ne correspondent pas aux projections données dans le logiciel.

    Pour simplifier les tests, j'ai utilisé les modèles usuels de projection (sans opengl), que j'ai programmé dans scilab :
    Twc = [ R3x3 T3x1; // R3x3 matrice de rotation // T3x1 vecteur de position de la caméra
    0 0 0 1 ]

    et la matrice de projection :
    P=[ sx*f 0 cx // sx,sy facteur d'échelle
    0 sy*f cy // cx,cy centre de projection
    0 0 1]; // f, la focale.

    p2d=P*Twc*p3d // transformation monde caméra et projection
    p2d=p2d/p2d(3) // division perspective

    Si quelqu'un a réussi à utiliser les paramètres fournis par ce genre de logiciel dans OpenGL, je suis preneur de quelques explications ^^.

Discussions similaires

  1. Réponses: 0
    Dernier message: 08/11/2012, 10h52
  2. Mixe Image dans Vue 3D : Réalité Augmentée
    Par mmx dans le forum DirectX
    Réponses: 1
    Dernier message: 09/03/2009, 18h45
  3. Réponses: 4
    Dernier message: 19/02/2008, 08h05

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