Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 18, 2025 07:54

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 11 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Selection mit VBOs
BeitragVerfasst: Do Jun 30, 2005 11:23 
Offline
DGL Member

Registriert: Fr Jun 18, 2004 08:19
Beiträge: 14
Hallo,

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...

MfG
cHicHo


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jun 30, 2005 18:28 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
Dann darfst du eben die Objekte nur einzeln zeichnen. Selection mit VBOs ist aber sowieso auch extrem langsam und daher unbrauchbar.


Zuletzt geändert von LarsMiddendorf am Do Jun 30, 2005 21:20, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jun 30, 2005 21:09 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 14, 2004 18:56
Beiträge: 804
Wohnort: GER/OBB/TÖL-WOR/Greiling
sollte man da nciht den weg über gluProject gehen?

_________________
Bild

"User Error. Replace User and hit Continue."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jul 01, 2005 11:12 
Offline
DGL Member

Registriert: Fr Jun 18, 2004 08:19
Beiträge: 14
@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...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jul 01, 2005 12:22 
Offline
DGL Member
Benutzeravatar

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.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jul 01, 2005 16:48 
Offline
DGL Member
Benutzeravatar

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?

_________________
Bild

"User Error. Replace User and hit Continue."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jul 01, 2005 18:23 
Offline
Forenkatze
Benutzeravatar

Registriert: Mi Okt 22, 2003 18:30
Beiträge: 1945
Wohnort: Närnberch
Programmiersprache: Scala, Java, C*
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'."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jul 03, 2005 22:53 
Offline
DGL Member

Registriert: Fr Jun 18, 2004 08:19
Beiträge: 14
Danke für eure Antworten.

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...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jul 04, 2005 07:54 
Offline
DGL Member
Benutzeravatar

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. ;-)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jul 05, 2005 14:06 
Offline
Forenkatze
Benutzeravatar

Registriert: Mi Okt 22, 2003 18:30
Beiträge: 1945
Wohnort: Närnberch
Programmiersprache: Scala, Java, C*
@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'."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jul 05, 2005 16:16 
Offline
DGL Member
Benutzeravatar

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 ;)

_________________
Bild

"User Error. Replace User and hit Continue."


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 11 Beiträge ] 
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

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.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.009s | 15 Queries | GZIP : On ]