C# et Direct3D : sélection d'un objet

cs_cazaux Messages postés 5 Date d'inscription samedi 9 août 2003 Statut Membre Dernière intervention 16 janvier 2004 - 20 nov. 2003 à 20:02
gg00xiv Messages postés 656 Date d'inscription mercredi 22 août 2001 Statut Membre Dernière intervention 11 mars 2005 - 21 nov. 2003 à 21:46
Je cherche à savoir comment dans un univer 3D on peut déterminer quel objet (ou face) se trouve sous le clique de la sourie.

Le langage que j'utilise est C# avec DirectX (sous Visual studio .net).

Jean
A voir également:

3 réponses

gg00xiv Messages postés 656 Date d'inscription mercredi 22 août 2001 Statut Membre Dernière intervention 11 mars 2005 13
21 nov. 2003 à 08:12
Si seulement ca pouvait avoir un rapport avec C# ....
Ca serait tellement plus simple.

Si c'est compliqué, c'est que ce n'est pas du .NET le sujet de ta question :)

[Membre du laboratoire .NET de SUPINFO]
0
cs_cazaux Messages postés 5 Date d'inscription samedi 9 août 2003 Statut Membre Dernière intervention 16 janvier 2004
21 nov. 2003 à 14:25
Pour te répondre poliment, si ca n'était pas un tant soit peu compliqué je ne me fatiguerais pas à écrire sur ce forum...

Si j'ai pris la peine de poser la question c'est que je sais que c'est surement faisable car ce genre d'instructions existent en C++. C# étant plus récent il doit surement posséder le même type de méthodes.

Voici un exemple en C++ de ce que j'aimerais réaliser en C# :
// Set up the cursor
POINT ptCursor;
GetCursorPos( &ptCursor );
ScreenToClient(hWnd, &ptCursor);
Espace.Render_Device->SetCursorPosition(ptCursor.x, ptCursor.y, 0L);

char buffer[50];
_gcvt(ptCursor.x, 7, buffer);
SetDlgItemText(Espace.Outil_hWnd, IDC_EDIT5, buffer);

// Check for picked triangles
Espace.Appareil_Select = -1;
int i = 0;
while(Espace.Appareils[i].Mesh != NULL)
{
   if(Espace.Appareil_Selectionne(i))
      Espace.Appareil_Select = i;
   i++;
}
Espace.Appareil_Affiche(Espace.Appareil_Select);

Ce code permet de déterminer qu'elles sont les faces qui se trouvent sous le curseur de la sourie.

je pense que l'instruction :
Espace.Render_Device->SetCursorPosition(ptCursor.x, ptCursor.y, 0L);

permet de projetter en 3D les coordonnées 2D du curseur. Une tel méthode doit exister en C#. Si jamais vous avez un bout de code C# qui reproduit (de prés ou de loin) le code C++ ci-dessu n'ésitait pas à me le faire parvenir.

Merci d'avance...

Jean
0
gg00xiv Messages postés 656 Date d'inscription mercredi 22 août 2001 Statut Membre Dernière intervention 11 mars 2005 13
21 nov. 2003 à 21:46
Tu devrais matter du côté du DirectX Managed, tu peux le télécharger sur le site de microsoft.

[Membre du laboratoire .NET de SUPINFO]
0
Rejoignez-nous