Starten met Programmeren van een 3D omgeving in Unreal Engine – Dynamisch weer

print
Deze handleiding maakt deel uit van het programmeertraject:


Inhoud


Wat vooraf ging


Inleiding

In deze handleiding gaan we zien hoe we eigenschappen dynamisch kunnen wijzigen. Hiertoe gaan we de eigenschappen van de “Sky” dynamisch wijzigen.

  • Start een nieuw Third Person Desktop/Console project van Maximum Quality With Starters Content en geef het een passende naam.

Het “weer”, de lucht, wordt bepaald door de SkySphereBlueprint (BP_Sky_sphere).

Merk een hele reeks van eigenschappen op zoals:

  • Sun Brightness
  • Cloud Speed
  • Cloud Opacity
  • Star Brigtness
  • Sun Height
  • Horizon Falloff
  • en de kleuren voor Zenith, Horizon, Cloud en Overall

die we allen kunnen instellen maar ook dynamisch wijzigen via programmeercode.

Merk ook op dat de eigenschap Directional Light Actor gekoppeld is aan Light Source, een Directional Light dat dienst doet als de zon.

Ook hier zijn eigenschappen die we dynamisch gaan wijzigen.


Regeneffect importeren

We gaan het ook laten regenen. De regen gaan we niet zelf aanmaken maar gaan halen in een bestaand, gratis project van Epic, namelijk Soul: City.

  • Klik op Add To Project en selecteer uw project waar u het wilt aan toevoegen. Het is een nogal groot project om enkel een effect eruit te gebruiken. Voeg in dit geval het project toe aan een tijdelijk project, dat u nadien kunt verwijderen.
  • In de map SoulCityEffectsParticles – water vindt u het gewenste effect P_RainStorm.

  • Klik P-RainStorm aan met de rechtermuisknop en kies voor Asset ActionsMigrate….

  • U krijgt een overzicht van alle bestanden die gemigreerd worden.

  • Klik op OK. Vervolgens selecteert u de Content-map van het project waar u het Regeneffect naar toe wilt migreren. Herhaal dit eventueel voor het geluidsbestand Rain_Heavy_Ext_Cue.

De migratie is beëindigd.

  • In het gewenste project, sleep P_RainStorm centraal naar uw level.
  • Merk dat het meteen begint te regenen. We wensen dit niet, we wensen het pas na een zekere tijd te laten regenen. Om de automatische activatie van het regeneffect uit te schakelen selecteert u P_RainStorm (in het level) en bij Details vinkt u Auto Activate uit.


Blueprint voorbereiden

  • In de Content Browser, klik op Add NewBlueprint Class (of klik met de rechtermuisknop in de net aangemaakte folder en klik op Blueprint Class).

  • Kies de Parent Class Actor.

  • Geef het een gepaste naam.
  • Dubbelklik om de Blueprint te openen.

We hoeven geen componenten toe te voegen.

We maken wel drie variabelen aan die we gaan koppelen aan de te gebruiken Sky, Light en Rain.

De 3 variabelen:

SkyRef is van het type BP_Sky_Sphere.

LightRef is van het type Directional Light.

RainRef is van het type Emitter (een particle effect)

Zorg dat voor alle 3 de variabelen de eigenschap Instance Editable aangevinkt is.

  • Maak de 3 variabelen aan.
  • Compileer en bewaar.
  • Sleep de Blueprint in het level.
  • Selecteer de Blueprint, merk de mogelijkheid op om een waarde aan de 3 variabelen toe te kennen. Selecteer de juiste actor uit het level voor iedere variabele. Bij het aanklikken van de keuzelijst is de lijst beperkt tot actors van hetzelfde type.


Blueprint programmeren

Omdat de Blueprintcode nogal uitgebreid is, en we ondertussen al wat gevorderd zijn, gaan we de Blueprintcode niet stap voor stap aanmaken. Ik heb ze reeds aangemaakt en ga ze nu bespreken.

Bij het begin van het spel, controleert u of de instantie van de variabele SkyRef bestaat en “geldig” is (IsValid). Indien de SkyRef bestaat start de tijdlijn.

De tijdlijn bevat 2 curven:

  • De eerste curve start bij waarde 0 en loopt tot waarde 1 over 30 seconden.
  • De tweede curve is een event die start na 25 seconden en het zal laten regenen.

Het laten regenen gebeurt door het activeren van de RainRef (P_RainStorm) gevolgd door het afspelen van een “regengeluid” (Play Sound 2D Rain_Heavy_Ext_Cue).

Verschillende eigenschappen van de variabele/referentie SkyRef worden ingesteld via Set Vector Parameter Value.

  • Target is de variabele/referentie SkyRef.
  • U moet de juiste Parameter Name opgeven.
  • De Value wordt aangestuurd door een Lerp (LinearColor)  voor kleurwaarden of een “gewone” Lerp voor Float-waarden. Een Lerp functie gaat van een waarde A naar B op basis van de waarde van Alpha. Alpha wordt hier aangestuurd door de tijdlijn die van 0 naar 1 gaat over 30 seconden. Vrij vertaald, in 30 seconden verandert de kleur/waarde van de kleur/waarde in A naar de kleur/waarde in B.

    De kleur/waarde voor A is de standaardkleur/waarde (of, de startwaarde u de standaardwaarde gewijzigd hebt (of wilt wijzigen). De kleur/waarde voor B is eerder proefondervindelijk, uitproberen wat u het meest geschikte effect lijkt (u moet dus zeker niet mijn waarden overnemen, experimenteer gerust).

De waarden voor de LightRef worden op een gelijkaardige manier als de SkyRef gewijzigd.

De tijdlijn bevat 2 curven:

  • De eerste start bij waarde 0 en loopt tot waarde 1 over 30 seconden.
  • De tweede curve is een event die start na 25 seconden en het zal laten regenen.


Behandelde Basiscompetenties uit de module ICT Programmeren – Specifieke ontwikkelomgeving: eenvoudige functionaliteiten

  • IC BC234 – kan de basisprincipes van programmeren in een specifieke ontwikkelomgeving toepassen
  • IC BC236 – kan eenvoudige wijzigingen aan een programma aanbrengen
  • IC BC241 – kan een programma in een specifieke ontwikkelomgeving maken
  • IC BC247 – kan de bouwstenen van een specifieke ontwikkelomgeving gebruiken
  • IC BC249 – kan de instellingen van een specifieke ontwikkelomgeving wijzigen
  • IC BC250 – kan bij het programmeren in functie van een specifieke ontwikkelomgeving, een juiste logica volgen

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.