J'ai une structure dessinée en 2D avec Direct3D. Le support pour mon device c'est un Panel. Je voudrais juste convertir les coordonnées de mon click de souris en coordonnées de mon monde. J'ai fait de quoi, qui me semble logique, mais ça ne fonctionne pas du tout... Voici:

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
Dim wScale, hScale As Double
Dim adjacent As Double
Dim transX, transY As Double
 
'distance entre la caméra et le plan affiché
adjacent = Math.Abs(camOrigin.Z - camLookAt.Z)
 
'échelle horizontale monde/support
wScale = Math.Tan(camAngle) * adjacent * 2 / DP.Width
 
'échelle verticale proportionnelle
hScale = wScale / DP.Width * DP.Height
 
'Transfert des coordonnée X,Y cliqués dans le monde
'Translation vers le centre et mise à l'échelle
transX = (Click.X - DP.Width / 2) * wScale
transY = (DP.Height / 2 - Click.Y) * hScale
 
Dim coord As New Vector3(transX, transY, 0)
 
'Applique la matrice transform.world aux coordonnées
coord.TransformCoordinate(D3DDev.Transform.World)
 
'Affiche les coordonnées transformées finales
Msgbox(coord.X & " " & coord.Y)
Mais bon, ça marche pas du tout. Quelqu'un peut m'éclairer un peu?
Merci