Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1093 connectés 

  FORUM HardWare.fr
  Programmation

  [D3D] Cliquer sur un objet

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[D3D] Cliquer sur un objet

n°83900
Alload
Posté le 22-12-2001 à 23:19:09  profilanswer
 

J'ai essayé d'implémenter une fonction qui en prenant les coordonnées du curseur quand on clique sur la fenêtre, regardait si on cliquait sur un objet ou pas. Mais bon, ça marche pas et je pige pas pourquoi.
 
Donc, j'ai fais des bounding boxs dont je transforme les coordonnées avec la fonction D3DXVec3TransformCoord() en utilisant la matrice WORLD pour l'objet.
 
Le code de ma fonction:
 
bool CObject::ClickTouchOrNot(short x, short y) //x et y coords du curseur
{
 D3DXMATRIX mProjection, mView;
 g_lpD3DDevice->GetTransform(D3DTS_PROJECTION, &mProjection);
 g_lpD3DDevice->GetTransform(D3DTS_VIEW, &mView);
 D3DXMatrixInverse(&mProjection, NULL, &mProjection);
 D3DXMatrixInverse(&mView, NULL, &mView);
 
 D3DXVECTOR3 vPosition = D3DXVECTOR3(x, y, 0);
 D3DXVECTOR3 vDirection = D3DXVECTOR3(0, 0, 1);
 
 D3DXVec3TransformCoord(&vPosition, &vPosition, &mProjection);
 D3DXVec3TransformCoord(&vDirection, &vDirection, &mProjection);
 D3DXVec3TransformCoord(&vPosition, &vPosition, &mView);
 D3DXVec3TransformCoord(&vDirection, &vDirection, &mView);
 
 bool touch = D3DXBoxBoundProbe( &m_vBoundingBoxMin, &m_vBoundingBoxMax,
         &vPosition, &vDirection);
 
 return touch;
}

mood
Publicité
Posté le 22-12-2001 à 23:19:09  profilanswer
 

n°83921
youdontcar​e
Posté le 23-12-2001 à 03:14:36  profilanswer
 

une matrice de projection n'est pas inversible. comment veux-tu 'recréer' une nouvelle coordonnée à partir d'une projection sur un plan ?  
 
méthode standard : construire un rayon dans le repère caméra. tu as le point d'origine, la distance au plan de projection, tu peux faire ça facilement. il doit même y avoir une méthode dans d3dx pour. (un rayon est un point + un vecteur de direction)
 
ensuite tu fais ta cuisine comme tu veux, ie tu transformes le rayon et la bbox dans le repère world et tu fais le test là, ou tu transformes le rayon dans le repère local de la bbox, etc.

n°84277
LeGreg
Posté le 25-12-2001 à 21:19:54  profilanswer
 

j'crois que tu voulais aller voir
le sample "pick poly" du DXSDK.
 
t'as juste du te perdre en route
mais heureusement de bonnes ames
te remettent sur le droit chemin ;).
 
A+
LEGREG


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [D3D] Cliquer sur un objet

 

Sujets relatifs
[D3D] Technique[D3D] Problème avec les matériaux
[vb] objet dao: base de donnéeforum php objet?
[D3D] Bouger la caméra[D3D] Comment utiliser le Z Buffer?
D3D : y a ti bien qqun ki va m'aider .[D3D] Problème avec les matériaux
[D3D] Liste de sommets normales ou indexées?Heeelppppp me D3D !!
Plus de sujets relatifs à : [D3D] Cliquer sur un objet


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR