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

Développement 2D, 3D et Jeux Discussion :

Asphyre et coordonnées écran


Sujet :

Développement 2D, 3D et Jeux

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2006
    Messages : 78
    Points : 81
    Points
    81
    Par défaut Asphyre et coordonnées écran
    Bonjour à tous,

    J'utilise D3D9 par l'intermédiaire des composants Asphyre 3.1.

    Je cherche avec cette interface Asphyre comment obtenir les coordonnées écran (projection) d'un point de l'espace objet ou de l'espace monde (probablement avec TAsphyreCamera).
    Le but est de réagir à un click souris sur un objet particulier.

    J'ai trouvé un exemple directX avec le code suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    const D3DXMATRIX* pmatProj = g_Camera.GetProjMatrix();
     
            POINT ptCursor;
            GetCursorPos( &ptCursor );
            ScreenToClient( DXUTGetHWND(), &ptCursor );
     
            // Compute the vector of the pick ray in screen space
            D3DXVECTOR3 v;
            v.x = ( ( ( 2.0f * ptCursor.x ) / pd3dsdBackBuffer->Width ) - 1 ) / pmatProj->_11;
            v.y = -( ( ( 2.0f * ptCursor.y ) / pd3dsdBackBuffer->Height ) - 1 ) / pmatProj->_22;
            v.z = 1.0f;

    Merci d'avance pour votre aide.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2006
    Messages : 78
    Points : 81
    Points
    81
    Par défaut
    Pour ceux que ça interesse, j'ai trouvé la solution sur le forum AfterWarp (traduite pour c++ Builder) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    TPoint2 __fastcall TMainForm::Point3ToScreenPoint2(TPoint3 Pt,
            TAsphyreCamera *AsphyreCamera,
            TAsphyreDevice *AsphyreDevice)
    {
      TPoint3 Pt3;
      TPoint2 Pt2;
     
      Pt3 = Vec4to3(MatVecMul(Vec3to4(Pt), MatMul(AsphyreCamera->ViewMtx, AsphyreCamera->ProjMtx)));
     
      Pt2.x = (AsphyreDevice->Width * 0.5) + (Pt3.x * (AsphyreDevice->Width * 0.5));
      Pt2.y = (AsphyreDevice->Height * 0.5) - (Pt3.y *(AsphyreDevice->Height * 0.5));
      return Pt2;
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 10/08/2010, 03h39
  2. [DX9 VB.Net]Conversion coordonnées écran
    Par lelulu dans le forum DirectX
    Réponses: 12
    Dernier message: 23/12/2007, 19h17
  3. placement en coordonnées écran
    Par skalimer0 dans le forum OpenGL
    Réponses: 1
    Dernier message: 22/10/2007, 11h43
  4. coordonnées écran de l'application active
    Par Fabrice ROUXEL 1 dans le forum Windows
    Réponses: 2
    Dernier message: 19/05/2006, 19h26
  5. Coordonnées écran d'un contrôle
    Par paradise dans le forum Langage
    Réponses: 4
    Dernier message: 23/11/2005, 17h22

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