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

Situering van deze handleiding binnen Unreal Engine


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.

Naamgeving

Eigenlijk geef ik in bovenstaand voorbeeld het slechte voorbeeld. De naam MijnHuisje, klinkt misschien wel lief en schattig, is eigenlijk geen goede naam omdat u uit de naam het type bestand niet kunt afleiden. Een betere naam had eigenlijk geweest SM_MijnHuisje. SM verwijst hier naar Static Mesh en zo weet ik op basis van de naam meteen dat dit een Static Mesh is.

Nu, in dit klein testproject is extra aandacht voor het kiezen van een goede naam misschien wat overdreven maar doe dit zeker voor grote projecten en al zeker als u met meerderen samenwerkt aan eenzelfde project.

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.

U komt in de Static Mesh Editor, hier kunt u aanpassingen maken aan de Static Mesh, bijvoorbeeld de Collision wijzigen.

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

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

Marketplace

De Marketplace 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.

Importeren van FBX-bestanden

Niet tijdens de leerfase, maar later, zal al snel blijken dat u zelf uw eigen assets wilt 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-knop 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, maar toch even een overzicht van de belangrijkste, ook al staan deze standaard meestal correct.


Deur toevoegen

  • Gebruik nu de Content Browser om te zoeken naar Door (een deur dus), filter eventueel op Static Mesh.

Collision aan de deur toevoegen

Voor we de deur gaan toevoegen aan het level gaan we eerst Collision toevoegen (anders kunnen we gewoon door de deur door lopen zonder ze te openen).

  • Dubbelklik op de Static Mesh SM_Door.
  • Klik in het menu CollisionAdd Box Simplified Collision (een deur heeft slechts een eenvoudige Collision nodig).

  • Kik op de knop Collision en vink Simple Collision aan om de Collision te bekijken.

  • Kijk ook eens in het Details-panel om te zien of alles voor de Collision staat zoals hieronder (normaal wel).

  • Vergeet niet op Save te klikken om de wijzigingen te bewaren.

Deur toevoegen aan het level

We gaan nu de deur in het level plaatsen.

  • Sleep de Static Meshes SM_Door en SM_DoorFrame in het level.
  • Gebruik de gekende technieken om deze actors de plaatsen en eventueel te roteren en te schalen.

  • Omdat de deur moet kunnen roteren moet de Mobility van SM_Door op Movable staan.


Quixel Megascans

Onderstaande video toont hoe u Quixel Megascans kunt gebruiken voor het “inkleden” van een Level.


Project Level Creation – Meshing pass

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


Quickshots

Quickshots (of Quicktips) zijn korte, op zichzelf staande video’s, rond een specifiek onderwerp. Meestal aansluitend bij wat net besproken is (en soms al een stapje vooruitlopend).

Solving Errors – No Collision

Easily Add Starter Content & Game Templates Into Existing/Empty Project


Cursisten in actie

In onderstaande video maakt cursist Thomas Van Sande een deur aan op basis van BSP brushes en zet deze later om naar een static mesh.


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

  • IC BC017 – kan ICT veilig en duurzaam gebruiken
  • IC BC023 – kan ICT aanwenden om problemen op te lossen
  • IC BC247 – kan de bouwstenen van een specifieke ontwikkelomgeving gebruiken
  • IC BC248 – kan bouwstenen voor een specifieke ontwikkelomgeving maken
  • IC BC250 – kan bij het programmeren in functie van een specifieke ontwikkelomgeving, een juiste logica volgen
  • IC BC344 – kan oplossingen voor eenvoudige probleemstellingen bedenken

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.