Starten met programmeren van een 3D omgeving in Unreal Engine – Importeren vanuit Sketchfab

print
Deze handleiding maakt deel uit van het programmeertraject:


Inhoud


Wat vooraf ging


Inleiding

Een omgeving bestaat uit assets, een kamer bestaat uit tafels, stoelen, kasten, ….

U kunt deze allemaal zelf ontwerpen in bv. Blender of u kunt bestaand materiaal gebruiken. Dit bestaand materiaal moet u dan ergens gaan halen en importeren.

De ideale blek is de Marketplace van Epic zelf, maar dit komt vaak met een prijskaartje. Dit is ideaal omdat alles geoptimaliseerd is voor Unreal Engine en meestal meteen gebruiksklaar is.

Maar we willen het gratis houden en zoeken buiten de Marketplace. Sketchfab is een plek waar u 3D objecten kunt bekijken, sommigen downloaden en sommigen zijn nog gratis ook. De objecten die hier aangeboden worden zijn meestal van goede kwaliteit.

Probleem is, een download vanuit Sketchfab (of andere sites) is niet geoptimaliseerd voor Unreal Engine en vraagt nog wat extra werk.

In deze handleiding geef ik een paar voorbeelden van downloads en het nodige werk achteraf.


Sketchfab

  • Ga naar Sketchfab.com.
  • Maak een account aan, dit kan gratis. U kunt Sketchfab ook gebruiken om zelf modellen te uploaden, te delen en te verkopen, maar dit valt buiten de doelstelling van deze handleiding.

  • Bovenaan kunt u zoeken naar wat u wenst (bv. een Chesterfield), vink ook Downloadable aan want we willen het downloaden.

U kunt nu beginnen met rond te klikken naar een gewenst model.


Modellen

Voor we downloaden letten we op 2 zaken.

  • Het formaat moet FBX of OBJ zijn en het model moet te gebruiken zijn in Unreal Engine (het Unreal Engine icoontje dient aanwezig te zijn).
  • Bekijk de licentie, weet zeker dat u het mag gebruiken (eventueel met credit aan de maker)!

Ik ga in deze handleiding werken met 4 modellen die voldoen aan bovenstaande voorwaarden.

Wild West Motorcycle

https://sketchfab.com/3d-models/wild-west-motorcycle-6038a0b13fbe434f901af27fec8391ab

Wooden Table

https://sketchfab.com/3d-models/wooden-table-acd1cef307b94803846d624b251a4e63

Sofa Web

https://sketchfab.com/3d-models/sofa-web-0fe3264cdfa8482a83830450d05ae1f1?ref=related

X-Wing

https://sketchfab.com/3d-models/x-wing-6fdd3b18c4b245bf9eba1fd32611496a


Downloaden en importeren

Downloaden

  • Bewaar de download en unzip de bestanden, let op, er kunnen ook Zip-bestanden binnen de Zip-bestanden zitten, unzip deze ook en verwijder de Zip-bestanden.

Importeren

  • Start het project waar u de gedownloade modellen wilt importeren.
  • Maak eventueel een passende map aan binnen het project.
  • Sleep de modellen vanuit de Verkenner in deze map.
  • U krijgt het FBX Import Options scherm.

  • De instellingen kunnen verschillen per import. Laat ze staan zoals ze staan en klik op Import All. Wie toch meer wilt weten over de instellingen kan in de officiële documentatie terecht.
  • Eventuele meldingen, zoals hieronder, mag je negeren.

Na het importeren van de 4 modellen, in een map Modellen krijgt u volgende structuur.

Merk op dat er steeds 2 mappen zijn:

  • Source – de verschillende onderdelen
  • Texture – de textuur, het materiaal van het model

Source samenvoegen tot een mesh

  • Selecteer alle onderdelen in de map Source die samen het model vormen.

Wild West Motorcycle

Wooden Table

Sofa Web

X-Wing

  • Sleep de geselecteerde onderdelen naar de viewport. Ik ga dit demonstreren met het meest complexe model de Wild West Motorcycle, dan zal dit zeker voor de anderen ook lukken.

Merk op dat alle onderdelen meteen mooi één geheel vormen. Merk ook op dat de schaal niet correct is, te groot. Het model komt dan ook niet uit de Marketplace van Epic en is niet echt geoptimaliseerd. We gaan de schaal voorlopig negeren, we kunnen deze later nog wijzigen.

Nu, deze Wild West Motocycle heeft ook nog een stukje “grond” (een plane), dat we niet gaan opnemen in ons uiteindelijke mesh.

  • Met de Ctrl-toets ingedrukt, klik op WWMotorcycle_Plane_001 om het te deselecteren.

  • Met de huidige selectie, klik met de rechtermuisknop in de selectie en kies voor Convert Actors To static Mesh.

  • Indien nog niet aangemaakt wordt een map Meshes aangemaakt waar u de nieuwe Static Mesh kunt bewaren onder een eigen naam.

  • U mag nu de geselecteerde items verwijderen, we hebben nu immers een Static Mesh die we kunnen gebruiken.
  • Neem eens een kijkje in de map Meshes, u ziet er uw WildWestMotor staan.

  • Dubbelkik om de static mesh te bekijken.

U ziet de static mesh, de verschillende elementen die samengevoegd zijn maar… u hebt nog geen materialen, textures, toegewezen. Of beter gezegd, er is een materiaal toegewezen Motorcycle, maar dit materiaal is nog niet uitgewerkt.

  • Voor we materialen gaan toekennen, herhaal het bovenstaande voor de andere modellen.

Materialen toevoegen (texturing)

Wild West Motorcycle

  • Keer terug naar de Source map van het object (Wild West Motorcycle).

Met een beetje geluk vindt u hier reeds een materiaal dat klaar staat om te gebruiken. Inderdaad, u ziet hier het materiaal Motorcycle.

  • Dubbelklik om het te openen. Sleep het een beetje opzij zodat u de 2 nodes ziet.

  • De node met de witte kleur (None) gaan we niet gebruiken en mag u verwijderen (selecteren en Delete-toets). Eigenlijk is dit een Kleur-node die u kunt gebruiken om een kleur toe te kennen. Vermits er geen kleur toegekend is staat deze op None. Moest u dubbelklikken op de node (witte vierkantje) dan kan je een kleur selecteren).

  • Laat dit venster open staan en keer terug naar de Content Browser.

De materialen (textures) die we nodig hebben vindt u in de betreffende map Textures.

  • Selecteer de materialen.

  • Sleep ze naar het openstaande venster Material.
  • Verbindt de UV-pins van de verschillende textures zoals hieronder weergegeven.

MatTest_albedo2 -> Base Color (basiskleur)
MatTest_metallic2 -> Metallic (bepaalt de metalen delen)
MatTest_roughness2 -> Roughness (bepaalt de ruwheid)
MatTest_emissive2 -> Emissive Color (oplichtende kleur)
MatTest_normal2 -> Normal (bepaalt diepte, reliëf)
MatTest_AO2 -> Ambient Occlusion (lichteffecten)

  • Klik op Apply en Save.
  • Neem terug een kijkje naar de mesh en merk op dat de materialen toegepast zijn.

Wooden Table

De Wooden Table heeft 2 materialen, een materiaal voor de top en een materiaal voor de bot(tom). Bovendien staan de materialen reeds in de Source map, dezelfde staan ook in de Texture map.

  • Dubbelklik het materiaal Table_TopMat en verwijder weer de Kleur-node.
  • Sleep alle textures die “top” bevatten naar het geopende Material en maak onderstaande verbindingen.

  • Klik op Apply en Save.
  • Herhaal dit voor Table_BotMat.

  • Klik op Apply en Save.
  • Neem terug een kijkje naar de mesh en merk op dat de materialen toegepast zijn (oké, blijkbaar ligt de tafel op zijn zij, maar dit is niet meteen een probleem).

Sofa Web

Sofa Web stelt ons voor een probleem. Er zijn vier onderdelen en 4 materialen beschikbaar. Tot zover geen probleem.

Maar als we nu gaan kijken in de Textures map ziet u nauwelijks textures, bovendien blijkt er een basismateriaal te ontbreken.

Ik zal dus eigen materiaal moeten gebruiken en heb daartoe de Starter Content toegevoegd.

  • Terug naar de Source map, open pasted__sofabody2Shape_bakedmtl2 en maak onderstaand Material aan. Dit zou nu al moeten lukken zonder verdere uitleg.

  • Klik op Apply en Save.
  • Open vervolgens pasted__sofalegsShape_bakedmtl2.
  • Verwijder opnieuw de Kleur-node.
  • Klik met de rechtermuisknop op de achtergrond en zoek naar TextureSample.

  • In de eigenschap Texture zoekt u naar bv. Oak (eik).

  • Selecteer T_Wood_Oak_D, D staat voor Diffuse en moet u verbinden met Base Color.

  • Klik rechts en zoek opnieuw naar TextureSample.

In de eigenschap Texture zoek opnieuw naar Oak (of de houtsoort die u hierboven gekozen hebt). Selecteer T_Wood_Oak_N, N staat voor Normal. Maak de verbinding met Normal. De Normal geeft diepte aan het materiaal.

  • Klik op Apply en Save.
  • Herhaal het bovenstaande voor pasted__buttonsmat1 maar zoek naar Gold (voor gouden knoppen of kies een ander materiaal). Voer dezelfde stappen uit als hierboven voor Oak.
  • Maar… goud is een metaal, en goud blinkt. We gaan dan ook waarden geven voor Metalic en Roughness (hoe minder ruw het materiaal hoe hoger de weerspiegeling). De waarden die we toekennen moeten liggen tussen 0 en 1. Zoek hiervoor naar een Constants-node (door rechts te klikken op de achtergrond van Material).

  • Metalic kan een waarde hebben van 0 (geen metaal) of 1 (metaal). Rougness krijgt een waarde tussen 0 en 1. Hoe meer naar 0, hoe meer de weerspiegeling. Een spiegel zal een Roughness hebben van 0. Zand zal een Roughness hebben van 1.
  • Speel een beetje met de waarden van Roughness, ik heb gekozen voor 0,2.

  • Klik op Apply en Save.
  • Herhaal dit nu voor pasted__coopermat1. Identiek hetzelfde maar met een hogere Roughness, die voor matter effect zorgt. Ik koos een waarde van 0.6.

  • Klik op Apply en Save.
  • Neem terug een kijkje naar de mesh en merk op dat de materialen toegepast zijn.

X-Wing

Tenslotte de X-Wing. In de Source map vindt u tientallen genummerde materialen.

In de Texture map vindt u heel wat materialen, die NIET alle genummerde materialen dekken.

Enkel moedige mensen beginnen aan deze puzzel, ik behoor niet tot deze soort.

Dit om te illustreren dat het niet altijd zal eenvoudig lukken om de mesh aan te maken.


Collision

Als we deze objecten in een 3D wereld willen gebruiken, waarin we rondlopen, moeten we nog collision toevoegen zodat we niet dwars door deze objecten kunnen doorlopen.

  • Open de mesh van bv. de WildWestMotorcycle.

Er is reeds Complex Collision.

U kunt deze gebruiken door de Collision Complexity te wijzigen naar Use Complex Collision As Simple.

Nu, Complexe collision eist meer rekenkracht en is niet altijd nodig. Vaak is Simple Collision voldoende.

  • U kunt dit aanmaken via CollisionAdd Box Simplified Collision en Project Default blijven gebruiken voor Collision Complexity.

  • Kijk dit ook na voor de andere meshes.

Behandelde Basiscompetenties uit de module ICT Programmeren – Integratie externe functionaliteiten

  • IC BC024 – * kan zijn eigen deskundigheid inzake ICT opbouwen
  • IC BC232 – kan digitale tools gebruiken om modellen, simulaties en visualisaties van de realiteit te maken
  • IC BC254 – kan externe content integreren en structureren
  • IC BC255 – kan de geïntegreerde content in functie van het beoogde eindresultaat aanpassen
  • IC BC256 – kan diverse elementen tot een nieuw betekenisvol geheel samenstellen
  • IC BC258 – houdt rekening met regelgeving m.b.t. licenties voor het gebruik en de publicatie van broncode
  • IC BC288 – kan ICT-problemen oplossen

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.