Grundsätzliches zur X-Plane 10 Szenerie-Entstehung und Funktionsweise

Durchschnitt: 5 (4 Bewertungen)

Originalartikel von Andras (alpilotx) im Forum von Aerosoft HIER

In diesem Beitrag möchte ich allen ein gewisses Grundwissen über die allgemeinen Begriffe / Funktionsweise der X-Plane Scenery vermitteln. Dies soll dabei helfen Zusammenhänge besser zu verstehen, oder auch um häufig gestellte Fragen zu dem Thema (die sich häufig im Kern sehr ähnlich sind) zu beantworten.

 

Einen recht ausführlichen Beitrag dazu (allerdings in Englisch) hatte ich mal vor gut 1 1/2 Jahren hier:

http://xsimreviews.c...n-mr-x-terrain/

 

Man muss grundsätzlich zwischen verschiedenen Grundelementen in der Landschaft unterscheiden, insbesondere was die Art ihrer "Kodierung" in den Scenery-Files (DSF) anbelangt. Denn rein optisch kann man diese nicht unbedingt auf Anhieb unterscheiden, wenn man die Grundprinzipien nicht genau kennt (und auch dann kann das was man Sieht einen Täuschen). Damit meine ich, dass wenn z.B. Häuser (also 3D Gebäude) oder Bäume in der Gegend herumstehen, diese auf verschiedene Art da hinkommen können. Hier nur eine kleine Zusammenfassung der Möglichkeiten:

  • Objekte (OBJ) die an einen Punk gesetzt werden. Man kann beliebige Objekte (das kann ein komplexes Gebäude, statische Flugzeuge, animierte Windräder oder auch ein simpler Baum sein), die man mit einem 3D Editor erstellt hat in der X-Plane Welt positionieren (entweder absolut, also mit allen 3 Raum-Koordianten oder relati, nur mit 2 Raumkoordinaten und die Höhe wird entsprechend des Nullpunktes des Objekts im Bezug zur Landschaft gesetzt). Dies macht OSM2XP noch nicht, ist aber als neues Feature soweit ich mitbekommen habe in der Planung / Entwicklung
  • Objekte (OBJ) entlang einer Linie in regelmäßigen Abständen setzen, sogenannte Strings (STR). Ist wie vorher, nur eben dass ein vielfaches des selben Objekts eingesetzt wird.
  • Objekte als Fassaden (FAC) definieren (dies macht OSM2XP recht ausgiebig, aber auch in der default Scenery von X-Plane werden z.B. einige Hochhäuser so definiert!). In diesem Fall werden die Umrisse des Gebäudes als ein Polygon definier, und entlang dieser Umrisse baut dann X-Plane entsprechende der Definition des Fassade (in den FAC Files) das Haus auf (das kann echt simpel sein, bis hin zu - mittlerweile in XP10 - recht komplexen Hochhäusern mit OBJ Anhängen etc. etc.).
  • Wälder die eine Fläche (Polygon) ausfüllen. In diesem Fall wird in der Scenery ein Polygon definiert dem eine Forest-Definition (FOR) zugewisen wird. In letzterem wird dann festgelegt welche Bäume (also eigentlich jeweils Verweise auf Texturen) als sogenannte Billborad (Flache Texturen die immer zum Beobachter drehen, und aus 1,2,3,x Elementen über Kreuz zusammengesetzt werden) in welchem Verhältnis, mit welche Zufallsstreuung platziert werden. So werden alle Wälder in der default Scenery definiert, und auch OSM2XP tut auf dem selben Weg die Wälder einbinden. Übrigens kann man diese Wälder (FOR) nicht nur eine Fläche Ausfüllen lassen sondern auch z.B. nur entlang der Umrandung eines Polygons (kann sogar ein offenes Polygon - sprich Linie - sein!) verlaufen lassen. So lassen sich wunderbar Alleen definieren (diese Technik benutze ich in der X-Plane 10 Tree Lines and Farms Scenery und X-Plane 10 New Zealand Pro Scenery )
  • Autogen Häuser (und dieses Wort wird wohl sehr durcheinander verwendet). Dies ist eine recht spezielle Geschichte und wird bisher ausschließlich in der Default Scenery benutzt (meines Wissen - und das meinte ich schon oben - macht OSM2XP das NICHT!). Beim Autogen wird über sogenanntes Zoning (letztendlich auch nichts anderes als fest definierte Flächen, also Polygone in der DSF) festgelegt, welchem Bereich, welche Autogen Definition (AGS Files) zugewiesen werden. Dies AGS FIles sind wiederum komplexe Definitionen, welche festlegen, welche Objekte (Häuser, Bäume etc. etc. - die auch wiederum als OBJs hinterlegt sind) in welchen Bereichen der Zone, in welchem Verhältnis platziert werden können, wie diese zu rotieren sind, damit sie sich an den Rändern (wo für gewöhnlich die Straßen verlauf) ausrichten etc. etc.
  • Straßen / Bahnstrecken / Stromleitungen (NET) .... werden als 2D Linien (die Höhe wird für Gewöhnlich aus aus dem Höhenmodell abgeleitet on-the-fly) in der Scenery definiert und über einen Verweis zu den jeweiligen Definitionen im sogenannte roads.net wird festgelegt, was X-Plane aus dieser Linie dann letztendlich macht. Die Linie kann ein simples Bahngleis werden, oder Stromleitungen (das roads.net ist sehr mächtig, und kann auch wiederum einzelne OBJs als Elemente der "Liniendarstellung" einbinden ... so z.B.bei Stromleitungen die Masten etc.) oder ein Autobahn. Gerade bei letzterem wird das roads.net dann richtig kompliziert, das es ja für verschiedene Abzweigung, Brücken etc. jeweils auch definiert wie es die visuellen Elemente wie Texturen und OBJs kombinieren soll damit es halbwegs plausibel aussieht (wenn man sich mal überlegt, wie viele unterschiedlich Visuellen Unterelemente so eine reales Straßennetzwerk aufweisen kann, dürfte einem klar werden wie kopmlex das Thema ist).

Das sind dann im Wesentlichen die Möglichkeiten die man zur Darstellung von 3D Elementen in der Landschaft hat.

 

Wichtig ist, dass diese Elemente sich überlagern können wenn man seine Scenery nicht mit einer Base Mesh ausliefert (eine Base Mesh beinhaltet bis jetzt nur die Global Scenery, HD Mesh Scenery oder Fototapeten von SImHeaven/Zonephoto/etc.). Wenn also eine OSM2XP basierte Scenery (welche "nur" die ganzen FAC Gebäuden und FOR Wälder liefert) nicht explizit andere Elemente einer - in der Reihenfolge - drunter liegenden Scenery (z.B. der Global Scenery / HD Mesh Scenery oder Fotoscenery mit eingebautem Autogen / Wäldern) ausblendet (EXCLUSION) sich diese visuell vermischen. So war es bisher z.B. mit PilotBalus OSM2XP Scenery wo das Autogen (AGS) der Global Scenery nicht ausgeblendet wurde (per EXCLUSION) ... In Zukunft wird OSM2XP hier die Verbesserung bieten (bzw. hat es schon - PilotBalus "kämpft" bereits damit), dass es die EXCLUSIONS (das sind einfach einzelne oder eine Vielzahl rechteckiger Bereiche beliebiger Größe) selektiver definiert (im Zweifel sehr viele, sehr kleine), wodurch möglichst Autogen (AGS) nur noch da erscheint (weil da nicht ausgeblendet wird) wo OSM2XP aus den OSM Daten keine Häuser ableiten kann. Übrigens - wie ich schon vorher andeutet - gelten solche Vermischungen auch für alle anderen 3D Elemente ... so könnten sich im Prinzip auch Wälder (FOR) aus verschiedenen Scenerys vermischen, wenn die höher gelegte Scenery die unter ihr liegenden Wälder nicht explizit per EXCLUSION ausblendet (für Gewöhnlich wird OSM2XP also jeweils eine forest exclusion mitbringen, welche für den gesamten 1x1 Grad Bereich der DSF die tiefer liegenden Wälder ausblendet).

 

Was auch noch zur Verwirrung führen kann ist, dass in jeder Scenery (DSF) so ziemlich alles oder nichts drin sein kann. Es kann in einer DSF alles definiert sein was man sieht, oder aber es die visuellen Elemente stehen alle in eigenen DSFs (und man hofft das durch deren Reihenfolge - Layer - und exclusions diese dann am Ende korrekt "gemischt" werden bei der Darstellung).

  • So beinhaltet z.B. eine Global Scenery (oder auch identisch meine HD Mesh Scenery), ein komplettes Base Mesh (dazu nachher noch mehr), plus alle Wälder (FOR), Straßen/Bahnstrecken/Stomlietungen (NET), Autogen Zones (AGS), evtl. einzelne Fasaden (FAC) und Objekte (OBJ).
  • Eine Fototapete kann viele Formen annehmen
    • Sie kann zum Beispiel nur die Position/Fläche (hinterlegt als Polygone) von POL Files definieren die quasi wie Aufkleber auf eine vorhandene (drunter liegende!) Base Mesh geklebt werden. Ist aber eine ineffiziente (und nicht sehr performant)  Technik für große Fototapeten und wird daher gemieden.
    • Sie kann eine Base Mesh beinhalten und über TER Definitionen die Texturen den einzelnen, rechteckigen Elementen des Meshs zuordnen (wie das im Etwa geht, steht hier: http://forum.aerosof...erien/?p=480039 ).
    • Sie kann die Base Mesh beinhalten (wie im vorherigen Punkt) UND zusätzlich auch die ganzen 3D Elemente (Wälder/Autogen/Straßen etc.) wie in der Global Scenery mit beinhalten (wir dann von dem Tool g2xpl direkt aus der Ursprungs DSF mit "rüberkopiert"). Meines Wissens sind die meisten Fototapeten auf SimHeaven von dieser Form!
  • Eine OSM2XP Scenery kann auch viele Formen haben. Aber für Gewöhnlich - bis jetzt - beinhaltet sie Wälder (FOR) und Gebäude die als Fassaden (FAC) defniert wurden, bzw./und kann einzelne Objekte (OBJ) haben die an bestimmten Punkten stehen (z.B. Windräder / Antennen etc.).Autogen (AGS) ist aber NICHT dabei!
  • Eine einfache Flughafenscenery kann wieder z.B. (da sind die Möglichkeiten ja auch vielfältig) nur aus OBJs bestehen. Oder sie kann auch paar lokale Wälder (FOR) haben, oder sie kann zusätzlich per POL "Aufkleber" lokal Fototapeten darstellen (genau dafür ist diese Technik gedacht - und da funktioniert sie auch effizient) oder oder oder ...

Wie man sieht, gibt es viele Kombinationsmöglichkeiten, und die Reihenfolge (Layer) plus die mitgelieferten Exclusions in der jeweiligen Scenery bestimmen letztendlich, welche "Mischung" man letztendlich als visuelles Ergebnis durch X-Plane präsentiert bekommt.

 

Dabei habe ich bis jetzt die Themen wie Landclass und Base Mesh noch nicht angesprochen.

 

Die Base Mesh ist im Prinzip nichts anderes als ein recht großes, unregelmäßiges (ein wichtiges Feature von X-Plane!) Gitternetz (aus Dreiecken), welche durch ihre "Krümmung" das Aussehen der Erdoberfläche definiert. Man kann sich mit der Grundidee z.B. hier vertraut machen: http://www.cadtutor....d-modelling.php . Wichtig in X-Plane 10 ist aber, dass witziger Weise diese Mesh in den DSF nicht mehr (entgegen XP8/9) als echtes 3D Gitternetz definiert wird, sondern nur als ein flaches, 2D Gitter. Die 3D Form (also die Höheninformation) bekommt sie erst on-the-fly in XP10! Denn in den DSF Files wird auch noch eine normale, Raster Höhenkarte (DEM --> http://de.wikipedia.org/wiki/SRTM) mitgeliefert. Das kann man sich dannso vorstellen, als ob das Raster-Höhenmodell eine Sandburg ist (also die Höheninformation der realen Welt) über die das flache Gitternetz quasi wie ein Tuch gelegt wird, welche daraufhin die Form der drunter liegenden Sandburg annimmt.

 

Nun wird es aber noch komplizierter. Denn, so einem simplen Gitternetz kann man an sich schwierig viele, verschieden Texturen zuordnen (so ist das nun mal in der OpenGL/DirectX/etc. Welt fder Computergrafik - man braucht abgegrenzte "Primitive" denen man die Texturen zuteilt). Daher wird das Gitternetz intern nicht zusammenhängend, sondern als eine Zusammensetzung von sehr vielen einzelnen "Flicken" wie ein "Flickenteppich" aufgebaut. Denn diesen kleinen Dreiecks-Untergittern (die Flicken) kann man dann die Texturen zuordnen (egal ob das nun Fototexturen oder die generischen Texturen der Global Scenery sind). Man kann (bzw. muss) sogar - und das macht die Global Scenery / HD Mesh so - die einzelnen Flicken sich an den Rändern überlappen lassen. Dadurch erreicht man dann durch Texturüberblendung die weichen Übergänge in der bei den generischen Texturen der Global Scenery!

 

Und nun fehlt noch das letzte Element im Puzzle, die sogenannten TER Definitionen. Denn wie vielleicht oben aufgefallen ist, tut die X-Plane Scenery Niemals die Texturen oder 3D Elemente direkt in der Scenery mit liefern. Diese werden IMMER über irgendwelche Defintion-Files (OBJ/AGS/STR/FOR/FAC/TER) referenziert. Sprich, im DSF steht nur, dass an Punkt X ein OBJ steht, aber wie das OBJ aussieht, steht im OBJ. Oder da steht, dass da ein Polygon Wald durch ein FOR gefüllt wird, aber welche Texturen in welcher Verteilung zum Zuge kommen steht in dem FOR File beschrieben. Oder auch bei dem Autogen steht da nur, dass eine bestimmte Fläche von AGS ausgefüllt wird, aber wie dann die komplexe Verteilung der Objekte darin aussieht definiert eben das AGS. Sprich, dass sind immer solche Abstraktionsstufen welche die DSF von den letztendlichen visuellen Elementen (Texturen / Objekte und deren komplexe Mischung) entkoppelt.

 

Genau so ist es auch in der Base Mesh. Dort wird den oben genannten Flicken (Dreiecks-Untergitter) jeweils nur ein TER File zugeordnet. Die genaue Information, welche Texture in welcher Art dann auf das jeweilige Flicken appliziert wird, beschreibt dann das TER File. Und darin kann dann sehr viel stehen ... nicht nur einzelne Texturen, sondern bis hin zur detaillierten Steuerung der Shader, welche diese Texturen (auch mehrere) dann überblenden, drehen, mischen etc. können.

 

Übrigens sind auch Flüsse und Wasserflächen (... auf jeden Fall bis jetzt, also ca. XP10.21) Teil der Base Mesh! Sprich,sie sind auch durch eines der vielen "Flicken" mit im Mesh defniert (und bekommen aber statt TERs einen eigenen, speziellen Oberflächentyp : nämlich Wasser). Das ist auch der Grund, weshalb Gewässer sich nachträglich nur sehr mühsam in den DSFs verändern lassen.

 

Nun fehlt nur noch die Landclass. Und dessen "Geheimnis" ist, dass sie in ihrer Rohform nirgendwo in der DSF steht! Landclass Daten hat man normalerweise als Rasterkarten mit verschiedener Auflösung vorliegen und sie stammen von verschiedenen Datenquellen (NLCD, GlobCOVER, CORINE, LCDB usw.) mit verschiedensten Qualitäten/Vorteilen/Nachteilen/Probleme. Diese Daten werden dann für gewöhnlich recht aufwändig bereinigt / umgewandelt / veredelt (mit noch weiteren Daten "gemischt") so dass sie den Anforderungen der X-Plane Scenery entsprechen. Aber letztendlich landen sie in der DSF Base Mesh "nur" noch in umgewandelter Form. Das Laminar Tool RenderFarm (http://dev.x-plane.c...gi/xptools.git/) wandelt diese Rohdaten (und noch zusätzlich Klimainformationen, Höhendaten etc. etc.) mittels eines komplexen Regelwerkes in die DSFs um. Die Rohdaten und Regeln bestimmen dann "nur", welche TERs (und damit Texturen) einem Flicken zugeordnet werden UND/ODER welcher Typ von AGS (da gibt es ja auch eine Vielfalt an Autogen Definitionen) einer Zone in einer Stadt zugeordnet werden. Das Bedeutet aber auch, dass man die Landclass Zuordnung im Sinne vom MSFS nachträglich nicht mehr wirklich verändern kann (denn die TERs und AGS sind ja bereits in der DSF Verdrahtet). Dies mag zwar als Nachteil erscheinen, hat aber den Vorteil, dass die teilweise recht komplexen Zuordnungsalgorithem (und auch Erstellung des Dreiecksgitternetzes --> Base Mesh) nicht on-the-fly erfolgen muss (und die Algorithmen können beliebig komplex sein, da deren Laufzeit sich ja nicht on-thy-fly auswirkt)!

 

Ich hoffe die Länge des Textes hat nicht alle erschlagen und zumindest einige nehmen sich die Mühe es mal durchzulesen. Es beinhaltet sicherlich bei weitem nicht alle Feinheiten von der X-Plane Scenery, aber es sollte zumindest ein halbwegs fundiertes Grundverständnis der teilweise doch etwas komplexeren Zusammenhänge bieten (und vielleicht dabei helfen das eine oder andere Missverständnis zu beseitigen/vermeiden). Natürlich bin ich auch für Anregungen / Verbesserungen / Fragen zu den Aufführungen offen :) !

Fragen zu diesem Artikel bitte an Andras auf seiner Homepage: http://www.alpilotx.net/

(Dort gibts auch die wirklich empfehenswerten HD-Meshes und weitere Verbesserungen des X-Plane)