Frage zu DirectX9

the edge

Grünschnabel
Hallo Leute.

Ich hab ne Frage zu DirectX9.
Ich zeichne mir zwei Würfel, wobei ich einen von beiden mit der Maus bewegen kann.
Nun zu meinem Problem: Ich möchte mit der Maus einen Würfel selektieren und ihn verschieben können. Gib es eine Funktion in DirectX9 mit der ich ein dargestelltes Objekt (mit der Maus) selektieren kann, wenn ja wie heißt sie?
Bis jetzt kann ich immer nur einen Würfel oder beide bewegen, aber nicht zwischen ihnen hin und her schalten...
Schon einmal Danke für Eure Antworten...

Mfg

the edge
 
Eine Selektion an sich gibt es nicht. Da musst du selbst Hand anlegen:

Mit D3DXVec3Unproject kannst du die Maus-Position in den Object-Space projizieren. Beachte dabei, dass dieselben Matrizen eingesetzt werden, die für das Objekt verwendet wurden (World-Matrix).

Ruf D3DXVec3Unproject zwei mal auf, mit zwei Ausgangsvektoren MausX,MausY, 0 bzw. 1.
Dadurch erhältst du zwei Punkte im 3d-Raum. Bei diesen beiden Punkten sind X und Y NICHT gleich. Das ist richtig so.

Diese beiden Punkte stellen eine Linie dar (die Maus zeigt ja nicht auf einen einzelnen Punkt im 3d-Raum, sondern auf eine ganze Linie von Punkten).
Mit dieser Linie musst du jetzt Schnittpunkte mit den Bounding Boxes oder den tatsächlichen Triangles berechnen. Der Schnittpunkt, der am nächsten zur Kamera liegt, ist der entscheidende Punkt. Speichere also bei der Berechnung alle gefundenen Schnittpunkte bzw. merk dir den, der am nächsten zur Kamera liegt. Es könnte ja sein, dass beide Objekte hintereinander liegen.

"Schon" hast du dein Objekt gefunden!
 
Zurück