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

  • U kunt actors toevoegen aan het level.
  • U bent vertrouwd met de fasen in het bouwen van een level.
  • U bent vertrouwd met de whitebox-fase.

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.

Importeren van FBX-bestanden

Niet tijdens de leerfase, maar later, zal al snel blijken dat u zelf uw eigen assets moet creëren om echt datgene te hebben dat u wenst. Dit kan in programma’s als Blender, 3DS MAX, Maya, ZBrush, LightWave3D, ….

Nadien moet u deze zelf aangemaakte assets importeren in Unreal Engine. Dit gebeurt o.a. via het FBX-formaat.

U exporteert in het andere pakket naar FBX dat u vervolgens importeert in Unreal Engine.

  • De meest eenvoudige manier is door eerst een map aan te maken in de Content Browser via Add New en vervolgens New Folder.

  • Vervolgens sleept u gewoon de gewenste FBX-bestanden vanuit de Verkenner naar deze map of u gebruikt de Import binnen de Content Browser.
  • U krijgt onderstaand dialoogvenster waar u bevestigt met Import All of gewoon Import.

De volledige uitleg van dit dialoogvenster vindt u hier.

Ok, dit is de meest eenvoudige uitleg, dat er soms wat meer komt bij kijken ziet u in onderstaande Masterclass waar het importeren vanuit het populaire en gratis Blender wordt uitgelegd.

Let op, op Internet vindt u al snel heel wat gratis FBX-bestanden (3D-objecten). Ik durf echter niet te stellen dat al deze websites betrouwbaar zijn, laat staan geoptimaliseerd voor gebruik in Unreal Engine.

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

Masterclass – Blender to Unreal Engine

Onderstaande video is vooral interessant voor cursisten die reeds met Blender werken en willen leren hoe ze hun werk optimaliseren om te importeren in Unreal Engine.


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 is een heel goede video die uitlegt 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.

Artclass – World Creation Basics in UE4 with Megascans

Dit is een eerste Artclass waarin een “artist” uitlegt hoe hij aan een level begint gebruikmakend van Megascans.

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.