Das Himmelslicht fängt die entfernten Teile deines Levels ein und wendet es als Licht auf die Szene an. Das bedeutet, dass das Erscheinungsbild des Himmels und seine Beleuchtung / Reflexionen übereinstimmen, auch wenn Ihr Himmel es ist aus der Atmosphäre kommen, oder geschichtete Wolken auf einer Skybox oder entfernte Berge. Sie können eine zu verwendende Cubemap auch manuell angeben.
Szenenaufnahme
Das Himmelslicht erfasst die Szene nur unter bestimmten Umständen:
-
Für statische Himmelslichter werden Aktualisierungen automatisch durchgeführt, wenn die Beleuchtung erstellt wird. Für Stationäre oder Bewegliche Himmelslichter erfolgen Aktualisierungen einmal beim Laden und werden nur dann weiter aktualisiert, wenn Wiederaufnahme aufgerufen wird, es sei denn, die Funktion Echtzeitaufnahme ist vorhanden aktiviert. Beide sind über das Details-Panel zugänglich, und Wiederaufnahme kann auch über Blueprint im Spiel aufgerufen werden.
Detailbereich Sky Light Recapture-Schaltfläche
Wenn Sie die Textur ändern, die die Skybox verwendet, wird sie nicht automatisch aktualisiert. Sie müssen eine der oben genannten Methoden verwenden, um es zu aktualisieren.
Anstelle der Ambient Cubemap sollte ein Himmelslicht verwendet werden, um das Licht des Himmels darzustellen, da Himmelslichter lokale Schatten unterstützen, wodurch verhindert wird, dass Innenbereiche vom Himmel beleuchtet werden.
Mobilität
Ähnlich wie bei anderen Light Types kann das Himmelslicht auf eine der folgenden Mobilitäten eingestellt werden:

Mobilität | Beschreibung |
---|---|
Statisch | Die Beleuchtung kann im Spiel nicht geändert werden. Dies ist die schnellste Methode zum Rendern und ermöglicht gebackene Beleuchtung. |
Stationär | Wenn die Beleuchtung erstellt wird, werden Schatten und Lichtreflexe nur von der statischen Geometrie erfasst. Alle anderen Beleuchtungen sind dynamisch. Diese Einstellung ermöglicht auch, dass das Licht Farbe, Intensität und die Cubemap im Spiel ändert, aber es bewegt sich nicht und ermöglicht eine teilweise gebackene Beleuchtung. |
Beweglich | Die Beleuchtung kann im Spiel nach Bedarf verschoben und geändert werden. |
Statisches Himmelslicht
Ein auf Statisch gesetztes Himmelslicht wird für statische Objekte im Level komplett in die Lightmap gebacken und kostet daher nichts. Wenn Änderungen an den Eigenschaften des Lichts vorgenommen werden, sind die Änderungen nicht sichtbar bis die Beleuchtung für das Level wieder aufgebaut ist.
Wenn Sie ein statisches Himmelslicht verwenden, werden nur Akteure und Lichter in der Ebene, deren Mobilität auf Statisch oder Stationär eingestellt ist, erfasst und für die Beleuchtung verwendet. Weiterhin nur der Emissionsbeitrag von Materialien können mit einem statischen Himmelslicht erfasst werden, um eine Rückkopplungsschleife zu vermeiden. Stellen Sie aus diesem Grund sicher, dass jede Skybox ein Material hat, das auf Unbeleuchtet eingestellt ist.
Stationäres Himmelslicht
Ein Himmelslicht mit Stationärer Mobilität erhält gebackene Schatten von Lightmass. Sobald Sie ein stationäres Himmelslicht in Ihrem Level platziert haben, müssen Sie die Beleuchtung einmal neu aufbauen, um die gebackenen Schatten zu erhalten. Sie können das Himmelslicht dann beliebig ändern, ohne es neu zu bauen. Die Himmelslicht-Schattierung, die Lightmass backt, speichert Informationen zur gerichteten Okklusion in einem sogenannten Bent Normal.
Nur Komponenten und Lichter mit Statisch oder Stationäre Mobilität werden erfasst und für die Beleuchtung mit einem stationären Himmelslicht verwendet.
Wie bei allen Arten von Standlichtern kann die Farbe der direkten Beleuchtung zur Laufzeit über Blueprint oder Sequenzer geändert werden. Die indirekte Beleuchtung ist jedoch in die Lightmap eingebacken und kann zur Laufzeit nicht geändert werden. Die Intensität der indirekten Beleuchtung kann über „IndirectLightingIntensity" gesteuert werden.


Bewegliches Himmelslicht
Ein Himmelslicht, das auf Beweglich eingestellt ist, verwendet keinerlei Vorberechnung. Es erfasst Komponenten und Lichter jeder Mobilität, wenn es zur Erfassung der Szene eingerichtet ist.
Entfernungsfeld Umgebungsokklusion
Diese Eigenschaft erfordert, dass Mesh Distance Fields in den Projekteinstellungen aktiviert ist.
Die Abschattung für ein bewegliches Himmelslicht wird durch Distance Field Ambient Occlusion von Signed Distance Field Volumes bereitgestellt, die um jedes starre Objekt erzeugt werden. Entfernungsfeld Umgebungsokklusion unterstützt dynamische Szenenwechsel, bei denen die starren Netze verschoben oder ausgeblendet werden können, und wirkt sich auf die Okklusion aus.
Klicken Sie auf das Bild, um es in voller Größe zu sehen.
Weitere Informationen und Beispiele finden Sie auf der Seite How to use Distance Field Ambient Occlusion.
Vorberechnetes (statisches oder stationäres) Himmelslicht
Wenn Sie Brennbeleuchtung mit einem statischen oder stationären Himmelslicht verwenden, werden die Beleuchtungs- und Schattendaten in Lightmaps gespeichert. In den folgenden Abschnitten werden einige dieser Funktionen erläutert, die von unterstützt werden Lightmass.
Verbesserte Direktionalität des statischen Himmelslichts
Vor Unreal Engine 4.18 wurden statische Himmelslichter von Lightmass mit einer sphärischen Harmonischen 3. Ordnung dargestellt, die nicht die Details erfasste, die in einem Sonnenaufgang oder Sonnenuntergang vorhanden sein könnten. Es wird jetzt eine gefilterte Cubemap verwendet, was standardmäßig zu einer höheren Auflösung führt. Lightmass wählt auch den geeigneten Mip der Cubemap-Textur basierend auf der Größe der Final Gather-Strahlen aus, um Aliasing zu vermeiden.
Um ein Beispiel für diese Art von Interaktion zu sehen, gehen Sie zu Engine Content > MapTemplates > Sky und wählen Sie SunsetAmbientCubemap aus, da es ein großartiges Beispiel zeigt.


Der größte Unterschied ist in stark verdeckten Szenen mit einer Sky Light-Cubemap zu sehen, die viele Helligkeits- und Farbvariationen aufweist.
Camera Obscura
Mit der verbesserten Ausrichtung von Static Sky Lights ist es jetzt möglich, einen Lochkameraeffekt (Camera Obscura) mit einer ausreichend kleinen Öffnung nachzubilden. Je kleiner die Öffnung, desto gerichteter wird die Himmelsbeleuchtung.
Himmelslichtquelle Cubemap | Resultierender leichter Aufbau |
Klicken Sie auf das Bild für volle Größe. | Klicken Sie auf das Bild für volle Größe. |
Bent Normal für stationäre Himmelslichter
Bei stationären Himmelslichtern wird die statische und stationäre Beleuchtung separat von der beweglichen mit Lightmass gebacken, um Richtungsinformationen in einem sogenannten Bent Normal zu speichern. Das ist die Richtung vom Texel zur am wenigsten verdeckten Umgebungslichtquelle. Bereiche, die größtenteils verdeckt sind, verwenden diese Richtung für die Himmelsbeleuchtung anstelle der Oberflächennormalen, was die Qualität in Rissen verbessert.


Das erste Bild zeigt Sky Light nur mit Umgebungsokklusion. Das zweite Bild zeigt Sky Light mit gebogener normaler Okklusion. Beachten Sie, wie Oberflächen in Rissen „einig sind", woher die Beleuchtung kommt.
Weitere Informationen finden Sie auf der Seite Bent Normal Map.
Mehrere Lichtreflexionen
Mehrere Reflexionen von indirektem Licht von Himmelslichtern werden unterstützt, indem die Einstellung Num Sky Lighting Bounces in World Settings > Lightmass angepasst wird.

Setting for the number of sky light bounces to use.


Damit mehrere Himmelslichtreflexionen wahrnehmbar sind, müssen Ihre Materialien in den meisten Fällen einen hohen Streuwert aufweisen. Bei einem diffusen Wert von 0,18 (18 % Grau) trägt beispielsweise nur der zweite Himmelslichtreflex bei 18^3 = 0,006 der emittierten Energie des Lichts, was sehr subtil ist. Bei einem diffusen Wert von 0,5 trägt der zweite Himmelslichtreflex 0,125 zur emittierten Lichtenergie bei und ist wahrnehmbar.
Jeder hinzugefügte Bounce erhöht die nicht verteilte Bauzeit, also verwenden Sie es mit Vorsicht, wenn Sie nicht Swarm distribution verwenden.
Echtzeiterfassung
Der Echtzeiterfassungs-Modus bietet eine dynamische und spiegelnde Umgebungsbeleuchtung und ermöglicht dynamische Tageszeitsimulationen mit Echtzeitreflexionen auf Szenenelementen.
Dieser Modus ist verfügbar, wenn die Mobilität des Himmelslichts auf „Stationär" und „Dynamisch" eingestellt ist und wenn Echtzeitaufnahme im Bereich „Details" der Himmelslichtkomponente aktiviert ist.

Dieser Modus unterstützt die folgenden Komponenten für erfasste Reflexionen und Schatten:
- Sky Atmosphere
- Volumetric Clouds
- Exponential Height Fog
- Sky Dome Meshes mit einem unbeleuchteten Material, das als IsSky gekennzeichnet ist
Dies sind einige zusätzliche Dinge, die Sie bei der Verwendung dieses Modus beachten sollten:
- Volumetrischer Nebel wird nicht unterstützt.
- Erfordert eine Sky Atmosphere-Komponente, die in der Szene vorhanden sein muss, damit die Echtzeiterfassung funktioniert. In einer zukünftigen Version wird die Echtzeiterfassung ohne diese Anforderung unterstützt.
- Es ist möglich, Netze nur im Echtzeit-Erfassungsmodus zu rendern, indem Sie sie für das Rendern in der Hauptansicht deaktivieren. Es ist möglich, ein anderes Sky-Dome-Mesh für die Hauptansicht im Vergleich zur Reflexion der Echtzeitaufnahme zu haben, wenn Sichtbar in Echtzeit-Himmelsaufnahmen für einzelne Akteure aktiviert wird.
- Der Echtzeit-Erfassungsmodus ermöglicht es, Umgebungsschatten von volumetrischen Wolken auf die Welt zu werfen, wenn Cloud Ambient Occlusion aktiviert ist.
- Der Real Time Capture-Modus ist schneller und effizienter als der RecaptureSky Blueprint-Knoten, da alle Berechnungen auf der GPU verbleiben, ohne dass CPU-Verarbeitung verwendet wird, die zu Pausen oder Verlangsamungen des Spiels führen kann.
- Wenn Sie volumetrische Wolken verwenden, kann die Leistung je nach Komplexität des verwendeten Wolkenmaterials stark variieren. Sie können den Leistungskompromiss steuern – und dabei die visuellen Elemente in Ihrer Szene respektieren – indem Sie die Werte Reflexions-Sample-Anzahlskala und Schattenreflexions-Sample-Anzahlskala der Komponente „Volumetrische Wolke" anpassen.
Reflexionsqualität
Die Qualität der vom Himmelslicht erfassten Reflexionen wird durch die Eigenschaft Cubemap-Auflösung festgelegt. Es verwendet Zweierpotenzen (z. B. 64, 128, 256 usw.), um eine Texturauflösung für die erfasste Szene anzugeben.
Beachten Sie, dass höhere Auflösungswerte die Qualität auf Kosten der Leistung steigern. Der angegebene Wert wird auf den höchsten Cubemap-Mip (den Detaillierungsgrad einer Textur) angewendet.



Ziehen Sie den Schieberegler, um zu sehen, wie verringerte (64), standardmäßige (128) und erhöhte (256) Skylight-Cubemap-Auflösungen verwendet werden.
Beachten Sie, dass Screen Space Reflections (SSR) in diesen Aufnahmen deaktiviert wurde. Reflexionen sind nur das Ergebnis des Himmelslichts.
Zeitscheibenoptimierung
Der Echtzeitaufnahme-Modus verwendet eine Leistungsoptimierung namens Zeitscheiben, um die aufgenommene Szene über mehrere Frames zu verteilen, anstatt bei jedem Frame eine vollständige Szenenverarbeitung durchzuführen. Diese Optimierung reduziert die Kosten pro Frame, die eine vollständige Echtzeiterfassung jedes Frames für die Verwendung auf einigen Plattformen zu teuer machen würden.
Beispielsweise würde eine auf der PlayStation 4 mit einer 128 x 128 x 6 HDR-Cubemap mit Himmel und volumetrischen Wolken durchgeführte Aufnahme in etwa so aussehen (gemessen in Millisekunden):
- Ein vollständiger Prozess pro Frame für eine 128x128-Cubemap würde etwa 1,465 ms kosten (wie folgt aufgeteilt):
- Sky und Cloud kosten 0,60 ms
- Cubemap-Mip-Generierung kostet 0,05 ms
- Specular Convolution kostet 0,80 ms
- Diffuse Bestrahlung kostet 0,015 ms
- Derselbe Prozess, aber zeitlich über 9-Frames-Zeitscheibe verteilt, würde höchstens 0,20 ms für den teuersten Schritt kosten.
Das Verteilen der Aufnahme eines einzelnen Frames auf mehrere Frames hat den Vorteil, dass die Skylight-Aufnahme in Echtzeit innerhalb eines erschwinglichen Budgets für Ihr Projekt bleibt, da Time Slicing nur so teuer ist wie das teuerste Frame. Es bedeutet auch, dass Sie nach Möglichkeiten suchen können, die Qualität in anderen Bereichen zu steigern, wie z. B. der Qualität des Himmels oder der Wolken, da Sie ein wenig Spielraum im Rahmenbudget haben.
Time Slicing ist standardmäßig aktiviert, kann aber mit dem Konsolenbefehl „r.SkyLight.RealTimeReflectionCapture.TimeSlice." eingestellt werden
Abschattung durch bewegliche Objekte
Weiche Schatten von beweglichen Objekten auf die Umgebung können mit Capsule Shadows für Skeletal Meshes oder erreicht werden Distance Field Indirect Shadowing für starre Netze. Diese erfordern eine separate Einrichtung, um ordnungsgemäß zu funktionieren.
Eigenschaften
Es gibt zwei Kategorien von Himmelslicht-Komponenteneigenschaften, Himmelslicht und Licht, obwohl sie in der Benutzeroberfläche nicht unterschieden werden. Auf diese kann über das Fenster "Akteur Details" zugegriffen werden. Himmelslichteigenschaften sind spezifisch für Himmelslichtakteure, während Lichteigenschaften allen Lichtakteuren gemeinsam sind. Auf bestimmte Eigenschaften kann nur zugegriffen werden, indem der Abschnitt „Erweitert" erweitert wird, der in der folgenden Tabelle angegeben ist.

Eigenschaft | Beschreibung | ||||
---|---|---|---|---|---|
Sky Light | |||||
Erfassung in Echtzeit | Wenn aktiviert, wird der Himmel erfasst und gefaltet, um eine dynamische diffuse und spiegelnde Beleuchtung zu erzielen. Dabei werden SkyAtmosphere, VolumetricCloud Components sowie Himmelskuppeln mit Sky-Materialien berücksichtigt. | ||||
Quelltyp | Ob die entfernte Szene erfasst und als Lichtquelle verwendet oder die angegebene Cubemap verwendet werden soll. Bei der Aufnahme der Szene wird alles, was weiter als SkyDistanceThreshold von der Himmelslichtposition entfernt ist, eingeschlossen.
|
||||
Cubemap | Geben Sie die Cubemap an, die für die Himmelsbeleuchtung verwendet werden soll, wenn Source Type auf SLS_SpecifiedCubemap festgelegt ist. | ||||
Quell-Cubemap-Winkel | Der Winkel zum Drehen der Quell-Cubemap, wenn der Quelltyp auf SLS-spezifizierte Cubemap festgelegt ist. | ||||
Cubemap-Auflösung | Maximale Auflösung für die allerhöchste verarbeitete Cubemap-MIP. Es muss auch eine 2er-Potenz-Textur sein. | ||||
Himmelsentfernungsschwelle | Abstand vom Himmelslicht, bei dem jede Geometrie als Teil des Himmels behandelt werden soll (wird auch von Reflexionserfassungen verwendet). | ||||
Nur emittierende Aufnahme | Fangen Sie nur emittierende Materialien ein. Überspringt die gesamte Beleuchtung, wodurch die Aufnahme billiger wird. Dies wird empfohlen, wenn Capture Every Frame verwendet wird. Fortschrittlich. | ||||
Untere Hemisphäre ist einfarbig | Ob alle Beleuchtungen der unteren Hemisphäre auf Null gesetzt werden sollen. Dies ist nützlich, um ein Austreten aus der unteren Hemisphäre zu verhindern. Fortschrittlich. | ||||
Farbe der unteren Hemisphäre | Verwenden Sie die Farbauswahl, um die Farbe für die untere Halbkugel auszuwählen. Fortschrittlich. | ||||
Light | |||||
Intensitätsskala | Die Gesamtenergie, die das Licht abgibt. | ||||
Wirkt sich auf die Welt aus | Ob das Licht die Welt beeinflussen kann oder ob es deaktiviert ist. | ||||
Schatten werfen | Ob das Licht Schatten werfen soll. | ||||
Indirekte Beleuchtungsstärke | Skaliert den indirekten Beleuchtungsbeitrag von diesem Licht. Ein Wert von 0 deaktiviert jegliche globale Illumination (GI) von diesem Licht. | ||||
Volumetrische Streuintensität | Intensität der volumetrischen Streuung dieses Lichts. Dies skaliert Intensität und Lichtfarbe. | ||||
Wirft statische Schatten | Ob das Licht Schatten von statischen Objekten werfen soll. Außerdem muss Cast Shadows auf True gesetzt werden. Fortschrittlich. | ||||
Wirft dynamische Schatten | Ob das Licht Schatten von dynamischen Objekten werfen soll. Außerdem muss Cast Shadows auf True gesetzt werden. Fortschrittlich. | ||||
Durchscheinende Beleuchtung beeinflussen | Ob das Licht die Transluzenz beeinflusst oder nicht. Wenn Sie dies deaktivieren, können Sie GPU-Zeit sparen, wenn viele kleine Lichter vorhanden sind. Fortschrittlich. | ||||
Übertragung | Ob Licht vom Himmelslicht durch Oberflächen mit unter der Oberfläche streuenden Profilen durchgelassen wird. Erfordert, dass das Licht beweglich ist. Fortschrittlich. | ||||
Volumetrischer Schatten werfen | Ob die Lichtschatten Volumetric Fog. Fortschrittlich. | ||||
Tiefen Schatten werfen | Ob das Licht hochwertige Haarsträhnen selbst schattieren soll. Wenn diese Option aktiviert ist, werden zusätzliche GPU-Kosten auf dieses Licht angewendet. Fortschrittlich. | ||||
Wirk Raytracing-Schatten | Ob die Lichtschatten mit Shadow Mapping oder Raytracing (sofern verfügbar) berechnet werden. Fortschrittlich. | ||||
Strahlverfolgungsreflexionen beeinflussen | Ob das Licht Objekte in Reflexionen beeinflusst, wenn Raytracing-Reflexion aktiviert ist. Fortschrittlich. | ||||
Wirkung auf globale Strahlverfolgungsbeleuchtung | Ob das Licht die globale Illumination beeinflusst, wenn globale Raytracing-Illumination aktiviert ist. Fortschrittlich. | ||||
Tiefenschattenschichtverteilung | Ändern Sie die Ebenenverteilung für tiefe Schatten. 0: linear (gleichmäßige Schichtverteilung), 1: exponentiell (mehr Details zu nahen kleinen Schatten). Erfordert die Aktivierung von Cast Deep Shadow. Fortschrittlich. | ||||
Atmosphere and Cloud | |||||
Wolken-Umgebungsokklusion | Ob die Wolke den Himmelsbeitrag innerhalb der Atmosphäre verdecken soll (progressives Ausblenden der Mehrfachstreuung) oder nicht. | ||||
Okklusionsstärke der Cloud-Umgebung | Die Stärke der Umgebungsokklusion. Höhere Werte blockieren mehr Licht. | ||||
Wolken-Umgebungsokklusionsausdehnung | Der Weltraumradius der Umgebungsokklusionskarte der Wolke um die Kamera herum in Kilometern (km). | ||||
Auflösungsskala der Okklusions-Map der Cloud-Umgebung | Skaliert die Auflösung der Okklusions-Map der Cloud-Umgebung. Die Auflösung wird durch r.VolumetricCloud.ShadowMap.MaxResolution geklemmt. |
||||
Cloud Ambient Occlusion Aperture Scale | Steuert den Öffnungswinkel des Kegels, über dem die Himmelsverdeckung aufgrund volumetrischer Wolken ausgewertet wird. Ein Wert von 1 berücksichtigt die gesamte Hemisphäre, was zu einer verschwommenen Okklusion führt. Ein Wert von 0 berücksichtigt eine einzige Okklusionsrichtung (vertikal), was zu einer scharfen Okklusion führt. |
Einschränkungen
Diese Funktionen wären mit SkyLights nützlich, sind aber noch nicht implementiert:
- Weiche Schatten von beweglichen Objekten (Charakteren) auf die Umgebung sind nicht in Sky Light integriert und erfordern derzeit die Implementierung separater Funktionen gegen zusätzliche Rendering-Kosten. Die SkyLightComponent Blueprint-Funktion RecaptureSky() kann verwendet werden, hat jedoch hohe Verarbeitungskosten und erfordert mindestens 120 ms, was zu einer Unterbrechung oder Verlangsamung des Spiels führt.