hat jemand eine Idee und kann mir sagen wie ich Selection mit VBOs/Vertex Arrays realisieren kann. Im Endeffekt ist es ja nichts anderes, als vorher, nur wenn ich alle Elemente am Stück zeichne, krieg ich kein glLoadName dazwischen gequetscht. Eine Möglichkeit wäre es vllt die Elemente des Arrays einzeln zu zeichnen, aber vielleicht weiß jemand ja eine andere Lösung...
@luketheduke
Kannst du den Sinn von gluProject mal kurz anreißen?
Nochmal zur Ergänzung. Ich rendere ein Terrain mit Felder über ein VBO und möchte nun auf diesem ein Feld selektieren. Vielleicht gibt es ja auch andere Wege für die Selektion, als die klassische Variante...
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
gluProjekt definition aus dem Wiki Ich verstehe allerdings nicht so ganz wie einem das helfen soll. Damit würde man ja eher ein Näherungsverfahren erstellen können als eine Selection.
Du musst ja auch nur die VBO's trennen wenn du dich in der Selection befindest. Wenn du dann deine Selectionabfragen optimierst dürftest du schon einiges rausholen können. Also nur eine neue Selection anwerfen wenn sie auch benötigt wird.
Evtl könntest du dein VBO auch mit einem Trick rendern. Und zwar je nachdem was du für Flächen in dem VBO hat könntest du jeder eine Fläche eine eigenschtändige Farbe geben. Einfach hochzählen genügt auch. Und ohne Licht könntest du das Pixel auslesen und so hättest du auch herausgefunden welche Fläche sich wo befindet. Und du könntest das VBO am Stück rendern. Würde allerdings bedeuten, dass deine Flächen im VBO getrennt vorliegen müssen. Also kein TRIANGLE_STRIP oder so. Und du müsstest Farben mit ins VBO packen. Was fast einer Verdoppelung des Speicherverbrauches mit sich führt.
Ich würde aber mal schauen ob du nicht so gut wie Möglich das VBO einschränken kannst.
Registriert: Fr Mai 14, 2004 18:56 Beiträge: 804 Wohnort: GER/OBB/TÖL-WOR/Greiling
@Lossy: naja, glu(un)Project liefert einem doch den 3d-punkt, den man angeklickt bzw. per 2d übergeben hat. damit ist es doch möglich, rauszubekommen, welches objekt angeklickt wurde, oder?
glUnProject liefert einem einen 3D-Punkt, während glProject einen 2D-Punkt zurückliefert.
Solange das Terrain aus einer Heightmap o.ä. erstellt wurde, sollte glUnProject bestens funktionieren. Du kannst ja dann aus dem gelieferten 3D-Punkt feststellen, über welchem Feld der Punkt ist.
_________________ "Für kein Tier wird so viel gearbeitet wie für die Katz'."
Ich habe jetzt erstmal gluUnProject genommen und bekomme dann den Punkt des selektierten Pixels in 3D-Koordinaten. Daraus kann ich dann mein Feld berechnen. Der Selektions-Modus sieht zur Zeit so aus, dass er erst die Map rendert, dann den Pixel prüft, dann die Models rendert etc. Ist leider etwas umständlich... Falls jemand noch eine andere Idee oder einen Tipp zur Selection hat, würde ich mich freuen...
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Ich denke ich spreche auch für die Anderen wenn ich dir sage, dass es (vielleicht auch mangels Kaffee) an der nötigen bildlichen Vorstellung mangelt. Leider ist mir nicht so ganz klar was du meinst und was du haben möchtest. Wir werden dir gerne weiterhelfen nur dazu müssten wir es genau verstehen. Bilder helfe dabei sehr.
@luketheduke:
Es ist mir ein Rätsel, wie man wissen soll, welches Objekt angeklickt wurde, wenn man die Position des Klicks hat. Was evtl. funktionieren könnte:
3D-Klickpunkt durch glUnproject bekommen
Diesen Punkt gegen die Bounding Boxen aller Objekte testen
Vielleicht ist das sogar schneller als die Selektion. Dumm ist es nur, wenn du an eine Stelle geklickt hast, die genau auf der Boundingbox liegt...
@lossy eX:
Ich mag keinen Kaffee ... Hier ist mein Interpretationsansatz:
Zitat:
Ich habe jetzt erstmal gluUnProject genommen und bekomme dann den Punkt des selektierten Pixels in 3D-Koordinaten.
Der selektierte Pixel dürfte die 2D-Position des Cursors sein. Mittels glUnProject bekommt man die 3D-Koordinaten des Cursors...
Zitat:
Daraus kann ich dann mein Feld berechnen.
Sobald man die 3D-Koordinaten des Mauscursors hat (siehe oben), sollte das nicht weiter schwer sein...
Zitat:
Der Selektions-Modus sieht zur Zeit so aus, dass er erst die Map rendert, dann den Pixel prüft, dann die Models rendert etc.
Hier scheint nicht der OpenGL-Selektionsmodus gemeint zu sein, sondern der von cHicHo...
Zitat:
Ist leider etwas umständlich... Falls jemand noch eine andere Idee oder einen Tipp zur Selection hat, würde ich mich freuen...
Tipps zur Selection gibt's auch noch im Redbook.
_________________ "Für kein Tier wird so viel gearbeitet wie für die Katz'."
Registriert: Fr Mai 14, 2004 18:56 Beiträge: 804 Wohnort: GER/OBB/TÖL-WOR/Greiling
Frase hat geschrieben:
@luketheduke: Es ist mir ein Rätsel, wie man wissen soll, welches Objekt angeklickt wurde, wenn man die Position des Klicks hat. Was evtl. funktionieren könnte:
3D-Klickpunkt durch glUnproject bekommen
Diesen Punkt gegen die Bounding Boxen aller Objekte testen
genau das meinte ich. man weiss ja im allgemeinen die koordinaten u. dimensionen der eigenen objekte in der szene
Mitglieder in diesem Forum: 0 Mitglieder und 6 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.