Vor nicht allzu langer Zeit haben wir ein Mondschöpfungssystem geschaffen. Unser Ziel war es, Monde zu schaffen, die in Größe und Zusammensetzung denen unseres Sonnensystems ähneln. Die Hauptschwierigkeit bestand darin, die riesigen Oberflächen solcher Monde und ihre Innenseiten zu erhalten, so dass sie zwar interessant blieben. Außerdem mussten die Monde unabhängig von der Entfernung zu ihnen mit klaren Details gerendert werden.
Das System geht davon aus, dass die Monde eine kugelförmige Basis haben. Die Erzeugung eines geodätischen Netzes wird auf die Basiskugel angewendet, wodurch die gleiche Fläche aller Teile der Oberfläche garantiert wird. Das System wendet diese Struktur nur als Berechnungsgitter für die prozedurale Erzeugung an. Die reale Mondoberfläche ist viel glatter als das Erzeugungsgitter.
Geodätische SphäreUm kleine gezackte Monde zu erhalten, werden geometrische Grundformen durch niederfrequentes 3D-Rauschen verzerrt.
Rauschverzerrte VermessungskugelAusgehend von dieser Grundlage verwendet das System eine Reihe konzentrischer Schalen. Jede Zelle bestimmt die volumetrischen Eigenschaften der nachfolgenden konzentrischen Hülle. Die äußerste Schale definiert die Oberflächeneigenschaften des Mondes.
Konzentrische SchaleJede Verkleidung kann durch das für diese Verkleidung einzigartige niederfrequente 3D-Rauschen verzerrt sein. Wenn Sie diese Generierungsoption wählen, ist die innere Hülle möglicherweise sogar größer als die äußere.
SchalenverzerrungIn den obigen Diagrammen sind der Abstand zwischen den Schalen und das Ausmaß der Verzerrung übertrieben, um den Konstruktionsprozess deutlicher darzustellen. In der Praxis sind die Schalen viel näher beieinander und die Größe ihrer Verzerrung ist proportional kleiner.
Im Folgenden wird erläutert, wie die äußerste Shell erstellt wird. Die gleichen Prinzipien gelten für die Erstellung von Innenschalen, daher werden wir sie nicht im Detail betrachten.
Ein prozedurales Mondsystem erfordert eine Echtzeitkomponente und eine Offlinekomponente. Die Echtzeitkomponente wird auf dem Computer des Players ausgeführt. Die Offline-Komponente wird auf den Computern der Spieleentwickler ausgeführt. Die Offline-Generierungskomponente erstellt Informationen, die schnell durch eine Echtzeitkomponente ergänzt werden können.
Jeder Scheitelpunkt in einer Kugelschale wird als zu einem separaten Biom gehörend klassifiziert. Ein Biom ist eine Reihe von Oberflächeneigenschaften, einschließlich: Höhe, Materialverteilung, Platzierung von Proben und Färbung von Materialien.
Biom BeispielBiominformationen enthalten entropiereiche Eigenschaften wie Krater, trockene See und Oberflächenrisse, die durch Gravitationsfluten verursacht werden.
Großer Krater in Biominformationen aufgezeichnetDie Definition des Bioms enthält auch Regeln für die Platzierung von Objekten, die den Ort, die Häufigkeit und die Randomisierung von Kleinteilen bestimmen - Steinen, Kopfsteinpflaster, Leisten usw.
Rock InstancesJedes Biom wird aus Elementen erstellt, die von Kacheln (Kacheln) platziert werden, sodass die Echtzeitkomponente die gleichen Informationen in verschiedenen Teilen des Mondes sowie auf anderen Monden anwenden kann. Biominformationen sollten so erzeugt werden, dass eine schnelle Verzerrung und Umlagerung möglich ist, wodurch die Anzahl sich wiederholender und vorhersagbarer Umgebungsmuster verringert wird.
Das System verwendet zwei Arten von Biomkacheln: Übergangskacheln und isolierte Kacheln.
Übergangsinformationen von Biomen treten in Bereichen auf, in denen das Biom in das benachbarte Biom übergeht. Isolierte Biominformationen treten in Bereichen auf, in denen das System das Fehlen benachbarter Biome garantiert.
Diese beiden getrennten Modi sind erforderlich, da einige Elemente von Biomes, z. B. Krater, nur in Bereichen lokalisiert werden können, in denen das Biom nicht auf ein anderes Biom übertragen wird, da Übergänge zwischen Biomes das Höhenprofil und das Erscheinungsbild von Reliefelementen beeinflussen können.
Unten sehen Sie ein vereinfachtes Beispiel für den Mond, bei dem drei verschiedene Biome verwendet werden: polar, tropisch und äquatorial, jeweils in Rot, Blau und Grün gefärbt.
Mond mit drei BiomenBereiche mit einem isolierten Biom haben eine einheitliche Farbe, in Bereichen mit Übergangsbiomen mischen sich die Farben.
Das System verwendet eine Reihe von vorberechneten Rauschen, um Variabilität in die Übergangszonen zwischen Biomen einzuführen und interessante, einzigartige Übergänge von einem Biom zum anderen zu erzeugen.
Verfahrensrauschen bei Übergängen zwischen BiomenIn den obigen Bildern ist die Größe jedes Teils des Bioms im Verhältnis zur Größe des Mondes übertrieben, um die Technik zur Erzeugung von Biomen deutlicher darzustellen. Ein separater Biomstandort wird eine Fläche von ungefähr 10 mal 10 km abdecken. Ein Mond mit einem Radius von 1.500 km hat eine Oberfläche von 30.000.000 km
2 . Um diese Oberfläche zu bedecken, wären fast 300.000 solcher Flächen erforderlich.
Auflösung des Biomgitters für den Mond mit einem Radius von 1.500 kmDie Auflösung des Biomgitters kann zu einer sehr großen Anzahl von Biomstellen führen. Das System verfolgt nicht jeden von ihnen einzeln, da der Standort jedes Standorts analytisch berechnet werden kann. Ein Biom für die meisten Standorte kann über eine Biomkarte auf hoher Ebene zugewiesen werden.
Hochrangige Biomkarten bestimmen die Schlüsselmerkmale von Monden aus großer Entfernung. Das System verwendet diese Karten, um zusätzliche Details in näherer Form zu generieren, wobei die Einheitlichkeit der Definition des Mondes bei Betrachtung aus verschiedenen Entfernungen erhalten bleibt.
Hochrangige Biomkarten sind 2D-Bilder, die mithilfe der 2D-Parametrisierung auf der Mondoberfläche platziert werden können. Jeder Punkt der Karte enthält eine numerische Kennung des Bioms, das an der entsprechenden Stelle der Oberfläche oder der inneren Hülle vorherrscht.
2D-BiomkarteDas Bild oben zeigt eine Karte mit vier verschiedenen Arten von Biomen (blau, rot, gelb und weiß). Das Bild wird mittels 2D-Parametrisierung auf die Kugel gelegt. Eine mögliche Parametrisierung ist unten gezeigt:
2D-Parametrisierung für die Biom-ID-KarteZusätzlich zur Biomkennungskarte ermöglicht das System die Verwendung anderer Karten, die beispielsweise Höhen und Oberflächenfarben enthalten.
Mond Fernschatten und RenderingEin Pixel in jedem Bild kann 4 km
2 abdecken, was die Erstellung kostengünstig macht. Solche Höhen- und Farbkarten können prozedural erstellt oder von Künstlern gezeichnet werden. In einem Projekt, das nur ein Dutzend Monde verwendet und bei dem jeder Mond reichhaltige und einzigartige natürliche Eigenschaften haben sollte, ist es am besten, die Arbeit von Künstlern in dieser Phase zu verwenden.
Das folgende Bild zeigt den Prozess der Erzeugung der Manteloberflächenhöhe und anderer Eigenschaften:
Drei Schuppen bauten den MondDer Mond besteht aus mindestens einer Kugelschale. Wenn mehrere Schalen vorhanden sind, extrudiert das System die inneren Schalen auf der Grundlage ihres maximalen Radius und der Funktion der Schalenhöhe, die durch Ausführen des Prozesses mit verschiedenen oben beschriebenen Maßstäben erhalten wird.
Für jede Schale erstellt der Monddesigner eine allgemeine Karte der Verteilung der Biome, Definitionen der Biome für die auf dieser Karte gefundenen Biome und Identifizierung der in diesem Biom gefundenen Materialien.
Das System betrachtet Luft als akzeptables Material, sodass Hohlräume in jeder Hülle erzeugt werden können.
Querschnitt des Reliefs des Mondes, auf dem verschiedene Muscheln sichtbar sindEine separate Hülle kann auch ein volumetrisches Objekt sein, dessen Tiefe durch einen Materialstapel festgelegt wird. Stapelinformationen werden in einem Biom gespeichert.
Ein Materialstapel aus sechs MaterialienDa unterirdische Materialien selten an die Oberfläche kommen, können sie mit einer viel geringeren Auflösung als Oberflächenmaterialien von Biomen beschrieben werden, und die Verwendung von lokalem Verfahrensrauschen bleibt für den Spieler unsichtbar.
Die Funktionalität des Materialstapels kann für das Layout ausreichen, da einige Materialien im Stapel sehr selten sein können. Der Biomdesigner kann die Verbreitung und das Muster jedes Materials auf dem Stapel anpassen.
Die Prozedurgenerierung wird von GPU-Shadern und Voxel-CPU-Algorithmen durchgeführt.
Der Shader berechnet die Farbe des Fragments für jede der drei Skalen und mischt diese Samples in Abhängigkeit vom Abstand zwischen Kamera und Fragment.
Alle Teile, die zu klein sind, um in der Geometrie registriert zu werden. Sie wirken sich jedoch immer noch auf die wahrgenommene Komplexität der Oberflächen aus und werden in normalen Karten aufgezeichnet, die in Echtzeit auf der Grundlage der prozeduralen Bestimmung von Materialien, Biomen oder Karten auf hoher Ebene zur Bestimmung des Mondes erstellt wurden. Aus diesem Grund wird eine geringe Anzahl von Polygonen in der Szene beibehalten.
Sie müssen den Preis dafür bezahlen, solange der Mond in der Kamera sichtbar ist, müssen die Biom- und High-Level-Definitionskarten in der GPU gespeichert sein. Sie können nur die Mip-Texturen selektiv laden, die zum Rendern der aktuellen Mondskala erforderlich sind. Die Gesamtmenge des erforderlichen GPU-Speichers wird durch das Laden und Entladen von Streaming von der GPU beim Ändern der Position des Beobachters auf ein Minimum reduziert.
Wenn einzelne Elemente aufgrund der Nähe zur Kamera groß genug werden, erscheinen sie mithilfe der Echtzeit-Voxelerzeugung in der Ausgabe der Geometrie. Gleiches gilt für alle Teile des Mondes, die von Spielern terraformiert oder gegraben wurden. Wenn die Änderungen groß genug sind und vom Orbit aus beobachtet werden können, erhöht der adaptive Szenenmanager Voxel Farm den Detaillierungsgrad (LOD) aller Bereiche, deren Änderung die Anwendung für wichtig hält.