Starten met programmeren van een 3D-omgeving in Unreal Engine – Meshing pass

print
Deze handleiding maakt deel uit van het programmeertraject:


Inhoud


Wat vooraf ging


Gebruikte terminologie

Level

A Level is a user defined area of gameplay. Levels are created, viewed, and modified mainly by placing, transforming, and editing the properties of the Actors it contains. In the Unreal Editor, each Level is saved as a separate .umap file, which is also why you will sometimes see them referred to as Maps.

Static Mesh

A Static Mesh is a piece of geometry that consists of a set of polygons that can be cached in video memory and rendered by the graphics card. This allows them to be rendered efficiently, meaning they can be much more complex than other types of geometry such as Brushes. Since they are cached in video memory, Static Meshes can be translated, rotated, and scaled, but they cannot have their vertices animated in any way.

Material

A Material is an asset that can be applied to a mesh to control the visual look of the scene. At a high level, it is probably easiest to think of a Material as the “paint” that is applied to an object. But even that can be a little misleading, since a Material literally defines the type of surface from which your object appears to be made. You can define its color, how shiny it is, whether you can see through the object, and much more.


Inleiding

In de Meshing pass wordt de eenvoudige geometrie vervangen door static meshes. Er worden assets, materialen en eenvoudige belichting toegevoegd. De level wordt ingekleed, gedecoreerd. U krijgt nu reeds een beeld van hoe uw level er zal uitzien (en niet enkel hoe hij opgebouwd is (prototyping)) zonder uzelf te verliezen in details.

Deze inkleding, decoratie mag echter de gameplay, collision,… vastgelegd tijdens het prototypen, niet meer wijzigen. Er mag dus niets worden toegevoegd enkel vervangen (bv. de muur die er geplaatst is tijdens het prototyping blijft er staan, hij krijgt alleen een “behang”. De ruimte die voorzien was voor een raam krijgt nu effectief het raam geplaatst (binnen de reeds voorziene ruimte).

Deze static meshes, assets, materialen,… die in het level worden gebracht hebben vaak eigen specifieke functionaliteiten die dienen geprogrammeerd te worden.

  • We werken verder aan het level dat aangemaakt is in de vorige handleiding “Prototyping (Whiteboxing)” en dan meer specifiek het level met “MijnHuisje”

Licht toevoegen aan het level

Misschien vindt u het binnenin onze kamer te donker en wilt u al, tijdens het prototyping (Whiteboxing) bepalen waar er het best verlichting kan komen.

  • Ga naar Place ModeLights en sleep bv. een Spot Light op de plek in het level waar u het wilt toevoegen (bv. in een hoek in de kamer waar u later een staande lamp zou kunnen plaatsen).

Omdat we een licht hebben toegevoegd gaan we de belichting opnieuw moeten bouwen.

  • Klik op BuildBuild Lighting only.
  • Test het nu uit door te klikken op Play.

Een Licht komt met een hele reeks van eigenschappen (intensiteit, lichtkleur,…). Tijdens het prototyping gaan we ons hier nog niets van aantrekken, we zeggen gewoon dat hier, op deze plek, een licht moet komen.


Startlocatie van de speler binnen het level bepalen

U merkte wellicht op dat, als u start, u binnenin de kamer staat.

De locatie waar u start wordt bepaalt door de Player Start. u kunt deze naar wens verplaatsen om een andere startplaats te kiezen.


Een Geometric Brush transformeren naar een Static Mesh

We hebben reeds gezien dat Geometric Brushes enkel gebruikt worden voor prototyping (Whiteboxing) maar dat ze uiteindelijk vervangen dienen te worden door Static Meshes. Hoewel Static Meshes gedetailleerder en complexer zijn, zijn ze toch minder belastend voor het renderen. Dit heeft te maken met het geheugen gebruik. Als u dezelfde Geometric Brushes meermaals gebruikt zal deze telkens opnieuw geheugenruimte innemen. Bij herhaald gebruik van Static Meshes wordt de eigenlijke Static Mesh maar eenmaal in het geheugen geladen en vervolgens wordt er telkens naar deze ruimte gerefereerd. Dit zorgt voor een veel efficiënter gebruik van het geheugen en dus een snellere rendering van het level.

Conclusie, u behoudt zo weinig mogelijk Geometric Brushes in de uiteindelijke finale versie en zoveel mogelijk, om niet te zeggen uitsluitend, Static Meshes.

Dit kunt u doen door de Geometric Brushes te vervangen door andere, bestaande Static Meshes die u misschien ontwerpen hebt in 3D Studio Max, blender of…

Of u kunt de gebruikte Geometric Brushes omvormen tot Static Meshes. Dit laatste ga ik hier bespreken.

Stel, u wilt van ons gezellig huisje een Static Mesh maken.

Misschien toch eerst even opmerken dat ik in de praktijk nooit een Static Mesh zou maken van een volledige huis maar eerder van een muur, of eventueel het dak alleen. Dit omdat een Static mesh het best een geheel vormt en een huis uit verschillende delen bestaat. Ik maak dus enkel maar een Static mesh van het volledige huis omdat het in de lijn van deze handleiding past en om een probleem uit te klaren met collision (zie hieronder).

  • Selecteer Dak, Deur en Kamer.
  • Onder Brush Setting klik op Create Static Mesh (eventueel moet u eerst het panel uitbreiden met de details).

  • Bepaal de locatie, In de map Geometry vindt u een map Meshes, dit is een geschikte plek. Geef de mesh een naam (bv. MijnHuisje)
  • Klik op Create Static Mesh.

Merk op dat de afzonderlijk Geometric Brushes vervangen zijn door de Create Static Mesh MijnHuisje.

Collision problemen

We gaan nu de gameplay testen, u weet wel, één van de basistaken van prototyping/Whiteboxing.

  • Klik op BuildBuild Lighting only (of klik op Build voor een volledige “build”).
  • Test het nu uit door te klikken op Play.

Merk op dat u niet enkel toegang hebt tot uw huisje via de deur, maar dat u ook simpelweg door de muren kunt lopen. Dit is nu ook weer niet de bedoeling. Er is een collision-probleem.

De reden is dat Geometric Brushes standaard Solid en dat ze deze eigenschap bij de omzetting naar strong>Static Mesh niet behouden hebben. We gaan deze dus opnieuw moeten instellen.

We hebben MijnHuisje opgeslagen in de map Geometry – Meshes.

  • Ga naar de map Geometry – Meshes.
  • Open, door te dubbelklikken, MijnHuisje.

Bovenaan in de actiebalk/knoppenbalk ziet u de knop Collison.

  • Vink Simple Collision aan, merk op dat er niets verandert, er is geen Simple Collision.

  • Vink Complex Collision aan, merk op dat er hier wel degelijk collision aanwezig is en dat de deur “uitgesneden” is.

We gaan dus moeten instellen dat er voor MijnHuisje Complex Collision moet worden gebruikt, in plaats van de standaard Simple Collision.

  • Onder Details – Collision – Collision Complexity selecteer Use Complex Collision As Simple.

  • Klik op Save om de wijziging te bewaren.

Keer terug naar het level, staat normaal nog open als tabblad, test de gameplay opnieuw en u kunt niet langer meer door de muren lopen.


Assets toevoegen

Assets zijn toevoegingen aan ons project en komen in verschillende gedaanten, denk aan 3D-objecten (Static Meshes), karakters (Skeletal Meshes), materialen die u kunt toepassen op 3D-objecten, particles (kleine “deeltjes” die worden gebruikt voor bv. vuur, rook, explosies), audio,….

Deze assets worden als actors toegevoegd aan het level, gewoon door ze erin te slepen. Matrialen moet u slepen op een reeds aanwezig Static Meshes (of Geometric Brushes) zoals een muur of een vloer,….

Materialen zijn een cursus op zichzelf en ik ga hier momenteel niet dieper op in. Wie meer wil weten over materialen kan hier al eens een kijkje nemen.

Het is niet de bedoeling van deze cursus om zelf deze assets zelf aan te maken (vaak worden ze immers gemaakt buiten Unreal Engine in softwarepakketten zoals Maya, Blender, 3D Studio Max,…). U moet wel weten waar u ze kunt vinden (gratis of eventueel tegen betaling) en hoe u ze kunt importeren in uw project.

Starter Content

Wilt u al wat assets om mee te werken, vergeet dan niet With Starter Content aan te duiden bij het aanmaken van uw project.

Als u dit toch zou vergeten zijn, geen probleem.

  • Klik in de Content Browser op Add New.
  • Klik op Add Feature or Content pack….

  • Selecteer Starter Content in het tabblad Content Packs.

De Starter Content is toegevoegd.

Market Place

De Market Place is de plek waar u officiële assets kunt kopen (sommigen zijn gratis) specifiek op maat van Unreal Engine.

  • Start Epic Games Launcher en ga dan naar de Marketplace.
  • Zoek de gewenste assets en wordt er eigenaar van, al dan niet tegen betaling.

  • Voeg de gewenste assets toe aan uw project via Add To Project.

Wilt u het gebruikte materiaal (gras, bomen, rotsen,…) uit het project A Boy and His Kite gratis toevoegen aan uw project?

  • Start (eventueel) de Epic Games Launcher en ga dan naar de Marketplace.
  • Zoek en voeg de Open World Demo Collection toe aan uw project via Add To Project.

Epic heeft onlangs ter waarde van 12.000.000 $ aan Paragon Assets gratis vrij gegeven.

Een hele goede professionele website, dat echter komt met een prijskaartje van een kleine € 150 per jaar, is Quixel Megascans.


Project Level Creation – Meshing pass

In ons doorlopen project verlaten we de WhiteBox-fase en stappen we in de Meshing-fase (hoewel deze fasen niet zo mooi gescheiden zijn en wat door mekaar lopen).

En omdat beelden zoveel meer zeggen dan woorden, onderstaande video’s tonen het toevoegen van verschillende assets aan het level.

Applying materials to geometry

We gaan onze muren en vloeren voorzien van het nodige materiaal, bekleden met marmer, parket,….

Adding Support Meshes

We voegen wat ondersteunde meshes toe aan on level.

Decorative Supports

Er wordt wat decoratie toegevoegd aan het level.

Building the Glass Walls

De glazen muren worden toegevoegd.

Setup for the Sliding Door

Tenslotte wordt de schuifdeur aangemaakt.


Masterclass – Lighting and Rendering

Onderstaande video legt uit hoe u een scene kunt bouwen en renderen met het accent op de belichting.

U kunt de gebruikte assets gratis zelf gebruiken.

  • Start Epic Games Launcher.
  • Ga naar Learn en zoek Realistic Rendering. Klik het aan.

  • Klik op Free om het aan uw account toe te voegen.

  • Klik op Create Project om een nieuw project met deze assets aan te maken (de bovenstaande video toont hoe u deze assets nadien ook kunt importeren in een al bestaand project.

Sidekick – Materialen

Bij het bouwen van een 3D omgeving komt veel meer kijken dan enkel maar het programmeren. Denk aan belichting, AI (Artificiële Intelligentie), animaties, cinematics, geluid, particle effects, materialen,….

Het is teveel gevraagd om gespecialiseerd te zijn in al deze materie, specialisatie dringt zich op. Ik leg in deze handleidingen de nadruk op het leren programmeren en zal al heel tevreden zijn als u dit onder de knie krijgt. Maar toch wil ik u ook, via deze Sidekicks, laten kennismaken met de andere aspecten nodig om een 3D omgeving te bouwen. Ik doe dit aan de hand van videoreeksen die ik gespreid aanbied als aanvulling bij de eigenlijke handleidingen. Deze Sidekicks maken geen deel uit van de eigenlijke “leerstof”, voel u vrij ze al dan niet te bekijken.

Dit is een tweede reeks van video’s over Materialen waarin een steeds complexere Texture wordt toegepast.

Adding Textures to a Material

Using Masks within Materials

Using Masks within Materials continue

Commenting & Enhancing Materials

Reviewing the Material Graph

Geef een reactie

  • 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.