2009-08-19 12 views
0

Ich möchte berechnen, auf welches Gesicht auf einem Würfel geklickt wurde. Ich habe die Maus in 3D, und ich kann Dinge in 3D an der Mausposition zeichnen.Das Gesicht eines Würfels erhalten

Alles, was ich jetzt tun muss, ist zu berechnen, WAS Gesicht eines Würfels berührt wird.

EG. Ich habe eine Funktion, wenn ich die Größe, Position und Mausposition an sie übergebe, gibt sie das Gesicht zurück. Oben, unten, links, rechts, vorne, hinten.

Klingt einfach, aber ich habe nicht die nebeligste.

Dank alle, SilentC

Antwort

1

nicht sicher, was API Sie verwenden, aber OpenGL hat eine selection API, die dies für Sie tut

1

Sie müssen nur eine line plane intersection für jede Seite des Würfels berechnen mit die Linie, die durch den Standort der Kamera und die Mausposition in der Ansichtsebene definiert wird. Werfen Sie alle Schnittpunkte aus, die sich in der Ebene befinden, aber nicht auf der Fläche des Würfels, und wählen Sie den nächsten aus.

Sie können auch Linien-Dreieck-Kreuzungen verwenden, wenn Sie den Würfel als zwölf Trinagles darstellen. Aber in beiden Fällen müssen Sie viel mehr Informationen für eine spezifischere Antwort liefern.

+0

Also die Zeile, die definiert wird, wäre von der Kamera zur Maus, richtig? –

+0

Ich nehme auch an, dass ich die Rotation kompensieren müsste, oder? –

+0

Die Linie von der Kamera ** über ** die Maus bis unendlich schneidet eine oder mehrere Flächen (normalerweise zwei, wenn nur ein einziger Würfel vorhanden ist). Ignoriere degenerierte Fälle wie Kanten, Scheitelpunkte und alle Flächen, die parallel zur Linie liegen. Es könnte sich lohnen, nach hinten gerichtete Gesichter auszusondern. Der Benutzer möchte mit Sicherheit das nächste Gesicht, aber Sie möchten vielleicht eine Affordanz anbieten, um zwischen den Gesichtern zu wählen, so dass der Benutzer ein verborgenes Objekt auswählen kann, wenn er möchte. – RBerteig