|
Erfahrungsbericht
Hier wollen wir eine Einschätzung unseres Praktikums und kleiner Schwierigkeiten, die sich einem
stellen, geben.
Einarbeitung
Irrlicht
Das Einarbeiten in die Irrlicht Engine fiel uns sehr leicht. Wenn man die Tutorials durcharbeitet, bekommt
man einen sehr schnellen Zugang zum Umgang mit Irrlicht. Uns fiel das ganze natürlich etwas schwerer, weil
wir beide C++ nur rudimentär beherrschten. Trotz allem ist das erste Einarbeiten in Irrlicht sehr einfach.
Man hat schnell ein begehbares Terrainmodell auf Basis einer Heightmap erstellt. Danach wird es etwas schwerer. Wenn man sich an die
"advanced" Tutorial ranwagt, merkt man schnell den Anstieg des Anspruchs.
GIS-Daten
Bei den GIS-Daten gestaltete sich das ganz doch um einiges schwerer. Zu ihnen war keinerlei
Dokumentation oder readme vorhanden. Wir mussten uns also zuerst klar werden, was für Daten wir vor uns hatten
und was man damit machen kann. Wir kamen dem ganzen mit Hilfe der Dateiendungen auf die Spur.
Danach mussten wir uns im Dschungel aus FreeGIS-Anwendungen eine passende heraussuchen.
Dies war schwerer, als man denkt, denn es lesen nicht wirklich viele Programme das ArcGIS
Format lesen und geschweige denn verarbeiten können.
Als wir uns dann die Daten endlich anschauen konnten, hatten wir keinen leisen Schimmer,
was wir damit machen könnten ;)
Nach einigem intensiven Anwenden einer großen, bekannten Internetsuchmaschine sind wir schließlich
auf die Shapelib gekommen. Da die Dokumentation hierzu auch nicht wirklich ausführlich
bzw. nicht wirklich leicht verständlich ist, haben wir auch hier noch eine kurze Zeit verweilen müssen.
Nach einigen kleineren oder größeren Problemen mit C++ (die nur an unseren Kenntnissen lagen) haben wir es
dann geschafft die Daten einzulesen. Dann haben wir mit Hilfe des Whitepapers herausgefunden,
dass wir für die Höhen nur Shapefiles des Typs 1 und 3 hatten. D.h. wir hatten in einem Fall NUR Punkte und
im anderen Fall Linien, allerdings komplett ohne Höhen.
Nun standen wir also vor dem Problem, zweidimensionale Shapefiles für ein dreidimensionales Problem
hatten. Dank Thuban wussten wir allerdings schon, dass Höhen vorhanden sein müssen, denn
wir konnten Sie auslesen. Wir kamen nach einigen ratlosen Versuchen also darauf die DBF File
auszulesen. Dort hatten wir dann die Höhen.
Das nächste Problem war dann aus einigen wenigen Punkten eine Heightmap zu erstellen. Aber das habe ich bereits
an anderer Stelle beschrieben.
Wie erkennbar, haben wir hiermit die meiste Zeit verschwenden müssen. Aber nach einiger
Lesearbeit und vielem "Probieren geht über Studieren" haben wir es dann doch geschafft.
Das letzte Problem war schließlich die Menge der Daten, da der PC bei 21000 Punkten schon
ca 25 Minuten rechnen musste und wenn wir die bessere Abtastrate von Contour.shp ausnutzen wollten,
mussten wir 7 h 20 Min auf ein Ergebnis warten. Danach hatten wir eine Heightmap, die 150 MB groß war
und somit zuerst bearbeitet werden musst. Aber mit jedem Runterrechnen kommt ein weiterer Datenverlust hinzu.
Konkrete Anwendung von Irrlicht
Die tatsächliche Anwendung von Irrlicht war ebenfalls kompliziert, da wir nicht die herkömmlichen
Vorgehensweisen anwenden konnten. Unser Terrain war einfach zu groß und so konnten wir die
herkömmlichen Renderingmethoden, die Irrlicht bietet nicht verwenden. Wir mussten also nach einer
Lösung suchen, die ein großes Terrain rendern konnte und andererseits nicht zu ressourcenaufwändig war.
Hier stießen wir auf die TlShTerrainSceneNode von arras. Diese ermöglicht es, sehr
große Terrains in Irrlicht zu rrealisieren. Hierbei kann man sowohl auf Heightmaps basierende Terrains,
randomisierte Terrains oder auf Höhenmatrizen basierende Terrains realisieren.
Eine Dokumentation für die Node ist, außer dem konkreten Thread im Forum
nicht vorhanden. Die Community antwortet zwar auf die meisten Fragen sehr schnell, aber es ist
nicht gerade einfach sich den Code ohne Anleitung anzueignen. Hierbei ist anzumerken, dass
arras für seine Node sehr viele eigene Funktionen geschrieben hat und somit nicht die übliche
Irrlicht Notation zu verwenden ist. Nachdem wir einige Header an unsere Wünsche angepasst hatten,
war die Node sehr nützlich und recht leicht anzuwenden. Andere Nodes sind, soweit wir es probiert haben, kompatibel
zur TlShTerrainSceneNode.
Durch die Menge der Daten und den Rechenaufwand wurde einiges signifikant schwerer,
da man bei jeder Änderung, die man probieren wollte, die gesamte Rechenzeit zur Berechnung aller Höhen
(auf dem verkleinerten Gebiet noch immer 6 Min für jede Ausührung). Dies kostete sehr viel Zeit.
Man kann dies umgehen, indem man einen höheren Faktor zum Verkleinern des Gebiets wählt oder sich für Testzwecke eine
Heightmap erstellt und dann nur das Release auf Basis der konkreten Höhenberechnung ausführen lässt.
Abschließender Eindruck
Insgesamt hat das Praktikum sehr viel Spaß gemacht, wir haben viel gelernt, sowohl über C++, als auch über
3D-Grafiken, Engines und Satellitendaten. Es war an manchen Stellen frustrierend, gerade ein Problem,
an dem man lange saß, gelöst zu haben und dadurch sofort auf das nächste zu stoßen. Aber das
sind genau die Arbeitsschritte an die man sich gewöhnen muss und an denen man das meiste
lernt. Wir hatten am Anfang des Semesters die Wahl zwischen einem Robotikpraktikum und diesem Praktikum.
Wir fanden Grafikdesign interessanter und haben uns so für dieses entschieden. Ich muss sagen, nach all den Schwierigkeiten
und Problemen, die sich uns stellten, würde ich diese Wahl immer wieder treffen. Es hat einfach Spaß gemacht.
Ich hoffe es ist mir gelungen, diesen Eindruch wenigstens ein wenig mit dieser Homepage wiederzugeben. Und allen, die tatsächlich
bis hier her gelesen haben: Dankeschön und meinen ehrlichen Respekt.
|