|
Nach einer Unterbrechungszeit gibt es nun wieder etwas neues.
Da die Pyramidenszene nun doch relativ simpel gehalten war und auch nur für die ersten Tests und Einarbeitungen dienen sollte, habe ich mich nun an eine neue Aufgabe gesetzt. Dabei soll es Aufgabenstellung sein, dass anhand (geografischer) Kooridianten automatisch Objekte generiert werden. Gegeben sind also beliebig viele Koordinaten, die zur automatischen Erzeugung von Straßen dienen. Die Straße soll dabei möglichst real aussehen und auch Höhenunterschiede überwinden können.
Als erstes soll nun die Erzeugung der Fahrbahn anhand beliebiger Punkte betrachtet werden. Die Fahrbahn selbst soll dabei möglichst glatt sein und einen realistischen Verlauf, vor allem bei Kurven, aufweisen. Der erste Versuch soll hierbei mit Bézier-Kurven durchgeführt werden. Diese sind aus einer beliebigen Anzahl von Punkten generierbar und interpolieren zumindest Anfangs- und Endpunkt. Außerdem können Bézier-Kurven mit dem Algorithmus von De'Casteljau beliebig genau diskretisiert werden ohne die Summen der Bernsteinpolynome aufwendig berechnen zu müssen.
Die Erzeugung der Fahrbahn teilt sich auf mehrere Teilschritte auf:
- Generierung der Punkte der Bézier-Kurve
- Generieurng der Randpunkte der Bézier-Kurve
(Kreuzprodukt zwischen Kurvenvektor und Senkrechter --> Normierung --> Multiplikation mit Fahrbahnbreite)
- Sinnvolle Triangulation
- Generierung der Punkte der Fahrbahnstreifen (analog zur Erzeugung der Randpunkte)
- Sinnvolle Triangulation
- Einhängen in den DOM
Allein dies beläuft sich bereits auf 200 bis 300 Zeilen Quellcode und dabei ist die Problematik noch simpel.
Betrachtet man die Zielstellung: XML3D-Szenen über das Internet zu übertragen, so ist es natürlich trotz VDSL wichtig zu wissen, wie groß der Traffic ausfallen wird. Bei einer einzelnen Straße ist es vermutlich sinnvoller eine komprimierte Fassung des bereits erzeugten Netzes zu übertragen und dieses simpel in den DOM zu hängen, als den Generierungscode zu übertragen und diesen auszuführen. Enthält die Szene allerdings viele Straßenabschnitte, so ist es vermutlich wieder besser, den Generierungscode 1 Mal zu verschicken und dann nur noch Funktionsaufrufe zu starten und das Netz lokal zu generieren.
Aber auch das wird sich wieder relativieren, sobal man verschiedene Objekte mit geringerer Häufigkeit übertragen muss.
Die Ergebnisse:
Coming Up: Böschung, Mittelstreifen, Straßenzüge
|