FbmLandscapes + Java3D

vorhergehende Artikel in: Geo Java dWb+ Komponenten
20.06.2013

Nachdem ich meinen Landschaftsgenerator abgeschlossen hatte, hat mich das Ergebnis der Vorschau nicht zufrieden gestellt. Jedes Mal PovRay zu starten, nur um eine 3D-Ansicht zu sehen war einfach zu unbefriedigend. Zeit, sich einmal mit Java3D zu beschäftigen...

Bevor ich das allerdings tat, probierte ich eine selbstgemachte 3D-Visualisierung aus. Den Code, den ich als Grundlage benutzte, hatte ich im Netz gefunden. Nach der Inbetriebnahme stellte sich aber relativ schnell heraus, daß dieser Code meinen Anforderungen nicht genügte: der Ressourcenhunger war enorm.

Also analysierte ich den Code und stellte einige Stellen fest, an denen man ansetzen konnte: Es lief im großen und ganzen darauf hinaus, daß jede Menge neuer Objekte erzeugt wurden: Bei jeder mathematischen Operation mit 3D-Vektoren wurde ein neues Objekt erzeugt, das das Ergebnis enthielt. Bei der 3D-Visualisierung sind unheimlich viele solcher mathematischen Operationen durchzuführen. Damit schwoll der Aufwand für Erzeugung neuer Objekte und Garbage Collection bereits erzeugter Objekte ab einer gewissen Auflösung des Höhenfeldes derart an, daß ich eine völlig neue Fehlermeldung der Java-Laufzeitumgebung kennenlernte: Es ist offensichtlich so, daß das Verhältnis der Zeit, die im Garbage Collector verbracht wird zu der Zeit, die die Laufzeitumgebung mit der Abarbeitung des eigentlichen Programmes zubringt, überwacht wird. Wird es zu ungünstig - lies: bringt die Laufzeitumgebung zu viel Zeit mit der Speicherverwaltung zu, wird das Programm mit einer Exception beendet.

Zeit, sich von der eigenen Garagen-Bastellösung zu verabschieden und den Profi-Werkzeugen zuzuwenden... Auch hierbei hatte ich wieder Hilfe aus dem Netz. Damit entstand die Visualisierung unter Zuhilfenahme von Java3D - viel professioneller, wie man mir nach Betrachtung der Screenshots sicher zustimmen wird:

Screenshots

Artikel, die hierher verlinken

Der Businesscard Raytracer

27.04.2023

Ich fand neulich einen Artikel, den ich als äußerst interessant einstufte und mit dem ich mich ein wenig näher beschäftigte um ihn nachzuvollziehen.

GC und beliebige Präzision in Java

24.11.2018

Das letzte Mal, als ich über Vor- und Nachteile der Durchführung mathematischer Berechnungen mit verschiedenen Datentypen schrieb, vernachlässigte ich einen Aspekt, dessen Einfluss und Wichtigkeit von der benutzten Programmiersprache und konkreten Implementierung abhängt:

GC-Minimierung in Java

05.11.2017

Auf meinen Fahrten von und zur Arbeit schweife ich hin und wieder gedanklich ein wenig ab. Hier das Ergebnis meiner jüngsten Gedankenexpedition...

Nahtlos wiederholbare Rausch-Kacheln

01.10.2017

Und wieder einmal habe ich mich in die Untiefen der Erzeugung von Daten begeben, die man mit einiger Toleranz als au der Ferne aufgenommene geographische Features bezeichnen könnte

3D-Visualisierung gesteuert mittels Beschleunigungssensor

31.07.2015

Hier mal ein kurzes Video zur Datenintegration mit dWb+

Java3D Bug in großen TriangleStrips

17.07.2013

Nachdem ich ein wenig mit meinem Landschaftsgenerator und der neuen Visualisierung herumgespielt hatte, bemerkte ich, daß dabei Artefakte auftraten - und zwar ausschließlich unter Windows. Dem muß man auf den Grund gehen...

Alle Artikel rss Wochenübersicht Monatsübersicht Github Repositories Gitlab Repositories Mastodon Über mich home xmpp


Vor 5 Jahren hier im Blog

  • Fährnisse des Buildprozesses unter Windows

    17.07.2019

    Nachdem ich begonnen hatte, mich mit der Beschleunigung der Berechnung des Mandelbrot-Fraktals unter Zuhilfenahme der Shadereinheiten in Graphikkarten zu beschäftigen und erste Erfolge feiern konnte, wollte ich das mal auf einer richtigen Graphikkarte ausprobieren...

    Weiterlesen...

Neueste Artikel

  • Datenvalidierung UTF8 mit BiDi-Steuerzeichen (TrojanSource 2.0)

    Ich bin heute nochmal inspiriert worden, weiter über die Trojan Source Vulnerability nachzudenken. Meiner Meinung nach bestehen hier noch Probleme - speziell bei Nutzereingaben oder Daten, die über externe Schnittstellen ampfangen werden.

    Weiterlesen...
  • OpenStreetMap Navi als Docker-Container

    Ich habe die auf OpenStreetMap basierende OpenSource Navigationslösung Graphhopper in einen Docker-Container gepackt und als neuestes Mitglied in meinem Docker-Zoo willkommen geheißen.

    Weiterlesen...
  • SQL-Aggregatfunktionen in SQLite als BeanShell-Scripts

    Ich habe neulich über eine Möglichkeit berichtet, SQLite mittels der sQLshell und Beanshell-Skripten um SQL-Funktionen zu erweitern. In diesem Artikel versprach ich auch, über eine solche Möglichkeit für Aggregatfunktionen zu berichten.

    Weiterlesen...

Manche nennen es Blog, manche Web-Seite - ich schreibe hier hin und wieder über meine Erlebnisse, Rückschläge und Erleuchtungen bei meinen Hobbies.

Wer daran teilhaben und eventuell sogar davon profitieren möchte, muß damit leben, daß ich hin und wieder kleine Ausflüge in Bereiche mache, die nichts mit IT, Administration oder Softwareentwicklung zu tun haben.

Ich wünsche allen Lesern viel Spaß und hin und wieder einen kleinen AHA!-Effekt...

PS: Meine öffentlichen GitHub-Repositories findet man hier - meine öffentlichen GitLab-Repositories finden sich dagegen hier.