Windows Form und DirectX Form verknüpfen?

Hallo,
danke für den Quellcode.
Irgentwie funktioniert das alles bei mir nicht so ganz.
Ich habe zum Testen den Mauscursor auf die Sanduhr gestellt, wenn ich mein Mesh treffe und wenn nicht, soll das Fragezeichen als Cursor erscheinen.
Nun zeigt er sehr oft das Fragezeichen, wenn ich auf Teilen des Meshes bin.

Wie sieht das bei dir aus, wenn dein Mesh ein großes Loch hat oder wenn du über die Kanten des Meshes fährst? Erkennt er das Mesh dann immer? Achja, das DirectX-Panel ist kleiner und in der oberen linken Ecke. Aber das sollte ja funktionieren?!

Nachtrag: Ich habe mal ein einfaches x-File aus Cinema4D genommen. Der Quellcode funktioniert, jedoch darf ich mein Mesh nicht verschieben oder drehen. Dann erkennt er den Mesh an falschen Orten bzw. gar nicht. Jemand ne Idee?

Gruß,
xai
 
Zuletzt bearbeitet:
Hallo, kann dir da jetzt auch nicht 100% weiterhelfen, aber:

1.) wenn du ein Panel hast, dann musst du vom Panel das Mousedown Ereignis nehmen und
2.) wenn du z.B. mehrere Meshes renderst, und du die verschieden transformierst, dann musst du bei der Berechnung von matInvers immer die WorldTransformation des entsprechenden Meshes nehmen.

Habe dieses Picking bis jetzt nur mit StandardMeshes ausprobiert, und da hats eigentlich super funktioniert, mit .x-files muss ich es erst noch testen...

MFG Willi
 
Ok,
jetzt geht es wunderbar.

if(myMesh.getRay(e.X, e.Y, Matrix.Multiply(myMesh_Matrix, device.Transform.World)))

Hatte es vorhin schonmal versucht, hatte da aber vergessen, Multiply mit der device.Transform.World zu berechnen.

Alles klar.
Danke

xai
 
Zurück