Alle Artikel
Tutorials · 6 min read

Dichte Wälder ohne Framerate-Absturz: LODs, Impostors und Instancing

Wie man Tausende Bäume mit Framerate rendert, mit der LOD-Kette vom vollen Mesh zum Billboard, oktaedrischen Impostors, die aus jedem Winkel halten, Instancing und Culling, und den Wind- und Shading-Tricks, die einen gebackenen Wald nicht tot aussehen lassen.

Spruce forest on a green alpine slope with a handful of wooden cabins below

Kurz gesagt: Ein überzeugender dichter Wald ist ein Performance-Bosskampf: Tausende High-Poly-Bäume, geschichtete Transparenz, und Instanzen, die bis zum Horizont reichen. Du gewinnst ihn mit einer disziplinierten LOD-Kette, die in Impostors endet (kamerazugewandte Billboards, die einen 3D-Baum aus jedem Winkel fälschen), aggressivem Instancing und Culling, und ein paar Shading-Tricks, damit die billigen fernen Bäume sich nicht verraten. Dieser Artikel geht die ganze Kette vom vollen Mesh zum Billboard durch, den oktaedrischen Impostor-Trick, und wie man einen stark optimierten Wald nicht tot aussehen lässt.

Der Rand eines Waldes, Bäume weichen in die Tiefe zurück Jeder Baum hier ist eine andere Distanz von der Kamera, also sollte jeder Baum eine andere Kosten sein. Die Kunst eines billigen Waldes ist, Polygone nur auf die nahen zu verwenden und den Rest überzeugend zu fälschen.

Die Kernidee: pro Distanz zahlen

Ein Baum 5 Meter entfernt und einer 500 Meter entfernt sollten nicht dasselbe kosten. Eine LOD-Kette gibt volle Detail nah und progressiv billigere Repräsentationen mit Distanz aus, endend in einem flachen Billboard, sodass die Gesamtkosten flach bleiben, während der Wald wächst.

Das ganze Spiel ist, sich zu weigern, vollen Preis für Bäume zu zahlen, die die Kamera kaum auflöst. Nah ist ein Baum ein volles Mesh mit einzelnen Blatt-Cards; fern ist er eine Handvoll Pixel, die ein flaches Bild perfekt reproduziert. Eine LOD- (Level-of-Detail-)Kette formalisiert das: mehrere Versionen desselben Baums bei abnehmenden Kosten, getauscht nach Bildschirmgröße, sodass ein Wald von zehntausend Bäumen ungefähr das kostet, was im Detail sichtbar ist, statt der Summe jedes Baums bei voller Qualität. Ohne sie skaliert Dichte deine Frame-Zeit linear in den Boden; mit ihr kannst du die Baumzahl für dasselbe Budget weit höher treiben.

Die LOD-Kette, Schritt für Schritt

LOD0 volles Mesh mit Blatt-Cards (nah); LOD1–2 reduzierte Geometrie und vereinfachte Blätter (mittel); LOD3 ein paar Cards oder eine einzelne Card; finales LOD ein Impostor/Billboard (fern). Jeder Schritt halbiert grob die Kosten, während der Tausch unsichtbar bleibt.

Eine typische Foliage-LOD-Kette läuft etwa so: LOD0, das volle Detail-Mesh mit all seinen Blatt-Cards, für Bäume direkt neben dem Spieler; LOD1–LOD2, reduzierte Stamm-Geometrie und weniger, größere Blatt-Cards, für den Mittelgrund; LOD3, ein drastisch vereinfachter Card-Cluster; und ein finaler Impostor, im Wesentlichen ein flaches Bild, für alles Ferne. Das Handwerk liegt in den Übergangsdistanzen und dem Blend, damit der Tausch nicht ploppt. Geditherte oder überblendete LOD-Übergänge verstecken den Wechsel; ein hartes Ploppen bei der falschen Distanz ist das Anzeichen, das die Illusion bricht. Stimme die Distanzen gegen deine tatsächliche Kamera ab, nicht Defaults.

Impostors: 3D aus jedem Winkel fälschen

Ein Impostor (oktaedrischer Impostor) rendert den Baum aus Dutzenden Winkeln in einen Atlas vor, zeigt dann die nächste aufgenommene Ansicht als Billboard. Anders als ein flaches Billboard sieht er korrekt aus, während die Kamera sich um ihn bewegt: billig, aber 3D-ähnlich.

Das ferne Ende der Kette ist, wo die größten Einsparungen leben, und der Impostor ist der clevere Trick, der sie akzeptabel macht. Ein schlichtes Billboard, ein flaches Bild, das sich zur Kamera dreht, sieht direkt gut aus, aber flacht ab und rutscht unnatürlich, während du dich bewegst. Ein oktaedrischer Impostor löst das, indem er den Baum aus vielen um eine Kugel angeordneten Blickpunkten vor-rendert, sie in einen Textur-Atlas packt, und je nachdem, welcher aufgenommene Winkel der aktuellen Kamerarichtung am nächsten ist, anzeigt (zwischen den nächsten paar überblendend). Das Ergebnis liest sich aus jedem Winkel als echter 3D-Baum zu einem Bruchteil der Kosten, weshalb Impostors das Rückgrat glaubwürdiger ferner Wälder sind. Sie werden einmal gebacken und kosten fast nichts zu zeichnen.

Farne und niedriges Unterholz bedecken einen Waldboden Die Bodenschicht multipliziert die Instanzzahl schnell. Unterholz braucht dieselbe Disziplin wie die Bäume: instanzier es, LOD es, und culle es hart, denn ein Farn bei 80 Metern sollte überhaupt nicht zeichnen.

Instancing und Culling

Zeichne wiederholte Bäume als Instanzen, sodass Tausende wenige Draw Calls kosten, und culle aggressiv: frustum-culle, was außerhalb des Bildschirms ist, und distanz-culle das kleine Zeug. Instancing behebt CPU-Kosten; Culling stoppt dich, fürs Unsichtbare zu zahlen.

Selbst mit perfekten LODs begräbt das Einreichen von zehntausend Bäumen als einzelne Objekte die CPU. Instancing kollabiert alle Kopien eines Baums in eine Handvoll Draw Calls, was für einen echten Wald nicht verhandelbar ist, und es ist genau, was das Backen eines Scatters zu nativen Engine-Instanzen dir gibt. Darüber hinaus culle gnadenlos: Frustum-Culling wirft alles außerhalb der Sicht weg, und Distanz-Culling entfernt das Boden-Gerümpel und kleine Foliage, das zu winzig ist, um jenseits einer bestimmten Reichweite bemerkt zu werden. Gras und Unterholz besonders sollten harte, nahe Cull-Distanzen haben, denn sie multiplizieren die Instanzzahl schneller als Bäume. Ein Workflow, der Dichte malt und dann zu instanzierten Meshes backt, wie der von Numivo, reicht der Engine genau die gebatchte, cull-bare Form, die ein dichter Wald braucht.

Den billigen Wald am Leben halten

Schwere Optimierung kann einen Wald statisch und tot aussehen lassen. Konter sie mit subtilem Wind auf den nahen LODs, Farb- und Skalenvariation zwischen Instanzen, und Shading, das ferne Impostors nicht als flachen Karton lesen lässt.

Das Risiko all dieser Effizienz ist ein Wald, der großartig läuft und sich leblos anfühlt. Drei billige Berührungen bringen ihn zurück: Wind, also Vertex-Animation auf den nahen LODs, sodass nahe Foliage sich bewegt, auch wenn die fernen Impostors still stehen (niemand bemerkt einen statischen Baum 300 Meter entfernt); Variation, das heißt randomisierte Skala, Rotation und ein Tint pro Instanz, sodass das Auge die Wiederholung nicht fängt, denn identische Bäume sind das Copy-Paste-Anzeichen; und Shading-Sorgfalt auf Impostors: ihre Beleuchtung backen, sodass sie nicht in offensichtlichen Karton abflachen, wenn der Sonnenwinkel sich ändert. Gib die eingesparte Frame-Zeit für diese Details nah aus, wo der Spieler tatsächlich schaut, und der optimierte Wald fühlt sich genauso lebendig an wie ein unoptimierter, während er mehrere Male schneller läuft.

Feldzahlen, die es sich zu stehlen lohnt

  • Kostenprinzip: pro Distanz zahlen, ein ferner Baum darf nicht wie ein naher kosten
  • LOD-Kette: volles Mesh → reduziert → Card-Cluster → Impostor, jeder ~halbiert Kosten
  • Impostor = vor-gerenderte Winkel in einem Atlas → 3D-ähnliches Billboard aus jeder Sicht
  • Instanzier Wiederholungen (wenige Draw Calls) + hart-culle kleine ferne Foliage
  • Halte es am Leben: Nah-LOD-Wind + Pro-Instanz-Variation + gebackenes Impostor-Shading

Mini-FAQ

Billboard vs. Impostor: was ist der Unterschied? Ein Billboard ist ein flaches Bild, das der Kamera zugewandt ist und abflacht, während du dich darum bewegst. Ein Impostor speichert viele Winkel und zeigt den richtigen, sodass er in 3D hält. Für alles, was der Spieler umkreist oder passiert, nutze Impostors; schlichte Billboards sind nur für wirklich ferne, statische Kulissen in Ordnung.

Wie viele LOD-Level braucht ein Baum? Üblich drei bis vier plus ein Impostor. Mehr ist nicht automatisch besser, jedes Level ist Autoren- und Speicherkosten. Genug, um jeden Tausch zu einem kleinen, unmerklichen Schritt zu machen, ist das Ziel, kein Maximum.

Macht Nanite das obsolet? Es ändert die Geometrie-Seite, denn Nanite handhabt dichtes Mesh-Detail ohne traditionelle LODs, aber Transparenz (Blatt-Cards), Instancing-Disziplin und Culling zählen weiterhin, und Impostors bleiben für die ferne Distanz nützlich. Die Prinzipien überleben; das Tooling verschiebt sich.

Was tötet Wald-Performance am häufigsten? Overdraw von überlappenden transparenten Blatt-Cards, und ungecullte Boden-Foliage. Straffe die Blatt-Cards, culle Unterholz nah, und instanzier alles: dieses Trio gewinnt das meiste Budget zurück, bevor du überhaupt die Baum-Meshes berührst.

Ein dichter Wald ist eines der strafendsten Dinge zum Rendern und eines der lohnendsten, um es richtig zu machen. Bau die LOD-Kette, lass Impostors die Distanz tragen, instanzier und culle ohne Gnade, und gib deine Einsparungen für Wind und Variation nah aus, und du hast einen Wald, der sich bis zum Horizont erstreckt und seine Framerate hält.