Tijdens de les behandeld (3D periode 4 jaar 2 2011/2012) Next-gen level in Unity Naamgeving en mappenstructuur De mappenstructuur en benaming van de verschillende assets bij het maken van een van een next-gen level super belangrijk. Zo zijn er in een standaard level al rond de 500 verschillende textures en rond de 800 verschillende modellen. Je kunt je voorstellen dat het lastig word om in zulke grote hoeveelheden assets de juiste te vinden. Zorg ervoor dat elk model en elke texture benamingen heeft die bij elkaar passen en begrijpelijk zijn. Zo heet een stoel in een klaslokaal bijvoorbeeld Chair_Classroom_A.fbx en zijn bijbehorende texture Chair_Classroom_A_diffuse.tga (zijn normal texture heet dan Chair_Classroom_A_normal.tga) In de mappenstructuur zorg je voor een duidelijke structuur waarin je in ieder geval verschillende levels in aparte mappen zet maar wellicht ook ruimtes binnen die levels. Bijvoorbeeld: Warehouse(level) Meshes (.fbx files) Roof Street External props Internal props Materials Textures (.tga en.jpg) Meshes Met meshes bedoel ik alle objecten die je in een 3d pakket hebt gemaakt en wil importeren in je game-engine. Op dit moment is de meest gebruikte manier van werken de fbx-workflow. Dit betekent dat het.fbx formaat van autodesk wordt gebruikt om tussen de verschillende software pakketten te exporteren en importeren.
Let bij het exporteren vanuit je 3d pakket op het volgende: 1. Zorg dat alle software dezelfde fbx versie gebruikt. (kijk hier voor de laatste versie: http://usa.autodesk.com/fbx/) 2. Smoothing groups 3. Tangents and Binormals (deze gebruik je alleen als je zelf UV-unwraps hebt gemaakt in je 3d pakket) 4. Animaties 5. Scene Units altijd op METERS (Advanced settings tijdens export en in unitsetup van max zelf) Textures Gebruik zoveel mogelijk.tga files. Tegenwoordig kun je echter ook jpg files en zelfs psd files inladen. Unity converteert deze vervolgens naar zijn eigen formaat. LET OP!!! Als je psd files gaat gebruiken gaat dit wel ten koste van je performance. En als je jpg files gebruikt kun je geen alpha kanaal toevoegen. De meeste game-engines kunnen een maximale texture grootte aan van 4096*4096px. Binnen de game-engine kun je vaak kiezen voor een algemene maximale grootte. Als je dit instelt zal hij alle textures aanpassen naar dat formaat (bijvoorbeeld 1024px). LET OP!!! Gebruik altijd texture formaten tot de 2emacht (x 2 ). Dus: 1024*1024, 2048*2048, 1024*2048, 512*16, etc.
Materials Een materiaal in een 3d-game-engine bestaat uit een texture (het plaatje/de foto die de basis vormt) en de shader. De shader is programma code die één of meer textures combineert en vertaalt voor je grafische kaart. Wikipedia over de pixel shader: Een pixel shader is een stuk programmacode dat geavanceerde kleuring in rasterizers (waaronder huidige videokaarten) mogelijk maakt. Dit stuk programmacode wordt voor elke pixel die er getekend wordt uitgevoerd en heeft tot taak om de kleur van die pixel te berekenen. Het is verwant aan de vertex shader, dat een stuk programmacode is dat voor elke vertex uitgevoerd wordt. Hieronder zie je een aantal thumbnails waarin je de verschillende standaard shaders van unity ziet. De meest gebruikte shader voor AAA-games binnen unity is de de bumped specular. Deze shader zorgt ervoor dat het materiaal zo realistisch mogelijk uitziet waarbij er rekening wordt gehouden met de verschillen in specularity binnen het materiaal en er ontstaat diepte door de gebruikte normal-map. De verschillende texture-maps die we gebruiken in game-engine s zijn:
Diffuse (dit is de foto/plaatje die de kleur bepaald) Specular (deze zit meestal in het alpha kanaal en is een grijswaarden variant van de diffuse en bepaalt welke gedeeltes reflecteren ) (letterlijke vertaling = Spiegeling) Normal (bepaald de bump, zorgt voor hoogte in je materiaal. Vooral gebruikt voor afgeronde hoeken en kleine details.) Height (wordt gebruikt voor parallax materialen en bepaald de hoogte. Wordt vrijwel altijd gecombineerd met een normal map. De Height-map bepaald dan de grove diepte werking en de normal zorgt voor de details in de diepte. Wordt vaak gebruikt voor Trappen, stenen vloeren en muren. Opacity(zorgt voor transparantie in je materiaal en zit meestal in het alpha kanaal van de diffuse) Illumination (bepaalt welke gedeeltes van een texture licht lijken te geven en welke kleur dit licht heeft) LET OP!!! Tijdens het importeren moet je bij de meeste textures aangeven welk type Map het is. Standaard staat de importer altijd op diffuse maar als je bijvoorbeeld een normal-texture importeert zal je in de importer moeten aangeven dat hij dit als een normal-map moet behandelen. Dit is nodig om de shader goed zijn werk te laten doen, heb je de verkeerde instelling dan heb je meestal een lelijk materiaal. Belichting Start altijd met de belangrijkste lichtbronnen, zorg dat deze de scene mooi belichten en ga vervolgens de detail belichting van kleinere lampen etc instellen. In een standaard scene heb je vrijwel altijd een sterk licht nodig dat de zon nabootst. Ook als je een indoor scene opzet heb je vaak veel licht van de zon dat door ramen naar binnen schijnt. Voor ons zonlicht gebruiken we een directional light. Een directional light heeft als voordeel dat het overal in de gamewereld met dezelfde intensiteit en in dezelfde hoek schijnt, net zoals onze echte zon lijkt te doen. Daarnaast geeft onze zon een gelig licht dus passen we haar kleur aan naar een wit-geel. Zon: Hier gebruik ik soft shadows deze zorgen voor het beste resultaat maar kosten wel rekenkracht tijdens het spelen van het spel. Geef je zon ook meteen een duidelijke naam.
We zien echter direct dat de zon niet door onze ramen naar binnen schijnt. De meest eenvoudige en meest gebruikte methode om dit op te lossen is door het uitzetten de cast-shadow functie van de raam meshes. In je scene zie je nu dat ook binnen de zon effect heeft op de belichting. Standaard staat er een sterke ambient belichting aan die het effect van onze eigen belichting minimaliseert. Om deze globale belichting uit te zetten zetten we de kleur van de Ambient Light in de Render settings van grijs naar zwart.
Character controller settings