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

SFML Discussion :

Perspective pour du floor casting


Sujet :

SFML

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Cimentage
    Inscrit en
    septembre 2014
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Cimentage
    Secteur : Associations - ONG

    Informations forums :
    Inscription : septembre 2014
    Messages : 44
    Points : 30
    Points
    30
    Par défaut Perspective pour du floor casting
    Salut à tous :-]

    En ce moment, je suis en train de procéder au développement d'un petit système de FloorCasting, technique qui consiste à projeter un sol en fausse 3D qui s'oriente donc en fonction de l'angle de la caméra ainsi qu de sa position :

    https://gyazo.com/1a7a7de5fe1c1557c56930751b8a88f7

    Comme vous pouvez le constater, il y a une déformation au niveau de la texture ( autrement-dit du carré projeté, car la texture est parfaitement reliée aux 4 points formant le carré, donc ce n'est pas un problème de texturage mais bien de perspective et donc, de calcul ).

    J'aimerais comprendre pourquoi j'ai cette déformation alors que je procède comme suit :

    -Je compare la distance entre le point de la caméra et chacun des 4 points puis je procède à la projection en affichant proportionnellement les 4 points vis à vis de l'angle de la caméra et de la position sur l'écran de rendu. ( propWidth / heightWidth ).

    Voici comment je procède :

    https://image.noelshack.com/fichiers...6-probleme.png

    Et la fonction concernée :

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
            for (unsigned int t = 0 ; t < m_vecBox.size() ; t++)
            {
                for (unsigned int i = 0 ; i < 4 ; i++)
                {
                float d = atan2(m_vecBox[t][i].position.y-m_position.y,
                                m_vecBox[t][i].position.x-m_position.x) * 180/PI;
     
                if (d<0) d+= 360;
     
                float k = (d-m_angle)+m_fov/2;
     
                if (k<0) k+= 360;
     
                float distance = sqrt((m_position.x-m_vecBox[t][i].position.x)*(m_position.x-m_vecBox[t][i].position.x)+
                                      (m_position.y-m_vecBox[t][i].position.y)*(m_position.y-m_vecBox[t][i].position.y));
     
                float propWidth = (k/m_fov)*WIDTHSCREEN;
                float propHeight = 4000/((distance/1000)*HEIGHTSCREEN/2);
     
                if (propWidth>(360/m_fov)*WIDTHSCREEN/2)
                    propWidth-=(360/m_fov)*WIDTHSCREEN;
     
                m_renderBox[i].position = {propWidth, propHeight+HEIGHTSCREEN/2};
     
                if (propWidth>-200 && propWidth<1000 && propHeight<300)
                    m_renderWindow.draw(m_renderBox, &m_textureGround);
                }
            }
    Le problème, j'en suis persuadé, vient du calcul de la distance au même titre que le problème de eye fishing que l'on peut rencontrer avec la technique du raycasting, sauf que là, je ne peux pas corriger ce défaut de perspective de la même manière qu'un programme en raycasting ( multiplier la distance par le cosinus de l'angle ) car il n'y a pas de projection de rayons dans cette fonction, tout est géré uniquement des angles & des distances..

    Pourquoi cette déformation de perspective ? Merci infiniment de bien vouloir m'aider.. :-)

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    septembre 2005
    Messages
    27 014
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2005
    Messages : 27 014
    Points : 40 093
    Points
    40 093
    Par défaut
    Tu sembles être confronté précisément à ce problème: Affine texture mapping

    Si j'ai bien compris le truc, c'est comme si tu avais chacun de tes deux triangles en affichés avec une déformation qui simule une perspective cavalière (tu noteras que les lignes parallèles restent parallèles) au lieu d'une vraie perspective (où les lignes parallèles cessent de l'être, à moins qu'elles aient une "profondeur" constante).
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Cimentage
    Inscrit en
    septembre 2014
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Cimentage
    Secteur : Associations - ONG

    Informations forums :
    Inscription : septembre 2014
    Messages : 44
    Points : 30
    Points
    30
    Par défaut
    Salut à toi Médinoc !

    Merci beaucoup pour ce mot clef, je ne connaissais pas ! Je vais aller faire des recherches là dessus, tu aurais quant à toi, une éventuelle idée de la correction que je pourrais appliquer ? ( Je te demande à toi et je vais faire mes recherches de mon côté de manière à doubler mes chances ! :-) )

    Encore merci pour l'éclaircissement!

Discussions similaires

  1. Quelle perspective pour quels plugins Eclipse ?
    Par miltone dans le forum Eclipse
    Réponses: 4
    Dernier message: 26/10/2011, 21h51
  2. Symantec fait son bilan 2010 et donne ses perspectives pour 2011
    Par Katleen Erna dans le forum Sécurité
    Réponses: 1
    Dernier message: 10/12/2010, 10h20
  3. [NHibernate] paramétrage pour interdire le cast automatique
    Par Emmanuel Lecoester dans le forum NHibernate
    Réponses: 4
    Dernier message: 21/05/2010, 21h00
  4. CSO Interchange : bilan et perspectives pour les RSSI en 2010
    Par Mejdi20 dans le forum Communiqués
    Réponses: 0
    Dernier message: 18/05/2010, 09h12
  5. Perspectives pour DBA DB2 +prog en COBOL
    Par staticx dans le forum Emploi
    Réponses: 4
    Dernier message: 31/08/2007, 17h43

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