Mooncraft
Der Boden unter Ihren Füßen ist grau — feiner Regolith, dazwischen schwarzes Basaltgestein, das kein Werkzeug der Welt weicher macht. Am Horizont kein Dunst, keine Wolke, keine Farbe: nur die unvermittelte Grenze zwischen Stein und Sternen. Doch an einem Punkt des Himmels, der sich nie verschiebt — dort hängt die Erde. Halb erleuchtet, halb im Schatten, groß genug um die Kontinente zu erkennen. In Projekt 1 flogen Sie hin; jetzt stehen Sie dort. Während die Blocksäulen aus Regolith und Basalt eine Mondlandschaft wachsen lassen, dreht sich die Erde über Ihnen mit gemächlicher Gewissheit: Ozean, Nordamerika, Nacht, Ozean. Der Mond selbst liegt meist in vollem Sonnenlicht — ein Mondtag dauert fast dreißig Erdtage, und nur selten sinkt die Sonne unter den Kraterrand. Dann leuchtet die Erde allein.

Ziel
- Prozedurale Mondlandschaft aus Heightmap: Regolith-Staub, Mondgestein und Basalt als Blocktypen
- Beleuchtung ohne Atmosphäre: Sonnenlicht ohne Streuung, harter Terminator, tiefschwarze Schatten
- Mondtexturen in Graustufen mit bewusster Wahl zwischen scharf-körnigem und geglättetem Filtering
- Zwei entkoppelte Zeitskalen: die Erde rotiert in Sekunden sichtbar, die Mondsonne wandert über Minuten
- Gebundene Rotation des Mondes: die Erde steht fest am Himmel — als geometrische Konsequenz, nicht als Annahme
- Earthshine als zweite Lichtquelle: die Erde beleuchtet den Mondboden während der seltenen Mondnacht
- Die Erde mit der vollen visuellen Behandlung aus dem Tutorial: Atmosphäre, Nachtlichter, Ozeanspiegelung
Bauabschnitt 1 — Heightmap und Mondkamera einrichten
Empfohlener Zeitpunkt: nach Kapitel 4
Erstellen Sie eine Datenstruktur (z.B. ein struct), die einen Block beschreibt: Typ und Position im 3D-Raster. Definieren Sie ein zweidimensionales Array als Heightmap — ein 16×16-Raster genügt für den Anfang, jeder Eintrag gibt die Höhe der Blocksäule an dieser Stelle an. Der Mond ist keine Gebirgslandschaft: eine weite, flache Ebene, durchbrochen von Kratern. Einschlagkrater entstehen als Senken, nicht als Hügel — eine Überlagerung weniger negativer Gaußkurven (-A * exp(-((x-cx)² + (z-cz)²) / r²)) um zufällig gestreute Zentren erzeugt solche Mulden ohne zusätzliche Bibliothek. Zeichnen Sie für jede Position ein farbiges Quad als Draufsicht auf den obersten Block, sodass von oben eine Grauwert-Karte entsteht. Passen Sie die Kamera so an, dass die gesamte Fläche sichtbar ist.
Vertiefte Konzepte: Transformationsmatrizen (Translation), Kameraparameter, perspektivische Projektion (Near/Far Plane), mehrdimensionale Arrays, eigene Datenstrukturen in C++
Bauabschnitt 2 — Terrain aus Regolith und Basalt aufbauen
Empfohlener Zeitpunkt: nach Kapitel 5
Ersetzen Sie die Platzhalter durch dreidimensionale Cube-Objekte. Für jede (x, z)-Position der Heightmap werden Würfel bis zur angegebenen Höhe gestapelt. Legen Sie Blocktyp-Regeln fest: Die oberste Schicht ist heller Regolith-Staub, darunter folgt verdichtetes Mondgestein, und unterhalb einer festen Tiefe tritt dunkler Basalt zutage — an Kraterrändern darf er freigelegt werden, das betont die Geologie. Weisen Sie jedem Typ eine eigene Farbe zu, damit die Schichtung sofort erkennbar ist. Jeder Block ist eine eigene Cube-Instanz, die über addMesh() in die Szene eingefügt wird.
Vertiefte Konzepte: Prozedurale Geometrie (Cube-Klasse), Vererbung (Mesh als Basisklasse), Scene Graph, std::shared_ptr, Backface Culling, Blocktyp-Logik mit verschachtelten Schleifen
Bauabschnitt 3 — Sonnenlicht ohne Atmosphäre
Empfohlener Zeitpunkt: nach Kapitel 6
Positionieren Sie eine Lichtquelle aus Sonnenrichtung. Da die Sonne 150 Millionen Kilometer entfernt ist, sind ihre Strahlen praktisch parallel — ein gerichtetes Licht (w = 0) ist die korrekte Wahl, wie schon in Projekt 1. Das Entscheidende ist, was fehlt: eine Atmosphäre. Auf der Erde streuen Luftmoleküle das Licht in Schattenbereiche hinein — Schatten sind blau aufgehellt, der Übergang weich. Auf dem Mond gibt es keine Streuung. Der Terminator ist ein harter Schnitt, Schatten sind tiefschwarz. Das Phong-Modell bildet das korrekt ab, wenn der Ambient-Anteil niedrig angesetzt wird. Materialien: Regolith ist matt und heller als erwartet, aber nicht besonders hell — seine Albedo liegt bei etwa 12 %, wie in Projekt 1 beschrieben: der Mond sieht im Weltraum deutlich dunkler aus als der helle Vollmond am Nachthimmel vermuten lässt. Basalt ist noch matter. Aktivieren Sie den Tiefenpuffer.
Vertiefte Konzepte: Phong-Beleuchtungsmodell (ambient, diffus, spekular), Materialparameter, Normalen achsenausgerichteter Flächen, gerichtetes Licht (w-Komponente), Tiefenpuffer, Albedo, fehlende atmosphärische Streuung
Bauabschnitt 4 — Mondtexturen in Graustufen
Empfohlener Zeitpunkt: nach Kapitel 7
Suchen oder erstellen Sie Texturen für Regolith, Mondgestein und Basalt — Graustufen mit feiner Körnung, wie Aufnahmen der Lunar Reconnaissance Orbiter Camera zeigen. Laden Sie die Texturen und weisen Sie sie den entsprechenden Cube-Instanzen zu. Die Filtering-Frage stellt sich hier anders als bei Pixel-Art: GL_NEAREST bewahrt das körnige, fast pulverartige Gefüge des Regoliths mit harten Pixelkanten, GL_LINEAR glättet und erzeugt einen staubigen, weichen Eindruck — beide sind plausibel, wählen Sie bewusst. Für Regolith-Blöcke lohnt es sich, Ober- und Seitenflächen unterschiedlich zu texturieren, damit die Oberfläche von der Flanke unterscheidbar bleibt. Wer eine besondere Herausforderung sucht, fasst alle Texturen in einem einzigen Texture-Atlas zusammen und wählt per UV-Offset die richtige Region aus.
Vertiefte Konzepte: Texturladung mit stb_image, UV-Koordinaten auf Würfeln, Texturparameter (Wrapping, Filtering), Nearest vs. Linear Filtering, Mipmaps, Ressourcenverwaltung
Bauabschnitt 5 — Zwei Zeitskalen: Erdrotation und Mondsonne
Empfohlener Zeitpunkt: nach Kapitel 8
Bringen Sie das System in Bewegung. Zwei Zyklen, entkoppelt in ihrer Geschwindigkeit:
Erdrotation. Die Erde dreht sich um ihre eigene Achse — mit der Achsneigung von 23,4° aus dem Tutorial. Im Zeitraffer auf wenige Sekunden gestaucht, wandert der Terminator sichtbar über die Kontinente. Die Position der Erde am Himmel bleibt dabei fest: das ist keine Vereinfachung, sondern die Konsequenz der gebundenen Rotation des Mondes. In Projekt 1 wurde die gebundene Rotation als Textur-Ausrichtungsproblem eingeführt; hier kehrt sie als physikalisches Argument zurück — der Mond zeigt der Erde immer dieselbe Seite, also erscheint die Erde vom Mondboden aus immer am selben Punkt des Himmels.
Mondsonne. Die Sonne wandert auf einer Kreisbahn über den Mondhimmel — ein vollständiger Umlauf entspricht ~29,5 Erdtagen, im Zeitraffer auf Minuten gestaucht. Der Himmel selbst bleibt schwarz; keine Farbinterpolation, nur die Lichtrichtung und -intensität ändern sich. Aus der Geometrie ergibt sich eine interessante Kopplung: wenn die Sonne im Zenit steht, schaut die Erde mit ihrer Nachtseite zum Beobachter (Neu-Erde); wenn die Sonne unter dem Horizont steht, ist die der Erde zugewandte Seite vollständig beleuchtet — Vollerde. Integrieren Sie die gesamte Bewegungslogik in die Simulation-Klasse.
Vertiefte Konzepte: Zeitbasierte Animation, mehrere entkoppelte Zeitskalen, Kreisbahnen mit Rotationsmatrizen, gebundene Rotation, Achsneigung/Ekliptik, Simulation-Klasse, Trennung von Simulations- und Renderlogik, Zeitskalierung
Bauabschnitt 6 — Sternenhimmel und Earthshine
Empfohlener Zeitpunkt: nach Kapitel 9
Fügen Sie eine Sternen-Skybox als Hintergrund hinzu — aus dem Weltraum ist die Milchstraße unvermittelt sichtbar, ohne atmosphärische Dämpfung. Hintergrund und Mondlandschaft werden als separate Render-Layer mit Depth Isolation gezeichnet, Fixed View Matrix wie in Projekt 1. Der Sternenhimmel bleibt konstant, seine Helligkeit ändert sich nicht mit dem Sonnenstand.
Setzen Sie die Erde als texturierte Sphere in die background-Szene ein: fest positioniert, kein Versatz zur Kamera, aber mit der Eigenrotation aus Bauabschnitt 5. Die volle visuelle Behandlung folgt in Bauabschnitt 7.
Earthshine. Wenn die Sonne unter dem Mondhorizont steht, ist es nicht absolut dunkel — die Erde reflektiert Sonnenlicht zurück auf den Mondboden. Fügen Sie eine zweite gerichtete Lichtquelle ein: schwach, bläulich, aus Erdrichtung, aktiviert wenn der Sonnenwinkel unter den Horizont fällt. Der Mondboden liegt dann im Erdlicht, das seinen Ursprung auf der sonnenbeleuchteten Seite hat — dieselbe Seite, die der Beobachter als Vollerde sieht.
Nach diesem Bauabschnitt ist die Mondlandschaft vollständig navigierbar.
Vertiefte Konzepte: Cube Mapping, Skybox, Fixed View Matrix, Depth Isolation, mehrere Lichtquellen, bedingte Lichtaktivierung
Bauabschnitt 7 — Die Erde am Himmel
Empfohlener Zeitpunkt: nach Kapitel 10
Die Landschaft steht — jetzt bekommt die Erde die volle visuelle Behandlung aus Kapitel 10. Dieselben Maps wie in Projekt 1, derselbe Mehrpass-Aufbau, nur der Blickwinkel hat sich umgekehrt: nicht von außen auf den Planeten, sondern von seinem Mond hinauf.
Die Erde erhält einen Atmosphärenglow als additiven Halo — ein zweiter Render-Pass mit Blending legt einen bläulichen Lichtsaum um die beleuchtete Seite. Die Emission-Map zeigt die Nachtlichter der Städte auf der dunklen Hemisphäre; sie wandern mit der Erdrotation über den Terminator und machen sichtbar, was auf der Tagseite unsichtbar bleibt. Die Specular-Map lässt die Ozeane glänzen, die Kontinente bleiben matt.
Darüber hinaus sind eigene Ideen gefragt: Fußspuren im Regolith als flache Dekal-Quads, ein Sonnenhalo beim Mondsonnenaufgang mit additivem Blending, ein Erdfinsternismoment wenn die Geometrie es erlaubt, ein HUD mit Erdphase und Simulationszeit. Es gibt kein vorgegebenes Ziel mehr — nur noch den eigenen Anspruch.
Vertiefte Konzepte: Multi-Pass Blending, Emission Maps, Specular Maps, additives Blending für Atmosphärenglow, Render-Order, Kompositions-Ästhetik