Hallo zusammen, ich recherchiere nach einer Art Widget (vorzugsweise QT), in das einfache 3D-Objekte geladen werden können und das idealerweise die Funktionen zum Auswählen von Flächen mit sich bringt. Zunächst geht es um einen Würfel, der mit der Maus frei gedreht werden kann und wo der Benutzer auf eine der sechs Flächen klickt. Ich hänge an dem Punkt herauszufinden, auf welche er den klickt: Klickereigneisse auf Flächen in einer 2D-Umgebung sind mit QT komfortabel mit einer Hand voll Funktionen gelöst, für 3D finde in der Doku kein Equivalent dazu (bin mir nicht sicher ob soetwas denn exitiert). Wie löst man das in einer 3D-Darstellung? Stephan P.S.: Ich habe mit QT bereits etwas Erfahrung, bin damit aber nicht "verheiratet".
Das ist weniger ein Qt- denn ein OpenGL-Problem. OpenGL kennt einen GL_SELECT render mode, bei dem die Grafikpipeline durchlaufen wird, ohne wirklich etwas auf dem Bildschirm auszugeben. Stattdessen werden die "gezeichneten" Primitive mit 2D (Maus-) Koordinaten verglichen und in einem Hitbuffer gespeichert (s. glSelectBuffer() und glRenderMode(GL_SELECT)). Anschließend schaltest Du wieder in den "normalen" GL_RENDER mode zurück und holst dir die gepickten Primitive aus dem Hit Buffer. Stattdessen kann man die Geschichte aber auch "ganz zu Fuß" angehen: aus den Mauskoordinaten und dem Blickvektor eine Linie konstruieren und potentielle Schnittpunkte mit deinem Modell berechnen. Der "erste" (naheliegendste) Schnittpunkt ist das angeklickte Objekt.
Hallo Marcus, vielen Dank, mit den Schlagwörtern komme ich weiter! Dann ist es logisch, das QT diese Funktionen nicht (direkt) enthält. Gruß Stephan
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.