Ich rendere ein Terrain auf dem verschiedene Objekte stehen. Diese will ich mit einem Selektionsrahmen auswählen. Das funktioniert soweit auch ganz gut, allerdings will ich, dass, wenn die Objekte durch das Terrain verdeckt werden, das auch bei der Selektion berücksichtigt wird. Das Problem liegt jetzt allerdings dabei, dass die Selektion nicht funktioniert, wenn das Objekt im Selektionsrahmen halb verdeckt ist (Beispiel: Screenshot), weil ja der niedrigste Z-Wert des Terrains dann immer kleiner ist als der des Objekts. Gibts da irgendeine Möglichkeit, das leicht und elegant zu umgehen?
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Ich würde das mit einem NV_Occlusion_Query (s.Tutorial auf dieser Seite) machen, damit überprüfts du einfach, wie viele Pixel des Objekts in dem Auswahlrahmen sichtbar sind. Dann könntest du auch überlegen, Objekte von denen nur 1 Pixel sichtbar ist nicht auszuwählen (der User bemerkt den Pixel vermutlich nicht und würde irritiert werden).
mfG
Tomok
P.S: Netter Screenshot
_________________ Bevor du definierst, was etwas ist, versichere dich seiner Existenz.
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7810 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Ich denke dass Problem tritt später auch mit völlig verdeckten Einheiten auf, die t.B. hinter diesem Turm stehen könnten. Dann würde diese Lösung nichts nutzen.
Ne Möglichkeit wäre die Namensvergabe in bestimmte Bahnen zu lenken. z.B.
Namen von 1..100 für Gebäude
Namen von 101..1000 für Einheiten
Namen von 1001..10000 für die Oberfläche(oder was auch immer)
Da dir alle Ergebnisse des Selection zurückgelifert werden kannst du die Ergebnisse nach bestimmten kriterien sortieren. z.B.
Ignoriere immer den Boden,
Wähle bevorzugt Gebäude,
etc.
Durch die Einteilung der OpenGL Namen sollte das leicht Möglich sein.
_________________ Blog: kevin-fleischer.de und fbaingermany.com
@Tomok - Auf die Idee bin ich auch schon gekommen, mit Occlusion Queries und Scissor Test, aber ich wollte sicherheitshalber noch nach einer eleganteren Lösung fragen
Tomok hat geschrieben:
P.S: Netter Screenshot
Danke
@Flash - wenn ich das richtig verstanden hab, dann liegt darin nicht das Problem. Ich vergebe bereits dem Terrain den Namen "0" und den anderen Objekten fortlaufende Nummern, aber ich möchte verhindern, dass, wenn der Benutzer flach auf die Landschaft schaut, einen Rahmen zieht um ein Gebäude auszuwählen, auch welche auswählt, die eigentlich gar nicht zu sehen sind, weil sie vom Boden verdeckt werden (z.B. hinter einem Berg).
Ich weiß ja nicht, wie dein Programm so aufgebau ist.. aber kannst du nicht einfach bei dem rendern für die Selection dein Terrain nicht mitrendern?
Oder nur nicht mitrendern, wenn der Bediener ein Auswahl-Rahmen zieht?
Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.