Réalité virtuelle (pb mathématique)
Répondre à la discussion
Affichage des résultats 1 à 17 sur 17

Réalité virtuelle (pb mathématique)



  1. #1
    invite9b331ba3

    Arrow Réalité virtuelle (pb mathématique)


    ------

    J'ai beoin de votre aide, je commence à devenir fou avec ce problème .

    Je suis actuellement sur un projet de réalité virtuelle mais un problème se pose à moi (et pas des moindres).

    Je vous explique la chose.

    Voic une modélisation d'une scène de prise de vue :



    Tout d'abord, je vais détailler la modélisation de la caméra.
    La caméra se situe à l'origine de la base bleue la caméra regarde dans la direction de z.
    Le plan de projection, représente ce qui s'affiche à l'écran. Soit un point P de l'espace, il exitse un plan parallèle au plan de projection passant par P. Les coordonées de P dans le repère vert sont donc (x'',y'',0,1).

    Dans le plan de projection (et danc dans le repère rouge), les coordonnées de P sont (X,Y,0,1)

    Dans le repère bleu, les coordonnées de P sont (x',y',z',1) et dans le repère violet, ses coordonnées sont (x,y,z,1).

    Pour passer des coordonées (x,y,z,1) aux coordonnées (x',y',z',1), sauf erreure de ma part, il existe une matrice de la forme :[[a'1,a'2,a'3,a'4][b'1,b'2,b'3,b'4][c'1,c'2,c'3,c'4][0,0,0,1]]

    on a donc
    • x' = a'1*x+a'2*y+a'3*z+a'4
    • y' = b'1*x+b'2*y+b'3*z+b'4
    • z' = c'1*x+c'2*y+c'3*z+c'4

    Notons dF la distance entre entre les repères bleux et rouges.
    De là, on peut alors écrire que: X = dF * x'/z' et Y = dF * y'/z'.

    Donc finalement, il semblerait légitime d'écrire :
    • X = dF * (a'1*x+a'2*y+a'3*z+a'4) / (c'1*x+c'2*y+c'3*z+c'4)
    • Y = dF * (b'1*x+b'2*y+b'3*z+b'4) / (c'1*x+c'2*y+c'3*z+c'4)

    On peut donc également écrire :
    • X = (a1*x+a2*y+a3*z+a4) / (c1*x+c2*y+c3*z+c4)
    • Y = (b1*x+b2*y+b3*z+b4) / (c1*x+c2*y+c3*z+c4)

    Voilà donc où je voulais en venir.
    En gros, l'idée est de trouver les fonctions Fx et Fy qui permettent de passer de (x,y,z) (coordonnées du point P) dans le repère violet à (X,Y,0) (coordonnées de P' ) dans le repère rouge. Il est important de préciser que le repère violet n'a aucune axe parallèle aux axes du repère bleu (pour passer du violet au bleu, il faut donc composer une rotation avec une translation).

    Voilà, il s'agit de ma première question.

    J'en aurai une deuxième par la suite une fois cette première étape résolue.

    J'éspère vraiment que vous pourrez m'aider... je suis bloqué

    -----

  2. #2
    invite9cf21bce

    Re : Réalité virtuelle (pb mathématique)

    Salut..

    La position et l'orientation de ta caméra, par quoi sont-elles décrites (dans le repère violet) ?

    1. Tu connais ses coordonnées et son orientation dans le repère violet ?

    Ou bien

    2. Tu sais quel déplacement de l'espace transforme le repère violet en le repère bleu ?

    Selon le cas, le traitement est différent (bien que les deux cas soient similaires)

    Note D la distance caméra-plan de projection.

    Dans le cas 2., le plus simple est de mentalement faire subir à l'ensemble caméra+plan de projection+P la transformation inverse.
    La caméra se retrouve alors à l'origine du repère violet, avec les axes comme dans le repère violet.
    Le plan de projection se retrouve positionné comme il faut, par rapport au repère violet.
    Et P se retrouve en P", dont tu obtiens les coordonnées (x",y",z") dans le repère violet.
    Tu n'as plus qu'à calculer x"D/z'' et y"D/z".

    Autrement dit, si T est la transformation amenant le repère violet sur le repère bleu, tu calcules P"=T-1(P) et tu fais Dx"/z",Dy"/z".

    Taar.

  3. #3
    invite9b331ba3

    Re : Réalité virtuelle (pb mathématique)

    La caméra est placée de façon complètement aléatoire, donc le passage du repère violet au repère bleu est une composition d'une rotation (selon les 3 axes) et d'une translation (selon les 3 axes).

    Disons que j'ai juste besoin de savoir la "forme" des fonctions Fx et Fy (après, je calcule les paramètres via des calibrages).

    Pourrais-tu me dire de quelle "forme" ces fonctions devraient être ? Et que penses-tu de mes calculs (ma démarche est -elle bonne ?) ?

    Je te remercie pour ta réponse.

  4. #4
    Jean_Luc

    Re : Réalité virtuelle (pb mathématique)

    Salut,

    Supposons que le repère de la caméra soit aussi le repère de l'espace (repére violet) et supposons aussi que l'origine de cet espace soit noté O. (en gros c'est que tu as multiplié le vecteur par la matrice T-1 que Tarr t'a décrite)

    Tu n'as pas besoin de t'embêter avec le repère rouge et le repère vert. Tu as juste besoin de définir la distance focale (dF) comme tu l'as fait mais aussi la hauteur (H) et la largeur (W) du plan de projection. C'est ce qui va définir l'angle d'ouverture de la caméra. Tu peux ensuite calculer les coordonnées 2D (écran) de P' simplement par les formules :





    Si tu veux otenir une fonction globale, il faudra que tu développes les produits matriciels de toutes les transformations inverses de ta caméra, à savoir une translation et 3 rotations (Attention c'est pas commutatif). Tu peux trouver une description des ces transformations sur Wikipedia.

    Je pense que le plus simple et le plus clair, c'est quand même de travailler avec des matrices.

    Bon courage...
    L'Univers est fini. Ah bon déjà ?

  5. A voir en vidéo sur Futura
  6. #5
    invite9b331ba3

    Re : Réalité virtuelle (pb mathématique)

    Je n'arrive pas à comprendre pourquoi :





    et non pas





    Pouvez-vous m'expliquer ?

  7. #6
    Jean_Luc

    Re : Réalité virtuelle (pb mathématique)

    Salut,

    Citation Envoyé par Selkis64 Voir le message
    Je n'arrive pas à comprendre pourquoi :





    et non pas



    C'est simplement parce que la distance focale seule ne suffit pas à décrire correctement le système. Effectivement, on pourrait définir deux nombres et puis écrire et , mais si tu ne connais que les nombres F1 et F2 alors, tu seras incapable de déterminer toutes les caractéristiques de ton plan de projection. Alors, bien sur, ce n'est pas génant tant que tu n'as que des points devant ton plan de projection mais si tu veux pouvoir "clipper" correctement les figures alors il faut connaître la distance dF. De même si tu veux pouvoir éliminer les figures qui sont en dehors du cône de projection, il faut connaître dF,W et H (ou les angles d'ouverture). A noter que si tu définis un seul nombre F alors tu ne pourras pas prendre en considération le rapport Largeur/Hauteur de l'écran, tes figures risquent d'être déformées.

    PS: J'ai oublié de préciser que les formules que j'ai écrites donnent des cordonnées allant de -1 a 1 pour les X et les Y. Ce sont les formules utilisées par Direct3D.
    L'Univers est fini. Ah bon déjà ?

  8. #7
    invite9b331ba3

    Re : Réalité virtuelle (pb mathématique)

    D'accord, mon objectif n'est pas de (re)faire un moteur 3d avec zone de clipping.

    J'utilise de vraies caméras, et il s'agit d'une modélisation de ces dernières.

    Si je cherche de telles fonctions, c'est pour pouvoir les calibrer et ainsi, pouvoir déduire (x,y,z) d'un point à partir des (X,Y) de plusieurs caméras (motion capture).

    Donc voilà, à l'heure actuelle, je cherche à trouver la forme des fonctions Fx et Fy. et c'est là que mon problème intervient.

    Niveau informatique, je ne suis pas bloqué (je suis ingénieur et utilise régulièrement opengl).

    Merci de m'aider à les décrire.

    J'attend avec impatience ta réponse.

  9. #8
    Jean_Luc

    Re : Réalité virtuelle (pb mathématique)

    Voila , j'ai fait le calcul et voici mes résultats (que je te conseille vivement de vérifier) :
    Soit les transformations de la caméra suivantes (repère main droite comme sur ton dessin) :
    Translation: tx,ty,tz
    Angle rotation (Ox): a
    Angle rotation (Oy): b
    Angle rotation (Oz): c

    P(x,y,z): point de l'espace violet
    P(X,Y,Z): meme point exprimé dans le repère bleu
    Code:
    X = cosc*cosb*x + 
        (sinc*cosa+cosc*sinb*sina)*y +
        (sinc*sina-cosc*sinb*cosa)*z -
        cosc*cosb*tx - 
        (sinc*cosa+cosc*sinb*sina)*ty -  
        (sinc*sina-cosc*sinb*cosa)*tz
    Y=  -sinc*cosb*x +
        (cosc*cosa-sinc*sinb*sina)*y +
        (cosc*sina+sinc*sinb*cosa)*z +
        sinc*cosb*tx -
        (cosc*cosa-sinc*sinb*sina)*ty -
        (cosc*sina+sinc*sinb*cosa)*tz
    Z=  sinb*x -
        cosb*sina*y +
        cosb*cosa*z -
        sinb*tx +
        cosb*sina*ty -
        cosb*cosa*tz
    Ensuite pour déterminer Fx et Fy, tu appliques les formules que j'ai écrites plus haut.

    J'espère que ca t'aidera....
    L'Univers est fini. Ah bon déjà ?

  10. #9
    invite9b331ba3

    Re : Réalité virtuelle (pb mathématique)

    Hoho tu as dû t'amuser

    Il me fallait juste la forme de X,Y et Z

    On est donc d'accord pour dire que X, Y et Z auront la forme suivante ? (où les a_i et b_i sont constants car la caméra est fixe)
    Code:
    X = a_1*x + a_2 * y + a_3*z + a_4
    Y = b_1*x + b_2 * y + b_3*z + b_4
    Z = c_1*x + c_2 * y + c_3*z + c_4
    Je veux juste savoir si tu es d'accrod avec cela pour que je puisse continuer.

    Merci

  11. #10
    Jean_Luc

    Re : Réalité virtuelle (pb mathématique)

    Citation Envoyé par Selkis64 Voir le message
    Hoho tu as dû t'amuser
    Ouais un peu

    Citation Envoyé par Selkis64 Voir le message
    Je veux juste savoir si tu es d'accrod avec cela pour que je puisse continuer.
    Oui oui.
    Citation Envoyé par Selkis64 Voir le message
    Merci
    De rien
    L'Univers est fini. Ah bon déjà ?

  12. #11
    invite9b331ba3

    Re : Réalité virtuelle (pb mathématique)

    Es-tu également d'accord pour dire que :


    étant donné que les zones de clipping m'importent peu ?

    J'ai juste besoin de projeter un point sur un plan.

    non ?

    En tout cas je te remercie de m'aider à résoudre mon problème. (Si tu as besoin, je suis ingénieur en informatique, donc si tu as besoin d'aide de ce côté là, je suis là ).

  13. #12
    Jean_Luc

    Re : Réalité virtuelle (pb mathématique)

    Citation Envoyé par Selkis64 Voir le message
    Es-tu également d'accord pour dire que :


    étant donné que les zones de clipping m'importent peu ?

    J'ai juste besoin de projeter un point sur un plan.

    non ?
    Ce calcul est correct si les pixels de l'écran (où tu récolteras les mesures) sont "carrés". Si ce n'est pas le cas il faudra ajouter un facteur de correction.

    Citation Envoyé par Selkis64 Voir le message
    En tout cas je te remercie de m'aider à résoudre mon problème. (Si tu as besoin, je suis ingénieur en informatique, donc si tu as besoin d'aide de ce côté là, je suis là ).
    Merci pour ta proposition, c'est aussi mon métier mais on sait jamais...
    L'Univers est fini. Ah bon déjà ?

  14. #13
    invite9b331ba3

    Re : Réalité virtuelle (pb mathématique)

    Donc au final, on a bien:




    où les (,,)sont des constantes ?

    Encore une fois je te demande si nous sommes d'accord car pour la suite, ce résultat est important.

  15. #14
    Jean_Luc

    Re : Réalité virtuelle (pb mathématique)

    Citation Envoyé par Selkis64 Voir le message
    Donc au final, on a bien:




    où les (,,)sont des constantes ?

    Encore une fois je te demande si nous sommes d'accord car pour la suite, ce résultat est important.

    Oui oui , c'est correct....
    L'Univers est fini. Ah bon déjà ?

  16. #15
    invite9b331ba3

    Re : Réalité virtuelle (pb mathématique)

    Tu commençais à me manquer

  17. #16
    invite4444b007

    Re : Réalité virtuelle (pb mathématique)

    Si je me souviens vaguement de mes cours de sup' :

    Soit A la matrice associée au référentiel a.

    1) Soit M la matrice associée au point m, dont les coordonnées sont données dans le référentiel a. Les coordonnées du point m dans le référentiel (O,i,j,k) sont obtenues avec :

    2) Soit M la matrice associée au point m, dont les coordonnées sont données dans le référentiel de base (O,i,j,k). Si et seulement si la matrice A est inversable, les coordonnées du point m dans le référentiel a sont obtenues avec :

    En bref, on multiplie à gauche par la matrice pour sortir du référentiel et on multiplie à gauche par la matrice inverse pour entrer dans un référentiel. Bien évidamment ces opérations sont cumulables, mais il faut veiller à bien sortir d'un référentiel avant d'entrer dans un nouveau. A savoir que pour passer d'un référentiel a à un référentiel b, on peut calculer une matrice de transition qui vaut alors : . On a dans ce cas

  18. #17
    invite9b331ba3

    Re : Réalité virtuelle (pb mathématique)

    Merci pour ta réponse

Discussions similaires

  1. Réalité virtuelle et imaginaire
    Par Rhedae dans le forum Epistémologie et Logique (archives)
    Réponses: 10
    Dernier message: 28/06/2007, 20h15
  2. Besoin d'aide (réalité virtuelle)
    Par invite9b331ba3 dans le forum Mathématiques du supérieur
    Réponses: 4
    Dernier message: 20/04/2007, 10h41
  3. Master recherche réalité virtuelle
    Par invite38ce269f dans le forum Orientation après le BAC
    Réponses: 7
    Dernier message: 04/04/2007, 16h05
  4. Réalité virtuelle - moteur physique
    Par Rodrigue dans le forum Physique
    Réponses: 11
    Dernier message: 19/04/2005, 12h21