Unreal Engine – Project Villa – Lighting Pass

print
Deze handleiding maakt deel uit van het programmeertraject:



Wat vooraf ging

Deze handleiding bouwt verder op Unreal Engine – Project Villa – Meshing Pass – Interactie.


Inleiding

  • We hebben onze villa ruwweg, zij het op de centimeter nauwkeurig gebouwd tijdens Prototyping/Greyboxing.
  • Nadien hebben we brushes vervangen door meshes en deze interactief gemaakt via Blueprints tijdens de Meshing Pass. We hebben ook reeds basis belichting geplaatst al was het maar om de lichten aan en uit te kunnen doen.
  • De volgende fase is de Lighting fase, de belichting.

De belichting maakt uw level, ze bouwt de stemming, ze brengt uw level tot levenBelichting is zo belangrijk dat er een eigen fase wordt aan toegekend tijdens de bouw van het level.

De hoofdtaken van belichting zijn:

  • belichten (uiteraard)
  • sfeer scheppen (vaak via Fog)
  • accentueren van bepaalde belangrijke punten in het level
  • leiden, de belichting leidt vaak de speler doorheen het level

Al dit gebeurt vaak door wat ik zou willen noemen “onechte lichten”, lichten komende van geen “echte” fysieke bron. Je zou kunnen stellen dat belichting de gebruiker manipuleert en manipulatie dient steeds subtiel te gebeuren, zodat de gemanipuleerde niet doorheeft dat hij gemanipuleerd wordt. Zo dient ook de belichting subtiel te zijn.

Doelstelling van belichting binnen dit project

Belichting is een studie op zich, een kunst zelfs.

Het is niet de bedoeling van dit project om de belichting als kunstvorm te hanteren. Tenslotte, we geven maar gewoon een villa weer, meer niet. Ik bedoel maar, ik ben in het echte leven al blij als ik de lamp ingedraaid gekregen heb en ze brandt. Het is dan ook niet de bedoeling om in deze handleiding dieper in te gaan op de achterliggende technieken, het is meer een kort overzicht van de mogelijkheden en een paar eenvoudige tips.

Wat wordt er dan wel verwacht van belichting binnen dit project en van de cursist?

  • Enkel “echte fysieke” belichting. Ik bedoel daarmee, spotjes aan het plafond en lampen in staande lampen en meer niet. Dus geen “onechte lichten” om te accentueren, te leiden, kortom te manipuleren. We houden het dus zo “echt” mogelijk zonder er een kunstvorm van te maken.
  • Toevoeging van een paar basistechnieken voor het verbeteren van o.a. reflectie.
  • Het is niet de bedoeling een bepaalde sfeer te scheppen rondom de villa.
  • Werken met de standaard buitenbelichting volstaat.

Wie natuurlijk meer wil mag dit steeds doen.

Deze handleiding is dan ook in de eerste plaats een kennismaking met belichting en een aantal snelle, eenvoudige tips.

Misschien eerst even opmerken dat veel licht momenteel nog moet “gefaked” worden. We hebben nog geen “echte belichting”. Dit is sinds versie 4.22 veranderd door de introductie van RTX (Ray Tracing). Ray Tracing is op het ogenblik van dit schrijven nog maar net geïntroduceerd, en beperkt tot specifieke hardware en ook in mogelijkheden, maar zal de komende jaren de nieuwe manier van belichting worden. Ik negeer in deze handleiding echter RTX.

Situering van deze handleiding binnen Unreal Engine


Soorten lichten

Er zijn 4 standaard soorten lichten (een 5de Rect Light is later toegevoegd) die u kunt plaatsen.

U vindt deze onder ModesLights.

Directional Light

Directional Light – Het licht schijnt in een specifieke richting en komt van een bron “oneindig” ver weg waardoor alle schaduwen parallel zijn. Directional Light wordt meestal gebruikt voor zonlicht.

The Directional Light simulates light that is being emitted from a source that is infinitely far away. This means that all shadows cast by this light will be parallel, making this the ideal choice for simulating sunlight.

Point Light

Point Light – licht straal in alle richtingen. Denk aan een klassieke lamp die ik gebruik in de staande lampen.

Point Lights work much like a real world light bulb, emitting light in all directions from the light bulb’s tungsten filament. However, for the sake of performance, Point Lights are simplified down emitting light equally in all directions from just a single point in space.

Spot Light

Spot Light – te vergelijken met een Point Light maar het licht straal enkel in één richting in een trechter (cone). Merk op hoe in bovenstaande afbeeldingen Spot Lights gebruikt worden om binnenvallend licht te simuleren.

A Spot Light emits light from a single point in a cone shape.

Rect Light

Rect Light – het recent toegevoegd Rect Light maakt het mogelijke een rechthoekig licht uit te stralen (denk aan een TV scherm). Dit werkt enkel goed in combinatie met RTX.

The Rect Light emits light into the scene from a rectangular plane with a defined width and height. You can use them to simulate any kind of light sources that have rectangular areas, such as televisions or monitor screens, overhead lighting fixtures, or wall sconces.

Sky Light

Sky Light – het “hemellicht” meestal bepaald door een Cubemap of geCaptured uit het level zelf via SLS Captured Scene.

The Sky Light captures the distant parts of your level and applies that to the scene as a light.


Mobility

Merk op dat er 3 soorten van Mobility zijn zowel voor actors (objecten geplaatst in een level) als voor lichten.

  • Static
  • Movable
  • Stationary (een combinatie van Static en Movable)

Let op, een level zal vaak combinaties van deze drie soorten bevatten, tenzij het de bedoeling is, zoals in het populaire spel Fortnite, waar alles vernietigbaar en dus Movable is, zullen de 3 soorten vaak gecombineerd worden met het oog op kwaliteit maar ook met het oog op performance.

Static

Static – de belichting, schaduwen worden vooraf gerenderd en opgeslagen in Lightmaps en kunnen nadien, tijdens het spelen, niet meer veranderen. Dit wordt baking genoemd, het licht wordt vooraf gebakken en is nadien onveranderbaar.

Dit heeft tot gevolg dat het vooraf renderen langer zal duren maar de belichting tijdens het spelen minder belastend is voor de prestaties, een betere performance dus.

De kwaliteit van de belichting is hoog maar wanneer u een object met een Static belichting toch zou bewegen, bv. als u het verplaatst in de editor, zal u merken dat de schaduw achter blijft en daar blijft tot u het licht opnieuw Build.

Static Lights worden vooral gebruikt op mobiele toestellen, die niet de real time renderkracht hebben van een pc, of zijn ook ideaal voor het ontwerpen van statische omgevingen, bv. een ruïne waarin niets meer te bewegen valt, alles ligt toch al op de grond.

Onderstaande afbeelding toont een vaas met Mobility Static.

Indien u de vaas verplaatst ziet u dat de schaduw achterblijft en dat u het licht moet Rebuilden.

U zal het level opnieuw moeten Builden, de lichten en schaduwen opnieuw “bakken” om deze  achtergebleven schaduw te verwijderen uit het level.

De Sky Light is standaard Static.

Movable

Movable – de belichting is volledig dynamisch tijdens het spelen en wordt dus niet vooraf gerenderd.

Als een object zich verplaatst zal dus ook zijn schaduw mee verplaatsen.

Zoals u wellicht al vermoed heeft dit een hogere impact op de performance van het spel dan Static lighting. Om deze impact op te vangen is de kwaliteit van een Movable Light lager, zo worden er geen weerkaatsingen (Bouncing/Indirect Lighting) berekend.

In spelen zoals Fortnite, waarin alles vernietigd kan worden, kunt u enkel werken met Movable Lights (en Actors). U zou toch niet willen dat de schaduw van de muur te zien is nadat deze ingestort is?

Beweegbare lichten, bv. de lichten van een auto moeten altijd Movable zijn. Lampen die u aan en uit doet zijn het best ook Movable. Ik heb er echter in dit project voor gekozen dit niet te doen. Movable Light levert immers een mindere kwaliteit af, geen bouncing, en ik wou deze kwaliteit uiteindelijk wel behouden. Aan u de keuze wat u ermee doet.

Geen enkel licht is standaard Movable.

Stationary

Stationary – is bedoeld voor lichten die zelf niet bewegen (statisch zoals bv. spots) maar verder wel dynamisch (movable) zijn. Het Stationary Light kan zelf niet bewegen, is statisch, maar andere eigenschappen zoals intensiteit en lichtkleur kunnen wel veranderen (wat bij een Static Light niet kan). Dit levert u het beste van beide werelden op.

Dat Stationary, als gulden middenweg, vaak een goede keuze is bewijst het feit dat alle lichten, behalve Sky Light, standaard Stationary zijn.

Overlapping

Een nadeel van Stationary Lights is dat er slechts een beperkt aantal (4) mogen overlappen. Is er meer overlapping dan valt dat specifieke licht terug op Movable. Dit moet u vermijden. Het is niet aan te raden dat eenzelfde soort licht zich anders gedraagt dan de andere gelijkaardige lichten.

U hebt drie mogelijke oplossingen:

  • Maak alle lichten Movable met de voor- en nadelen van deze belichting.
  • Verplaats de probleemlamp een beetje zodat ze buiten de overlapping komt.
  • Pas de eigenschap Attenuation Radius aan. De Attenuation Radius bepaalt de invloedzone/overlapingzone van het licht.

In mijn villa heb ik niet veel mogelijkheden om te verplaatsen, u kunt moeilijk een spot in een hoekje plaatsen waar die eerder centraal hoort. Alle lichten Movable is een optie, maar aangezien het level op zich nogal statisch is, enkel de deuren kunnen bewegen, is dit ook niet gewenst.

Ik ben uiteindelijk gegaan voor optie 3, het aanpassen van de Attenuation Radius (ik had dit reeds gedaan tijdens de Meshing Pass, maar eigenlijk hoorde dit hier te gebeuren).

Standaard staat de Attenuation Radius op 1000 voor Spot Lights, maar dit gaf veel overlapping.

Ik heb de Attenuation Radius teruggebracht naar 260, een “sweetspot” waar de invloed vaak beperkt blijft tot de kamer waarin de Spot Light zich bevindt. Ik heb er ook voor gekozen dit uniform te doen voor alle Spot Lights en ze dus niet afzonderlijk te optimaliseren, dit om de uniformiteit te behouden.

Voor de staande lampen, heb ik de Attenuation Radius verder beperkt tot 100, een staande lamp mag beperkte invloedradius hebben.

Met uitzondering van de Sky Light zijn alle andere lichten standaard Stationary.

Hoewel ik hier al oog voor had tijdens de Meshing Fase, is dit controleren een eerste stap tijdens de Lighting fase.


Exposure

Exposure, of Eye Adaption, is een standaard ingebouwde techniek die ervoor zorgt dat, zoals in het echt, het “oog” van de speler zich aanpast aan donkere ruimten. Concreet, een donkere ruimte zal na enige tijd lichter worden. Probeer dit maar eens uit in het echt.

Natuurlijk, dit effect past het licht aan, het wordt lichter. Nu is de vraag, behouden we dit effect, passen we het aan of schakelen we het uit. Indien u heel veel aandacht besteed aan de juiste belichting kunt u dit het best uitschakelen, want anders zal veel van uw werk verloren gaan. Voor zuivere gameplay is dit echter leuk meegenomen, het is tenslotte een simulatie van de echte wereld, ook onze ogen passen zich aan, aan de duisternis.

Omdat perfecte belichting geen doel is in dit project en het meer om het bouwen van het level zelf gaat heb ik gekozen om het te behouden.

Wilt u dit uitschakelen tijdens de Gameplay dan moet u dit doen via Post Processing (dit gaan we bekijken tijdens de Polishing fase). Maar het kan nuttig zijn dit uit te schakelen tijdens het instellen van de belichting tijdens de Lighting fase, nu dus.

  • Ga naar LitExposure en vink Game Settings uit.


Gezamenlijke eigenschappen

Vele lichten hebben dezelfde eigenschappen, een overzicht van de belangrijkste:

Intensity

De intensiteit van de lamp. Nu, hier kan het al snel gespecialiseerd worden en vereist het kennis van lumens (1700 lumens zou overeenkomen met een lamp van 100 Watt).

In versie 4.22, die ik momenteel gebruik, komt een lamp (Spot Light of Point Light) standaard in 8.0 Candela. De omrekening van Lumen naar Candela vraagt toch wel enig rekenwerk die buiten de doelstelling van deze handleiding valt.

Dus, de juiste intensiteit is, voor ons en voor nu, een kwestie van uittesten en aanvoelen.

Laten we een paar voorbeelden uittesten:

Intensity = 0 (licht uitgeschakeld)

Intensity = 8 (standaard)

Intensity = 20

Intensity = 50

Intensity = 100

Intensity = 500

Merk op hoe Exposure de verschillen minimaliseert, met exposure uitgeschakeld zijn de verschillen opmerkelijk.

Aan u weer de keuze, ik heb Exposure laten aanstaan in dit project, het is immers een eerste standaard project en ik blijf dan ook zo dicht mogelijk bij de standaardinstellingen, om die reden blijft ik ook de standaardinstelling van 8 behouden.

Light Color

Spreekt voor zich, de kleur van het licht.

Attenuation Radius

De eigenschap Attenuation Radius bepaalt:

  • het bereik van het licht.
  • welke objecten beïnvloed worden door het licht.

Weet dat een grote Attenuation Radius voor problemen kan zorgen bij Static en Stationary Lights en ook een negatief effect heeft op de performance.

Hierboven ziet u de invloed van een Attenuation Radius van respectievelijk 200, 400 en 800.

Er zijn nog tientallen andere eigenschappen maar deze zijn voor latere meer gespecialiseerde projecten.


SpotLight

Ik maak in de villa vaak gebruik van SpotLight. SpotLights hebben als kenmerk dat ze slechts in één richting stralen in de vorm van een Cone.

Laat ons een paar voorbeelden bekijken.

Standaard

Inner Cone Angle = 0 Outer Cone Angle = 44

Inner Cone Angle = 0 Outer Cone Angle = 60

Inner Cone Angle = 44 Outer Cone Angle = 60

Inner Cone Angle = 60 Outer Cone Angle = 60

Merk hier de heel scherpe rand op.

Ik ging voor Inner Cone Angle = 44 en Outer Cone Angle = 60.


Outdoor

De belichting Outdoor wordt bepaald door:

  • Directional Light (zonlicht)
  • Sky Light

De nadruk in dit project ligt op de villa. Ik ga me dan ook beperken tot een paar kenmerken en instellingen.

Directional Light

Directional Light – Het licht schijnt in een specifieke richting en komt van een bron “oneindig” ver weg waardoor alle schaduwen parallel zijn. Directional Light wordt meestal gebruikt voor zonlicht.

De eigenschap Intensity bepaalt het zonlicht en ook hier speelt Exposure opnieuw zijn rol.

Standaard

Intensity = 3.1415901 Lux

Intensity = 0

Intensity = 10

Wolken

Vanwaar komen die wolken? Die worden toch niet bepaald door een Directional Light?

Voor de wolken, en sterren, bestaat er standaard een Blueprint BP_Sky_Sphere.

  • U kunt deze toevoegen via het Modes-panel.

Deze Blueprint komt met instellingen voor o.a. Clouds, Stars,…

Merk ook op dat de Directional Light Actor de hierboven besproken Light Source is.

Nacht

Om een nacht scene te maken kunt u volgende instellingen wijzigen.

  • Zet de Directional Light Intensity op 0.01 (niet op 0).

  • In BP_Sky_Sphere, kies niet langer voor de Light Source als Directional Light Actor (ook al hebben we die net op Intensity 0.01 gezet en blijft ze haar rol spelen).
  • Zet de eigenschap Sun Height op -1. Ik heb ook de Stars Brightness op 1 gezet (hoewel niet echt nodig).

Het resultaat:

Merk ook hier weer het verschil op door Exposure.

Mist

U kunt mist (fog) toevoegen via het Modes panel.

Atmospheric Fog

Atmospheric fog is standaard in een nieuw level aanwezig en voegt atmosfeer toe aan het level.

Atmospheric fog zorgt voor:

  • Het Directional Light in het level krijgt een zonneschijfeffect in de lucht dat oneindig ver weg wordt geplaatst, tegenover de richting van het licht.
  • De kleur van de lucht dat zal variëren naargelang de stand van de zon.
  • de dichtheid van de lucht

Standaard, met Atmospheric fog.

Met wat, overdreven, gewijzigde instellingen (daar waar een geel pijltje achter staat).

Exponential Height Fog

Exponential Height Fog is meer de mist zoals wij die kennen, dikker bij de grond en minder dik hoger op.

Volumetric Fog kunt u aanvinken binnen Exponential Height Fog.

Maar uiteindelijk hou ik ook hier alles bij de standaard.

Sky Light

SkyLight bepaalt de kleur van het omgevingslicht.

In de eigenschap Source Type kunt u kiezen of de kleuren komen uit de eigen omgeving SLS Captured Scene of SLS Specified Cubemap.

Kies u voor SLS Specified Cubemap dan worden de kleuren bepaald door de kleuren van de Cubemap, een HDRI bestand. U vindt er een hele serie gratis op HDRI Haven.

Een paar voorbeelden:

Snow Park 01

Fireplace

Goegap


Handige en eenvoudige To Do’s

Volgende eenvoudige en handige tips heb ik toegepast voor een net iets betere belichting.

LightMass Importance Volume

Plaats een LightMass Importance Volume rondom de belangrijkse plaatsen van uw level. In mijn voorbeeld rondom de villa voor een betere belichting van deze zone (de villa dus).

U vind de LightMass Importance Volume in het Modes panel.

LightMass Portal

Plaats een LightMass Portal rondt alle ramen waar licht binnenvalt. De LightMass Portal zorgt voor een betere weerkaatsing (Bouncing).

Reflections

Om de reflectie op bepaalde actors te optimaliseren kunt u Reflexion Captures toevoegen.. U vindt deze in het Modes panel.

U kiest voor een Sphere of een Box naargelang de vorm van het object of voor Planer Reflection indien de reflectie van een vlak komt zoals spiegels of een wateroppervlakte. Omdat Planer Reflection de scene eigenlijk opnieuw rendert is dit heel belastend voor de performantie, om reden maak ik er geen gebruik van.

Weet echter dat de Box Reflection Capture voor artifacts (ongewenste pixels) kan zorgen. We gaan het ons niet lastig maken en gaan enkel voor de meest gebruikte Sphere Refection Capture.

Hieronder ziet u de reflectie in de TV en een overzicht van de door mij geplaatste Sphere Reflection Captures.

Weet dat reflectie medebepaald wordt door de Roughness van het materiaal. Zo heb ik voor de TV de Roughness van 0.24 teruggebracht naar 0 voor meer reflectie. Oké, zeker niet ideaal zo’n reflecterende TV, ik zou hem nooit kopen, maar het toont wel het effect.

  • Dubbelklik het materiaal van de TV om het te wijzigen.

Screen Roughness = 0.24

Screen Roughness = 0


Conclusie

Net zoals ik me bij het plaatsen van meshes beperkte tot wat er standaard gratis beschikbaar is, heb ik me nu ook beperkt tot de standaardinstellingen.

De “To Do’s” die ik toegevoegd heb zullen wellicht niet meteen opvallen, het kan misschien zelfs zijn dat u zich afvraagt wat nu eigenlijk het verschil is tussen de vorige Meshing fase en deze Lighting fase, zeker omdat ik zo weinig gewijzigd heb aan de standaardinstellingen.

Doch, de tijd om het level te builden is minstens verdubbeld, er gebeurt dus heel veel subtiel onder de motorkap.

Geef een reactie

Deze website gebruikt Akismet om spam te verminderen. Bekijk hoe je reactie-gegevens worden verwerkt.

  • Abonneer je op deze website d.m.v. e-mail

    Voer je e-mailadres in om je in te schrijven op deze website en e-mailmeldingen te ontvangen van nieuwe berichten.