Registriert: Mi Dez 15, 2004 20:36 Beiträge: 454 Wohnort: Wien, Österreich
In einem Tutorial über Objektselektion habe ich gelesen dass man immer als zuerst glPushName(0) aufrufen muss damit die Dinge auch func. Das mache ich nicht und habe keine Problemme mit der Selektion, alles klappt.
Also, ist es ein Fehler in Tutorial oder bei mir ?
und Noch ein Tipp für diejenigen die es nicht wissen:
Wie kann man sowenig wie möglich FPS verliehren wenn man auch Mouse ünerstüztung braucht, d.h., die Objekte werden mit dem Maus selektiert ? Dabei MUSS man bekannterwiese 2 "Renderpasses" machen. Einmal für die Ausgabe, und einmal fur die Selektionpuffen (oder liege ich falsch?) .
Also benutzen Sie nicht dieselbe Render procedure für Selektiospuffer, die sie beim normalen Render tun, sondern schreiben sie eine zweite ("optimierte") die nur rendert was eingentlich erkannt sein sollte.schalten sie dabei z.B. texturen aus.
Verstehen sie? Mein deutsch ist nicht so gut , aber nun ja....
Registriert: Di Dez 02, 2003 12:47 Beiträge: 300 Wohnort: Marburg
Hm, ohne
Code:
glPushName(0)
funktioniert die Selection bei mir nicht.
Aber ich habe noch einen Vorschlag zur Optimierung:
Ich benutze, wenn ich modelle mit vielen Polygonen selectieren will, extra low-poly-modelle zur Selection, dass kann je nach modellgröße ne menge Performance bringen... (Naja da wäre sicherlich der ein oder andere auch drauf gekommen)
P.S.: Ich finde an deinem Deutsch ist nichts auszusetzen Meine Rechtschreibung dagegen... Naja LRS
_________________ Nothing, oh sweet nothing,
today we are doing nothing at all...
http://www.geo-progs.de
Registriert: Mi Dez 15, 2004 20:36 Beiträge: 454 Wohnort: Wien, Österreich
ich werde dir mal mein selektionscode posten sobald ich es habe (ich bin nicht zu hause...), weil wenn ich es so mache, mit glPushName(0) dann ist das ergebniss immer 0....
und noch eine optimirungsvorschlag ....
wenn man eine scene rendert (mit objekten und texturen) und dabei die ganze bildschirm bedeckt wird, braucht man nicht mehr GL_COLOR_BUFFER_BIT bei glClear procedure....das bringt ein "stuckrl" mehr von FPS
Registriert: Di Nov 26, 2002 22:12 Beiträge: 259 Wohnort: Dresden
Auf den Selektionsmodus der OpenGL sollte man möglichst verzichten, wenn einem die Geometrie bekannt ist. Stattdessen sollte man prüfen ob die Gerade zwischen Near- und Far-Clipping-Plane an der Mausposition eines der Polygone eines Objektes schneidet.
Diese Methode ist sehr viel schneller und lässt jede Menge Platz für Optimierung, denn man kann auch Raumunterteilungsmethoden wie z.B. Octrees in die Selektion mit einführen. Auch kann man zuerst auf einen Schnittpunkt mit dem Objekt umschließenden Volumen prüfen um die Selektion noch effizienter zu gestalten.
_________________ Nichts auf der Welt ist so gerecht verteilt wie der Verstand. Denn jederman ist überzeugt, dass er genug davon habe.
Rene Descartes, frz. Mathematiker u. Philosoph, 1596-1650
Von der hierachischen Struktur wie z.B. Octree kann man auch bei der Selektion Gebrauch machen, wenn man einfach Frustum Culling verwendet. Die Seitenflächen werden ja extra so beschränkt, dass sie dem Selectionsrechteck, dass man bei gluPickMatrix angibt, entsprechen. Langsamer wird es wohl trotzdem sein, aber dann eher um einen konstanten Faktor. Alle Tests gegen das Frustum entsprechen ungefähr Tests gegen den Strahl.
Bei glLoadName kann man auch direkt das Objekt bzw. den Zeiger auf den Stack laden anstelle einer Zahl. Dann spart man sich die Zuordnung. Geht unter .Net leider nicht mehr so schön.
Selektion ist bei VBO's sehr langsam.
Im RedBook steht auch sehr interresantes zum Thema Selection & Feedback.
Speziell zum Thema Picking werden auch alternative Methoden gezeigt, wie zum Beispiel jedem Objekt eine andere Farbe zu geben und diese Farbe dann auszuwerten.
_________________ "Für kein Tier wird so viel gearbeitet wie für die Katz'."
Mitglieder in diesem Forum: Bing [Bot] und 13 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.