Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
17.06.2003, 20:18
the_viking



Tach liebe TheWall-User ;)

Also ich hab da ein kleines Problem mit OpenGL:

Ich möchte gerne die 3D-Position eines Mausklicks auf die Geometry berechnen, allerdings möchte ich das gerne OpenGL überlassen :)

Laut div. Tutorials gibt es die Möglichkeit, mit dem glSelectBuffer den zuletzt gerenderten glName auszumachen. Nun gibt es da afaik noch den glFeedbackBuffer, der detailliertere Informationen zum "Angeklickten" Polygon liefert. Allerdings hab ich keine Ahnung, wie man den Feedback buffer bedient!!

Vielleicht können mir da ein paar nette Leute Helfen! Das wäre wirklich nett von euch!!

Mfg the_viking

--

thx, cu, MfG the_viking

(( My =]=H=O=M=E=> Page! ))
Coder bei Brainshock-Interactive und bei Z-Software
My ICQ: #160959446

zum Seitenanfang zum Seitenende Profil || Suche
001
17.06.2003, 21:35
shoo.



tutorials

--

zum Seitenanfang zum Seitenende Profil || Suche
002
17.06.2003, 22:20
the_viking



hrhr ;)

Da gibts noch gluUnProject()... aber da hab ich keine Ahnung wie ich an die Z-Value kommen sollte (z-buffer? wie kann ich einen pixel aus dem z-buffer lesen??)

bei google findet man afaik net gescheites :(

--

thx, cu, MfG the_viking

(( My =]=H=O=M=E=> Page! ))
Coder bei Brainshock-Interactive und bei Z-Software
My ICQ: #160959446


Dieser Beitrag wurde am 17.06.2003 um 22:25 von the_viking bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
003
18.06.2003, 12:34
Prefect



Meh... es ist immer gut, mit dem OpenGL-Standard vertraut zu sein - oder ihn einfach nur zu lesen. Im Inhaltsverzeichnis findet sich Sektion 4.3: Drawing, Reading and Copying Pixels. Wenn man etwas weiter liest steht da Zeug über ReadPixels(), und dann "If the format is DEPTH_COMPONENT, then values are obtained from the depth buffer.". Wenn man nun den Z-Wert an der Mausposition ermittelt kann man sich daraus natürlich die 3D-Position errechnen.
So einfach kann's gehen...

Was den Feedback- und Select-Mode von OpenGL angeht solltest du am besten auch einfach den OpenGL-Standard konsultieren und dann ausprobieren, was passiert.

Übrigens ist ein anderer Ansatz zur "Auswahl" von Polygonen über OpenGL folgender: Du renderst die Szene ganz normal, jedoch soll jedes Polygon eine einheitliche und eindeutige Farbe haben (keinerlei Schattierungen oder so). Wenn du dann die Farben aus dem Framebuffer ausliest weißt du, welches Polygon an welchem Pixel liegt.

cu,
Prefect

--

Widelands - Gemütliche Aufbaustrategie, Free Software
Noch ein Blog - Lerne, wie die Welt wirklich ist, aber vergiss niemals, wie sie sein sollte.

zum Seitenanfang zum Seitenende Profil || Suche
004
18.06.2003, 13:44
Onkel Dittmeyer



Zitat:
Du renderst die Szene ganz normal, jedoch soll jedes Polygon eine einheitliche und eindeutige Farbe haben (keinerlei Schattierungen oder so).
Naja, ich nehme mal an dass das was für einen Engine Editor werden soll und deshalb hat man wahrscheinlich auch texturierte Polygone...

--

zum Seitenanfang zum Seitenende Profil || Suche
005
18.06.2003, 19:45
the_viking



@ Prefect: Den ansatz mit den farbigen polys hatte ich auch schonmal ;) aber damals wusste ich nicht, wie ich das realisieren sollte...
Heute nehm ich den Select Buffer und render dafür die Scene ohne texturen, einfach nur weiße Trias. Das ist halt schneller ;)

Danke für den vermerk auf ReadPixels! Ist mir zuerst gar nicht eingefallen!!

@Dittmeyer: Man rendert die Scene ein 2. Mal in den Backbuffer :) dann sieht man das auch nicht... Es muss ja nur gemacht werden, wenn geklickt wird!

--

thx, cu, MfG the_viking

(( My =]=H=O=M=E=> Page! ))
Coder bei Brainshock-Interactive und bei Z-Software
My ICQ: #160959446

zum Seitenanfang zum Seitenende Profil || Suche
006
19.06.2003, 12:36
Prefect



Wow, ist das mit SelectBuffer tatsächlich schneller? Ich wäre jetzt ehrlich gesagt davon ausgegangen, dass der SelectBuffer in einen unoptimierten Treiberbereich fällt und extremst langsam ist. Immerhin verwendet Quake meines Wissens keinen SelectBuffer. Aber anscheinend bin ich doch etwas zu pessimistisch, was die Treiberautoren angeht ;)

cu,
Prefect

--

Widelands - Gemütliche Aufbaustrategie, Free Software
Noch ein Blog - Lerne, wie die Welt wirklich ist, aber vergiss niemals, wie sie sein sollte.


Dieser Beitrag wurde am 19.06.2003 um 12:37 von Prefect bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
007
20.06.2003, 18:00
the_viking



Wofür sollte quake den select-buffer nutzen O_o ?

Also ich hab jetzt das Problem, das das mit gluUnProject zwar klappt, aber irgendwie erzeugt der falsche Werte!

Also ich hab in der funktion, die den Mausklick auswertet, erstmal alle Matrices sowie color&depthbufferr geNULLt und danach neu eingestellt, so wie ich es auch in meiner Render-Funktion mache!
Aber es scheint irgendwie nicht zu funzen :?
Ich geb jetzt mal als Referenz http://openglforums.com/forums/viewtopic.php?t=397 an.
Komisch, ich habs (fast, aufgrund anderer initialisierung) genauso gemacht!

--

thx, cu, MfG the_viking

(( My =]=H=O=M=E=> Page! ))
Coder bei Brainshock-Interactive und bei Z-Software
My ICQ: #160959446

zum Seitenanfang zum Seitenende Profil || Suche
008
22.06.2003, 21:04
Kriz



Zitat:
shoo. postete
tutorials
Sag mal Kollege, bist du blind? Er hat geschrieben, daß er bereits in diversen Tutorials nachgeschaut hat! Watt soll datt?

--

K:R-I)Z++
"CSS ist cascading style sheets. Und nicht so'n Ranzspiel." - dp
In memory of Voice († 2005/03/30)

zum Seitenanfang zum Seitenende Profil || Suche
009
24.06.2003, 22:20
blair



das is leet kriz, es soll leute geben, die kriegen keinen hoch, wenn sie pro tag nich mindstens 5 google links posten...

--

because our freedom sits at the end of a gun
we're all here getting beat up and held back
we're all here digging knives from our backs

zum Seitenanfang zum Seitenende Profil || Suche