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:
Mais bon, ça marche pas du tout. Quelqu'un peut m'éclairer un peu?
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)
Merci
Partager