Förderjahr 2023 / Projekt Call #18 / ProjektID: 6745 / Projekt: weBIGeo
Die Simulation einer Schneedecke ist ein Beispiel für einen Effekt der auf der Geometrie der Oberfläche beruht. Solche Effekte unterliegen, bei einem tile-basierten Approach einem Problem, welches wir in diesem Blog-Eintrag erläutern wollen.
Um das Problem verständlich zu vermitteln, wollen wir zunächst das Tiling in weBIGeo wiederholen. Abschließend stellen wir einen Lösungsansatz vor, dessen Umsetzung mit weBIGeo problemlos möglich ist.
Basis-Tiles in weBIGeo
Wie bereits in einem der letzten Blogposts erklärt verwenden wir zur Berechnung unserer 3D-Karte Daten-Tiles. Diese ermöglichen es uns die ansonsten unmögliche Menge an Daten zu filtern und nur jene Ausschnitte zu rendern, die für die derzeitige Kameraposition und Blickrichtung relevant sind.
Im Speziellen verwenden wir für weBIGeo zwei verschiedene Typen von Tiles:
- Orthofotos: Sind maßstabsgetreue, perspektivisch entzerrte Fotografien der Erdoberfläche. Häufig werden sie fälschlicherweise als Satellitenbilder bezeichnet, obwohl nicht alle dieser Aufnahmen von Satelliten stammen.
- Digitales Geländemodell: Diese Tiles beinhalten die Höhe von Punkten unserer Erdoberfläche. Diese Punkte werden herangezogen, um die 3-dimensionale Erdoberfläche zu rekonstruieren. (In der Computergraphik werden solche Bilder auch Höhenfelder oder Heightmaps genannt)
Das nachstehende Bild verdeutlicht diesen Vorgang. (a) zeigt die Höhendaten. Die Höhe wird hier in der Sättigung der grauen Farbe dargestellt. Wenn wir das unterliegende Gitter entsprechend dieser Höhen verschieben, erhalten wir (b). Wenn wir passend die Orthofotos als Textur für diese 3-dimensionale Oberfläche verwenden erhalten wir (c). Die 3-dimensionalen Informationen erlauben es uns Effekte wie Beleuchtung, aber auch Schnee-Bedeckung zu berechnen. (d)
Unser Schnee-Effekt kurz erklärt
Um uns von korrekt simulierter oder gemessener Schneebedeckung abzugrenzen, sprechen wir hier immer von einem Effekt. Das bedeutet, es handelt sich um ein rein artistisches Overlay, das keinen Anspruch auf Korrektheit erhebt. Unser „Schnee“ ist einzig und allein von den physikalischen Werten der Geländesteigung und der Höhe abhängig. Wir verwenden außerdem künstliches Rauschen in verschiedenen Frequenzen sowie Interpolationen, um den Übergang an der Schneegrenze „natürlicher“ und glatter wirken zu lassen. Die „Form“ erhält der Schnee erst durch die Schattierung (engl. Shading), die wir ebenfalls über die Geländesteigung an jedem Punkt berechnen.
Das Problem mit geometriebasierten Effekten
Die Implementierung des Schnee-Effekts in Alpinemaps.org hat uns einen großen Nachteil aufgezeigt, welcher auftritt, wenn wir Overlays anhand des Geländemodells berechnen: Je nach Zoomstufe erhalten wir eine unterschiedliche Schneedecke! Die folgende Abbildung zeigt dieses Problem deutlich auf:
In einem Bild nicht so stark ersichtlich macht sich dieses Problem allerdings durch „Popping“ bei Interaktionen mit der Karte sehr stark bemerkbar. („Popping“ ist in der Computergrafik ein ungewünschter Effekt wo, je nach Kameraposition, unterschiedliche Information erscheint/verschwindet)
Dieser Effekt ist durch Folgendes begründet: Tiles des Höhenmodells in niederen Zoomstufen werden aus den jeweiligen Tiles der höheren Zoomstufen berechnet. Das bedeutet jeweils 4 Tiles werden in einem zusammengefasst. Jedes daraus resultierende Tile hat allerdings die gleiche Auflösung wie die 4 zusammengefassten – entsprechend geht also Information verloren. Die Steigung in jedem Punkt wird anhand der Differenz innerhalb dieser Tiles berechnet. Das bedeutet also auch, dass die Steigung in jedem Zoomlevel verschieden sein kann.
Das führt zu teilweise signifikanten Änderungen der Steigung, vor allem an kleinen Geländekanten wie das z.B. bei Bäumen in unterschiedlichen Zoomlevel auftritt.
Eine Lösung powered by weBIGeo
Wenn wir den Detailgrad höherstellen, also zwangsweise höher aufgelöste Geländedaten anfordern wird dieses Problem weniger sichtbar. Das führt zur Frage: Was passiert, wenn wir den Schnee in der höchsten Zoomstufe berechnen und anschließend, wie auch die Orthofotos, nur linear interpolieren? Diese Idee zu testen war bisher mit AlpineMaps nicht möglich, ist aber durch den modularen Compute-Ansatz von weBIGeo kein Problem.
In unserem Beispielprojekt kann eine Compute-Pipeline gestartet werden welche:
- Alle Tiles innerhalb einer bestimmten Region auf höchstem Zoomlevel herunterlädt und die Geländesteigung bestimmt
- Anhand dieser Geländesteigung ein Schnee-Overlay berechnet
- Für diese berechneten Schnee-Overlay-Tiles des höchsten Zoomlevels passende Tiles für die niederen Zoomstufen berechnet
Dank Schritt 3 kann das Ergebnis anschließend effizient im bereits existierenden Rendering-Schritt angezeigt und mit den Orthofotos überlagert werden.
Die nächste Abbildung zeigt eine Gegenüberstellung der alten und der neuen Lösung. Feine Details der Schneedecke (durch z.B. Bäume) bleiben bei der neuen Lösung auch auf höheren Zoomstufen erhalten:
Diese Lösung reduziert weiters stark das oben angeführte Popping. Das folgende Video zeigt diesen Umstand eindrucksvoll auf:
Dieses Beispiel ist nur ein kleiner Vorgeschmack auf die Fülle an Möglichkeiten die weBIGeo bieten wird. In weiterer Folge wollen wir uns mit der Selektierung verschiedenster Regionen bzw. mit dem Berechnen der Exposition und Gefahrenlage anhand eines GPS-Tracks beschäftigen.
Das Wissen, welches wir in diesem Arbeitsschritt erlangt haben, ist hierbei essenziell – da auch für die besagte Auswertung die Steigung an verschiedenen Punkten möglichst korrekt ausgewertet werden muss.