Partage
  • Partager sur Facebook
  • Partager sur Twitter

Matrice de passage

    12 novembre 2020 à 19:27:59

    Hey,

    je galere légerement à trouver une matrice passage. Je vais commencer par la mise en contexte qui mene au problème (histoire d'éviter le XY problem).

    Je suis en train de programme un algo qui permet de selectionner  un objet 3D (dans un monde 3D) en cliquant "dessus", un peu comme un selectionne un personnage/objet dans un jeu video par exemple. Ca c'est la problèmatique initiale.

    (exemple de scene, pour avoir une reference)

    Cette problèmatique initial mène une problèmatique secondaire qui est de reconnaitre un objet 3D (histoire de pas selectionner le ciel ou l'air par exemple). Pour ça je commence par créer un sous-model du model 3D initial,ou binding box/cube pour les connoisseurs ( ici en rouge sur le screen).

    Une autre problèmatique secondaire est de savoir si les coordonnées de la souris dans le repere de l'ecran, sont contenues dans le sous-model lui aussi dans le repere de l'ecran. Dans le repere du monde, ça revient à tracer une ligne infinie qui va de la camera/observateur (situé dans le repere du monde) et de regarder s'il intersecte un sous-model (lui aussi dans le repere du monde).

    Pour simplifier ce calcul d'intersection, j'ai decider de faire tous mes calculs dans le repere de la camera/observateur. J'ai donc créer un sous-sous-model 2D du sous-model 3D, propre au repere de la camera/observateur, qui est donc un carré/rectangle dans ce repere camera/observateur. Le calcul d'intersection se resume donc à verifier si les coordonnées de l'origine du repere camera/observateur ( x = 0, y = 0, histoire d'etre clair) sont contenues dans le sous-sous-model 2D (le carré/rectangle, donc). (l'objectif final en vert sur le screen)

    Mon problème actuel est donc comment calculer la matrice de passage du sous-sous-model 2D depuis son repere local (exemple le coin en haut à droite a des coordonnées x= 1, y = 1) vers le repere de la camera/observateur, de manière à ce que ce sous-sous-model soit bien la version 2D du sous-model 3D.

    Pour l'instant, je transforme d'abord les coordonnées du sous-model 3D dans le repere de la camera/observateur, puis je créer un le sous-sous-model 2D à partir de ces coordonnées transformées. Là où je séche le plus c'est que je ne sais pas comment integré ni la translation, ni l'homotésie (dans le repere du monde) du sous-model 3D au sous-sous-model 2D dans le repère de la camera/observateur.

    Je vous jure j'ai vraiment éssayé d'écrire un message le plus clair possible....

    Si vous avez des idées/remarques, je suis preneur. Merci d'avance :)

    • Partager sur Facebook
    • Partager sur Twitter

    Eug

      13 novembre 2020 à 4:35:11

      Je n'ai pas compris si tu fais un calcul de perspective,
      dans le sens qu'un carré se trouvant à x unités de la caméra aura la même dimension que s'il était à une distance x/2
      ou s'il est 2 fois plus petit.
      Est-ce un problème de repérage ou d'affichage?
      • Partager sur Facebook
      • Partager sur Twitter

      Le Tout est souvent plus grand que la somme de ses parties.

        13 novembre 2020 à 11:25:55

        Le carré en lui même "n'a pas " de perspectives. Ce sont ses dimensions qui sont propertionnelles à un objet 3D qui lui subit la perspective. C'est justement cette proportionalité que je s'essaye de calculer.

        exemple de loin

        exemple de près

        • Partager sur Facebook
        • Partager sur Twitter

        Eug

        Matrice de passage

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown