# 3D Stadtmodell mit OpenGL



## Tschulz (17. Jun 2012)

Hi, 
ich stehe gerade am Anfang einen Projektes und versuche ein Stadtmodell mit OpenGL auf einem Android Tablet zu visualisieren. Es soll lediglich ein statisches Modell sein, dass aus Quadern besteht. Keine Textur nötig. Ich habe Erfahrung mit Java und Android Programmierung, allerdings habe ich noch nie in 3D programmiert und mache mich gerade in die OpenGL library vertraut.

Meine Daten sind echte geographische Daten, gespeichert in einer Oracle Datenbank (als nodes, edges and faces). Nun wollte ich euch fragen:

- Habt ihr Ideen habt wie ich am effizientesten die Daten in mein Projekt importiere?
- Die Koordinaten liegen in einem lokalen Koordinatensystem vor (British National Grid). Wie konvertiere ich diese am besten in Pixel-Koordinaten?
- Welche Art von Primitives wähle ich um eine aus Quadern bestehendes Stadtmodell aufzubauen.


Wie gesagt, ich stehe am Anfang dieses Projektes und habe sehr wenig Erfahrung. Also falls jemand Ideen hat in welche Richtung ich mich am besten bewege und welche Methoden sinnvoll wären, das wäre unglaublich!!

Vielen Dank für eure Hilfe!


----------



## Marco13 (18. Jun 2012)

Zum Import müssen die DB-Experten was sagen... davon habe ich 0 Ahnung, und unter Android noch weniger 

Die Koordinaten werden nicht direkt in Pixel konvertiert. Davon ausgehend, dass du das ganz normale OpenGL ES verwendest, kannst du für die Koordinaten "irgendwelche" Werte nehmen. Sofern es da keine Genauigkeitsprobleme gibt, kann man z.B. sagen, dass die Koordinaten in Metern gespeichert werden.

Die Primitive ... sind immer Dreiecke...  Was genau meinst du? Natürlich liegt es nahe, sich eine Klasse zu basteln, die EINEN Quader speichert (d.h. 12 Dreiecke), aber bei größeren Modellen kann man damit wohl schnell an Performancegrenzen stoßen. Auch das arme kleine ES-OpenGL mag lieber "Vertex Buffer Objects" mit vielen Vertices auf einmal...


----------



## Empire Phoenix (18. Jun 2012)

Sind faces immer 4 eckig? dann kann man die schonmal mit 2 dreiecken darstellen.
-> Alle faxes im sichtbereich suchen
-> ein mega mesh rausbauen 
-> rendern.


----------



## Tschulz (18. Jun 2012)

Vielen Dank für eure Antworten. 

Kannst du mir eine kleine Erläuterung geben, oder einen Link, wie ich das anstelle, anschließend die entsprechenden Dreiecke korrekt zu verbinden?


----------



## Empire Phoenix (19. Jun 2012)

Kommt auf die verwendete engine / ddraw methode an.
Zb wenn du lwjgl hast nen Floatbuffer wo einfach die coordinaten direkt reingeladen werden.
Erste vertices
put(x1);
put(y1);
put(z1);
zweite vertices
put(x2);
put(y2);
put(z2);

Ich würde sagen als erstes ist jetzt die frage ob eine engine verwedet werden soll und wenn welche, und dann solltest anhand der dazu gehörigen apis weitermachen.


----------



## Marco13 (19. Jun 2012)

Ob es auf Android schon so viele "Engines" in diesem Sinne gibt? Ich hatte zwar bei http://www.java-forum.org/codeschnipsel-u-projekte/136391-javagl-rendering-bibliothek.html auch Android im Hinterkopf, aber das steckt noch in den Kinderschuhen.

Die Fragen ("Dreiecke korrekt zu verbinden" etc) klingen schon sehr nach einem Anfang bei 0. Genauere Anforderungen und Vorkenntnisse oder eventuell schon vorhandene Pläne bzgl. Architektur wären wohl nicht verkehrt. Ansonsten könnte auch OpenGL ES 2.0 | Android Developers ein Einstieg sein.


----------

