# Erkennen auf welche Objekte gezeigt wird in JoGL



## Paulere (3. Mai 2010)

Hallo,

ich suche nun schon eine ganze Weile, kann aber bisher nichts finden (obwohl ich der Meinung bin das es dazu etwas geben müsste).
Ich bin noch nicht so sehr lange mit OpenGL unterwegs...

Wie sich erahnen lässt geht es um JoGL. Ich benutze noch nicht die 2.0, also die 1.1.1a

Kann mir jemand sagen ob und wenn ja, wie es geht das ich erkennen kann auf welches Objekt gerade der Mauszeiger zeigt? Ich habe also ein paar Objekte, diese ganze Szene kann rotiert werden...vergrößert und verkleinert und ich kann mich bewegen. Somit überlagern sich recht wahrscheinlich einige meiner Objekte. Es wird also schwer zu sagen welches Objekt sich gerade wo befindet. Ich will nun wissen wenn ich mit meiner Maus irgendwo hinklicke ob ich auf ein Objekt klicke oder auf den Hintergrund...noch besser wäre es zu wissen auf welches Objekt ich klicke. (Wenn es nun noch möglich wäre zu sagen wo genau ich auf diesem Objekt geklickt habe wäre das Perfekt)

Ich glaube mal gehört zu haben das es dafür etwas gibt...


Schonmal vielen Dank für eure Mühe im Vorraus


----------



## Guest2 (3. Mai 2010)

Moin,

das Stichwort was Du suchst heißt picking.

Es gibt:

1.	OpenGL picking (selection mode) – ist langsam, da auf der cpu gerendert wird
OpenGL @ Lighthouse 3D - Picking Tutorial

2.	Color picking – schnell und einfach
OpenGL @ Lighthouse 3D - Picking Tutorial


3.	Per Shader – elegant und bietet viele Möglichkeiten, braucht aber einen Geometrieshader

Gruß,
Fancy


----------



## Guest2 (3. Mai 2010)

Edit:

4. Zu Fuß – Fensterkoordinaten in Objektkoordinaten zurückrechnen, Strahl durch die Szene schießen und jedes Dreieck auf Schnitt mit dem Strahl prüfen


Gruß,
Fancy


----------



## Paulere (4. Mai 2010)

danke

ich werde mir das mal genauer ansehen. Ist es damit auch möglich zu erkennen wo ganz genau ich in das Objekt geklickt habe? Für mich machte es erstmal den anschein das ich damit nur erkennen kann welches objekt er geklickt hat.


----------



## Guest2 (4. Mai 2010)

Mit 1. und 2. nicht, es sei den Du teilst Deine Objekte in ganz viele kleine Stücke. 

Mit 3. und 4. hingegen schon.

Du kannst auch z.B. 2. nutzen um das angeklickte Objekt zu finden (verkleinert den Suchraum) und dann mit 4. alle Dreiecke des Objektes durchgehen. Das ist schneller als irgendwelche Bäume zur Optimierung aufzuspannen.

Am elegantesten ist sicherlich 3., aber das braucht eben eine Grafikkarte mit Geometrieshader (imho ab gf8800) und etwas Erfahrung im Umgang mit Shadern. 

Gruß,
Fancy


----------



## Paulere (4. Mai 2010)

damit scheidet die 3. Variante aus...so eine Voraussetzung kann ich nicht machen

beim Teilen der Objekte in viele kleine Stücke...ginge bestimmt, aber dann hätte ich ca 10mio Objekte

bleibt also die 4. Variante, dass werde ich mir mal ansehen


Danke nochmal für die schnellen Antworten


----------



## Guest2 (4. Mai 2010)

Dann noch als Suchtipp: gluUnProject

Damit sollte sich zu 4. was finden lassen.

Gruß,
Fancy


----------

