2
Verslag Vrije Opdracht DC Metro Station
Inleiding Al vanaf het eerste moment dat ik te horen kreeg over de vrije opdracht had ik al een idee in welke richting ik de opdracht wou doen. Van jongs af aan speel ik videogames en in mijn vrije tijd mag ik graag 3d modeleren. In de zomervakantie van 2008 ben ik voor de ut3 mod Tactical Assault gamemodellen gaan maken en dit was dan ook mijn beginpunt van het 3d modeleren specifiek voor game engines. Begin 2009 ben ik overgestapt naar het Warm Gun team en daar zit ik nu nog steeds bij. Het mooie van deze vrije opdracht is dat ik 2 vliegen in 1 klap vang aangezien ik zowel EC punten ontvang voor me studie als dat ik het Warm Gun team help door het aanleveren van de door mij gemaakte modellen. En ik doe natuurlijk heel wat kennis op wat ik goed kan gebruiken als ik straks na mijn bachelor een baan ga zoeken in de gameindustrie als environment artist of iets in die richting. Elk jaar komen er nieuwe technieken bij om computerspellen zo efficiënt mogelijk te laten draaien. Men moet continu bijleren om mee te kunnen doen. Een van deze technieken is het gebruik maken van ‘normal’ maps/textures. Dit is een erg slimme en tegenwoordig veelgebruikte techniek om diepte details te faken op gamemodellen. Een manier om normal maps te maken is door een highpoly (veel detail) en een lowpoly (weinig detail) model te maken waarbij het detail van het highpoly model als het ware geprojecteerd word op het lage detail model met behulp van een normal texture. Hierdoor krijg je ogenschijnlijk veel diepte en relief voor een fractie van de performance, uitermate geschikt voor games dus!
3
Verslag Vrije Opdracht DC Metro Station
Opdrachtomschrijving
Thema
Ontwerp een set 3d game modellen in een specifiek thema voor het bouwen van een level/scene in Unreal Engine 3 (UE3) naar de maatstaven van de next-gen/current-gen game-development (PC/PS3/Xbox360). Dit houdt dus in dat voor een groot gedeelte er 2 versies van een model zullen zijn, een low en een highpoly model. De highpoly modellen zullen zowel door sculpten als door sub-division modelling gemaakt moeten worden.
Het thema heb ik gekozen in overleg met het Warm Gun team. Aangezien er al meerdere levels gemaakt worden voor Warm Gun die zich afspelen in een natuurlijke omgeving werd mij aanbevolen om een level te maken in een urban omgeving. Het idee van een verlaten stad sprak me erg aan maar het leek mij niet geschikt om een heel stadsgebied in mijn eentje te maken vanwege de hoeveelheid werk die daarvoor nodig is.
Maak verder een verslag/artikel waarin de gebruikte technieken uit worden gelegd zodat buitenstaanders globaal begrijpen wat er bij game development komt kijken. Aanpak/planning Er is 160 uur gegeven voor de vrije opdracht. Deze zullen globaal als volgt verdeeld worden. Taak Educatie/onderzoek workflow Highpoly modellen maken Lowpoly modellen maken Textures maken Level/scene opbouwen in UE3 Verslaglegging
Tijdbesteding 20 50 20 40 10 20
Vervolgens kwam het idee van ondergrondse metro tunnels. Dit onderwerp leek mij juist wel geschikt aangezien er veel mogelijkheid is tot Modulair Ontwerpen (hergebruik van modellen, zie verderop in het verslag). Nadat ik het idee had voorgelegd aan het Warm Gun team en goedkeuring kreeg ben ik begonnen met het zoeken naar referenties.
4
Verslag Vrije Opdracht DC Metro Station
Gebruikte software Voor dit project heb ik de volgende programma’s gebruikt: 3ds max 2010 3d modellen maken (zowel high- als lowpoly), unwrappen, normal maps en overige maps bakken, opzet level indeling. Photoshop CS3 textures maken, normal maps maken met nvidea filter plugin. Crazybump normal maps maken Zbrush 3.1 en 3.5 sculpten van highpoly modellen Meshlab lowpoly modellen maken van highpoly modellen UE3 editor (UnrealEd) level bouwen Unreal Development Kit (UDK) level bouwen Indesign CS4 verslag maken
Ik werk al enkele jaren met 3ds max en photoshop dus dit was geen moeilijke keuze. Alhoewel er zeker goede alternatieven bestaan voor 3ds max vind ik het vooral een groot voordeel dat er veel gratis tutorials te vinden zijn op internet die gaan over deze software. Voor het maken van normal maps door middel van filters heb ik zowel de nvidea filter plugin voor Photoshop gebruikt als het aparte programma Crazybump. Het nvidea filter is gratis maar Crazybump is vele malen uitgebreider. Zoals uit de titel van mijn opdracht al wel blijkt heb ik UDK gebruikt om mijn level in te maken. Echter bij aanvang van de vrije opdracht was deze nog niet beschikbaar en werkte ik in de UE3 editor die standaard bij het spel Unreal Tournament 3 werd geleverd. Gaandeweg het project ben ik overgestapt op UDK. Voor het sculpten van highpoly modellen heb ik voor Z-brush gekozen. Een goed alternatief hiervoor was Mudbox geweest. Uiteindelijk heb ik voor Z-brush gekozen omdat hier net als bij 3ds max enorm veel gratis tutorials over te vinden zijn op internet. Ook heeft Z-brush naar mijn weten een stuk meer mogelijkheden en tools maar als ik de verhalen van andere mensen op forums hoor die kennis hebben van beide stukjes software is Mudbox veel makkelijker te leren.
5
Verslag Vrije Opdracht DC Metro Station
Referenties Voordat men direct begint met modeleren is het van groot belang om referenties en inspiratiebronnen te hebben. Ik gebruik hiervoor vooral Google en fotosites als Flickr. Het is altijd een speurtocht naar de juiste zoekwoorden maar met wat trial en error zijn er over elk onderwerp wel afbeeldingen te vinden. Tijdens het zoeken naar afbeeldingen heb ik ook de keuze gemaakt om een Washington DC Metro station te maken. Ik was vooral gecharmeerd van de futuristische architectuur en het leek mij erg leuk om hier een post-apocalyptisch sausje aan te geven. Ook heb ik in de videogame Fall Out 3 al door een toekomstige post-apocalyptische versie van deze metro station gelopen dus dit bood een mooi inspiratiebron. In totaal heb ik ruim 250 afbeeldingen verzamelt waaronder foto’s van de echte subway stations rond DC Washington, screenshots uit Fall Out 3 en overige metro tunnels en stations. Daarnaast heb ik nog wat PDFs kunnen vinden met blueprints en visualisaties van de nieuwe modellen metrotreinen die nog in gebruik moeten worden genomen. Een kleine greep uit deze afbeeldingen staat rechts op de pagina.
6
Verslag Vrije Opdracht DC Metro Station
Level indeling Nadat ik genoeg referenties had gevonden ben ik verder gegaan met het bepalen van de layout van mijn level. Mijn oorspronkelijke idee was om een symmetrisch Capture The Flag level te maken. Op deze manier hoef je slechts de helft van de map te maken.
Maar aangezien dit al erg vaak gedaan en cliché is ben ik hier maar toch van afgeweken. Vervolgens heb ik een nieuwe block out gemaakt van een zeer klein 1v1 DeathMatch level. Ik wou het met opzet zo klein mogelijk houden aangezien een compleet level maken erg veel tijd kan kosten. Oorspronkelijk wou ik ook rekening houden met goede gameplay en dus de speelbaarheid testen echter omdat Warm Gun gedurende het maken van dit level uberhaupt nog nauwelijks speelbaar was ben ik hier van afgeweken. Ook zou het rekening houden met goede speelbaarheid extra tijd kosten want je moet constant bezig
zijn met waar spelers zullen gaan lopen. Uiteindelijk heb ik mij vooral geconcentreerd op het uiterlijk van het level. De indeling heb ik overgenomen van de echte stations waarbij ik het perron gedeelte ingekort heb om het level klein te houden. Ik heb als het ware meer een omgeving gemaakt dan een losstaand speelbaar level. Waarschijnlijk zal mijn metrostation later wel gebruikt worden als onderdeel van een groter level welke zich ook bovengronds afspeeld.
7
Verslag Vrije Opdracht DC Metro Station
Modulair Ontwerpen Mijn doel vanaf het begin was om Modulair Ontwerpen toe te passen in mijn level. Dit houdt in dat je omgevingen/objecten opbouwt uit kleinere modellen die als lego op elkaar passen. Dit heeft 2 grote voordelen. Ten eerste kun je enorm besparen op de arbeid aangezien je met slechts een paar modulaire modellen oneindig veel combinaties kunt maken en zo een complete omgeving kunt opbouwen uit slechts enkele blokken. Ten tweede bespaar je ook enorm op rekenkracht en geheugenruimte. Voor een computer is het een koud kunstje om een 3d model te klonen en dit kost nauwelijks extra rekenkracht. Daarnaast heb je slechts enkele textures nodig i.p.v. unieke textures voor elk model. Een duidelijk voorbeeld van modular design in mijn level is het bovenplateau. Deze bestaat uit slechts 6 verschillende blokjes. Gedurende het werken aan mijn level heb ik ook continue de layout van het bovendek kunnen veranderen door de blokjes anders neer te leggen.
8
Verslag Vrije Opdracht DC Metro Station
Polycount en texture resolutie Een zeer belangrijk aspect van het maken van 3d modellen voor games is dat deze efficient moeten zijn. Hiermee bedoel ik dat met zo min mogelijk rekenkracht zoveel mogelijk grafische pracht weergegeven moet worden. De grootste factoren zijn hierbij de polycount en texture resolutie van een 3d model. Een 3d model bestaat uit allerlei platte vlakken, ook wel polygonen genoemd. Een polygoon kan staan voor een driehoek, vierhoek, vijfhoek etcetera. Het aantal polygonen waaruit een 3d model bestaat heet dan ook de polycount. Maar eigenlijk bestaat een 3d model uit allemaal driehoekjes, triangles genaamd. Immers, een vierhoek bestaat uit 2 triangles en een vijfhoek uit 3. Een betere telling van het aantal vlakjes waaruit een 3d model bestaat is dan ook de tricount. In de praktijk wordt echter met polycount en tricount meestal hetzelfde bedoeld. Daarnaast maakt een 3d model ook gebruik van een texture. De resolutie van de texture is bepalend voor hoe scherp het model oogt. De vraag is nu, wat is een geschikte tricount en texture resolutie? Op deze vraag is geen eenduidend antwoord te geven. Het hangt er namelijk van af waar je 3d model voor gebruikt wordt. Voor een 3d game op een mobiel gelden hele andere limieten dan een game voor high-end pc’s. Ook kan het per engine (software waarop de game draait) verschillen.
En zelfs binnen een spel moet je met verschillende factoren rekening houden zoals hoe het model gebruikt word. Is het een belangrijk pronkstuk in je level die maar 1 keer wordt geburikt of is het slechts decoratie op de achtergrond welke 100 maal voorkomt in je level. In het eerste geval kun je misschien wat meer triangles toekennen, in het tweede geval is het zeer belangrijk om het model te optimaliseren. Om toch niet al te vaag blijven kan ik een hele praktische tip geven: analyseer de tricounts en texture resoluties van modellen van vergelijkbare spellen. Zo heb ik erg veel modellen bekeken die gebruikt worden in Unreal Tournament 3. Niet alleen is dit handig om een gevoel te krijgen van de limieten, ook is het erg leerzaam op de opbouw te bestuderen van modellen die gemaakt zijn door profesionals. Dus nogmaals, als je niet zeker bent uit hoeveel triangles een model mag bestaan, zoek een vergelijkbaar model op uit een vergelijkbaar spel en gebruik dit als referentie.
9
Verslag Vrije Opdracht DC Metro Station
Level opdelen Nadat ik mijn referenties had gevonden heb ik de afbeeldingen van de DC Washingtons stations goed bestudeerd en bepaald hoe ik het beste te werk kon gaan. Ik heb de omgevingen in kleine stukjes verdeeld en in mijn hoofd een planning gemaakt in welke volgorde ik de modellen zou maken.
10
Verslag Vrije Opdracht DC Metro Station
Aan de slag Nu de nodige voorbereidingen zijn getroffen kunnen we eindelijk aan de slag. Als eerste ben ik begonnen met het maken van een ruw level in UDK met tijdelijke modellen. UDK biedt hierbij zijn eigen modeling tools waarmee je snel een level kunt schetsen. Ook heb ik enkele simpele modellen in 3ds max gemaakt zoals de bovenplateau objecten en geimporteerd in UDK. Deze eerste versie van het level dient vooral als template waarbij later alles vervangen zal worden door mooie modellen. Het is nu vooral zaak om te testen of de schaal goed is en om te beoordelen of de indeling van het level je bevalt. Voor het testen van de schaal kan het toevoegen van referentieobjecten zoals gamepersonages goed helpen.
Vervolgens ben ik begonnen met het maken van modellen die in de uiteindelijke versie van het level terecht zullen komen. Net zoals bij een schilderij begin je eerst met de grote vormen en ga je langzamerhand steeds meer in detail werken. Zo ben ik begonnen met het plafond, de vloer en het bovenplateau.
Zoals eerder verteld heb ik het Modulair Ontwerpen principe toegepast op het bovenplateau zodat ik makkelijk van indeling kan veranderen. Ditzelfde principe heb ik ook toegepast op het plafond. Het plafond bestaat niet uit 1 groot model maar uit meerdere kleine modellen zodat het level eenvoudig korter of langer te maken is. Ook bied mij dit de mogelijkheid om later enkele blokken te vervangen door modellen met gaten erin of andere beschadigingen.
11
Verslag Vrije Opdracht DC Metro Station
Nu de grote vormen gemaakt zijn kan er meer gelet worden op de kleinere modellen. Ik heb van tevoren geen strakke planning gemaakt van welke modellen ik in mijn level wil hebben of wanneer ik ze maak. Meestal als ik met een model klaar was, raadpleegde ik mijn verzameling referentiefoto´s en zocht ik een nieuw object uit waar ik zin in had om te maken. Natuurlijk probeerde ik wel zoveel mogelijk nieuwe technieken uit. Het stenen bankje was bijvoorbeeld uiterst geschikt om te maken met behulp van het sculptprogramma Z-brush. Ook de gele pionnen bleken een goede testmodel om meer te weten te komen over de eigenschappen van normal maps. Meer over deze 2 modellen kun je lezen verderop in het verslag waarin ik uitgebreid inga over de opgedane kennis.
Het volgende waar ik mij mee bezig ging houden waren de gaten in het plafond. Deze dienen niet alleen ter decoratie om aan te geven dat het station vervallen is maar zijn ook belangrijk als ‘logische’ lichtbron. Het zou vreemd zijn als de verlichting in het station nog zou branden na tientallen jaren. Een andere belangrijke reden om de gaten met daglicht toe te voegen was om het level meer te distantieren van de metro stations in Fall Out 3. In dit spel zijn de station erg grauw en duister. Het leek mij daarom een goed idee om juist een warmere sfeer te creeeren.
Niet geheel ontoevallig ben ik ook op dit moment overgestapt van de UT3 editor naar UDK. UDK biedt namelijk een geheel nieuw belichtingssyteem genaamd Lightmass. Dit houdt in dat nu ook het indirecte/weerkaatste licht word berekend, ook wel indirect of global illumination genaamd. Precies wat ik nodig had voor mijn level! Voorheen moest je altijd tientallen lichten met de hand plaatsen om de indirect illumination te simuleren. Nu hoefde ik slechts 1 zonlicht te plaatsen en werd al het weerkaatste licht in het station automatisch berekend. Het is echter wel belangrijk om pas op het eind de belichting helemaal goed te tweaken. Het is niet efficient om nu al veel tijd hieraan te besteden aangezien het toevoegen van modellen
12
Verslag Vrije Opdracht DC Metro Station
de belichting in het level kan veranderen vanwege de indirect illumination. Ik heb me vervolgens bezig gehouden met verdere opvulling van het station. Tot nog toe is het level redelijk kaal en levensloos. Kleine details zoals kranten en troep kunnen veel ‘verhaal’ toevoegen door te insueren dat er zwervers op het station geleefd hebben (of misschien leven ze er nog steeds wel!). Aangezien mijn idee was om overal rommel te verspreiden moet er zuinig omgegaan worden met de tricount en texture resolutie. Ik had daarom een texture gemaakt met wat papier rommel en die op een vlakke plane (= 2 tri’s) gezet. Deze plane heb ik vervolgens rondgekopieerd door het level heen.
Al snel werd duidelijk dat op deze manier de papierrommel er erg kunstmatig verspreid uitzag. Natuurlijk zou het helpen als ik met de hand alle planes een voor een zou plaatsen en roteren maar dan nog zou het mijns inziens er nep uitzien. Daarom heb ik besloten de rommel op een andere manier te maken. In plaats van de willekeurigheid van verspreiding in de texture te stoppen, kan deze ook in het model gestopt worden door gebruik te maken van individuele planes voor elk stukje papier. Op deze manier kan met slechts 1 texture heel veel verschillende modellen gemaakt worden. Dit kost wel meer triangles maar dat weegt niet op tegen het besparen op textures en meer willekeurigheid.
13
Verslag Vrije Opdracht DC Metro Station
Na het toevoegen van de vlakke papierrommel ben ik verder gegaan met het maken van minder plat afval zoals bekers, drinkpakken, sigaretten etc. Voor kleine objecten zoals deze is het beter om meerdere modellen op een texture sheet te plaatsen. Naast het voordeel dat je de uv´s dichter opelkaar kunt leggen (minder loze ruimte) heeft dit ook gunstige gevolgen voor de performance. De Unreal 3 engine gaat namelijk efficienter om met bijvoorbeeld 1 grote texture sheet van 1024x1024 dan 4 kleine textures van 512x512. Vraag me niet waarom, dat is meer iets voor programmeurs. Evenzo geldt voor kleine objecten dat het qua performance meestal gunstig is om ze als groep objecten samen te voegen tot één 3d model.
Nu heb ik eerder mooie gaten in het plafond gemaakt maar de grond die verzakt is moet natuurlijk ook nog toegevoegd worden. Hiervoor heb ik de terrain tool gebruikt welke standaard in UDK zit. Met de terrain tool kun je een lap grond toevoegen aan je level welke je kunt bewerken met zelf in te stellen brushes (kwasten). Met deze brushes kun je stukken grond in hoogte toe laten nemen of juist laten dalen. Daarnaast kun door middel van vertex painting aangeven waar welke texture/terrain materiaal moet verschijnen. Als je bijvoorbeeld een zand texture en een steen texture hebt, kun je zelf tekenen waar je zand wilt hebben en waar je steen wilt hebben. In mijn geval heb ik deze techniek gebruikt om te varieren tussen puin met én zonder mos.
14
Verslag Vrije Opdracht DC Metro Station
Een ander groot voordeel van het gebruik van terrain is dat je naast textures, ook 3d modellen op de grond kunt tekenen. Dit bespaart enorm veel tijd als je bijvoorbeeld veel flora en fauna wilt toevoegen. Je kunt meerdere layers maken met elke layer zijn eigen plantengroep. Als je hebt aangegeven waar je een bepaalde layer wilt hebben kun je ook nog waardes aanpassen van de 3d modellen zoals de grootte, variatie in grootte, hoek met de ondergrond, dichtheid etc. Een heel stuk flexibeler en sneller dan dat je met de hand alles een voor een zou toevoegen!
Nadat ik de begroeiing had gemaakt en in het level gezet had vond ik het tijd om meer aandacht aan de belichting te besteden. Gedurende het bouwen aan het station was ik wel continu bezig geweest de belichting naar wens in te stellen maar nooit was ik echt tevreden. Alhoewel UDK met lightmass een mooie tool biedt om indirect illumination mee te berekenen, zorgde het ook voor een erg fletse belichting met weinig contrast. Ik kreeg maar geen mooie donkere hoeken. Wat ook niet helpt is dat er heel veel opties zijn om in te stellen terwijl het uitrekenen van de belichting in mijn geval minstens enkele minuten duurt. Je kunt wel elke optie een voor een aanpassen en naar het verschil kijken, wat ik ook gedeeltelijk gedaan heb, maar dit is erg tijdrovend. Zie voor de hoeveelheid opties het plaatje hieronder waarin je de belichtingsinstelling van je level en van een enkele lichtbron kunt zien. Het was en is mij nog steeds niet helemaal duidelijk wat elke variabele doet. Veel oefenen en experimenten lijkt mij dan ook het devies.
15
Verslag Vrije Opdracht DC Metro Station
In mijn geval kon ik gelukkig de hulp inroepen van een teamgenoot van Warm Gun die jarenlang ervaring heeft met het werken in de Unreal Engine en ook druk heeft geexperiementeerd met lightmass ten tijde van het uitkomen van UDK. Ik heb mijn volledige level en bestanden naar hem gestuurd en gezegd hoe ik het graag zou willen hebben. Zo gaf ik aan dat ik de hoeken in mijn level donkerder wou hebben maar dat tegelijkertijd het level wel goed zichtbaar moet zijn. Zo gezegd, zo gedaan en even later kreeg ik mijn level weer terug met de door hem gemaakte belichting. Een zeer belangrijke aanpassing die hij gedaan heeft is in de post-processing settings. Alhoewel ik hier niet al te uitgebreid op in wil gaan omdat het nogal geavanceerd is en omdat ik er weinig kennis van heb kan ik wel vertellen dat de desbetreffende aanpassing gedaan is in de Post Process Chain genaamd UTPostProcess_Console welke gevonden kan worden in de FX_HitEffects package. Wat mijn teamgenoot gedaan heeft is een AmbientOcclusionEffect node linken aan de output van de MaterialEffect node en van de ambient occlusion node de settings aanpassen.
Er is een tijd van komen en er is een tijd van gaan. En op dit moment vond ik mijn level klaar genoeg om met het verslag te beginnen. Er zijn nog tig dingen die ik wil toevoegen en verbeteren aan mijn level maar alhoewel ik de tijd niet exact heb bijgehouden schat ik in dat ik op dit punt al ruim over de 160 uur heen ben gegaan. Dit is niet erg, aangezien ik erg veel plezier heb gehad aan het maken het level en ook veel nuttige kennis heb opgedaan. Ook zal ik na de vrije opdracht gewoon verder werken zodat het een mooi portfolio stuk wordt maar tot dan moet ik het hier mee doen.
16
Verslag Vrije Opdracht DC Metro Station
17
Verslag Vrije Opdracht DC Metro Station
Wireframe
Lighting only with texel density
Diffuse
Final result
18
Verslag Vrije Opdracht DC Metro Station
Ik heb nu in grove lijnen laten zien hoe ik mijn level opgebouwd heb. Ik wil nu graag meer in detail treden door enkele modellen te pakken en uit te leggen hoe ik ze gemaakt heb en welke problemen ik tegen ben gekomen. Een van mijn doelen voor dit project was om meer te weten te komen over normal mapping/baking. Ik heb gedurende het bouwen van dit level dan ook veel opgestoken over deze techniek door op verschillende manieren normal maps toe te passen op mijn modellen. Ik zal eerst bondig vertellen wat normal maps inhouden.
De kleur van een pixel op de normal map geeft aan onder welke hoek diezelfde pixel staat. Met deze informatie kan bepaald worden welke delen van een model highlights krijgen en welke delen schaduwen ontvangen zonder daadwerkelijk geometrie te gebruiken. Hieronder zie je het verschil tussen een model zonder en met normal map.
Kort gezegd zorgen normal maps voor enorm veel visueel detail met minimale rekenkracht. Het zijn 2d textures die de schijn van diepte en relief wekken op een 3d model. Een voorbeeld van een normal map: Er zijn verschillende manieren om normal maps te genereren. Je kunt normal maps maken door een model met veel detail (highpoly) te projecteren op een model met weinig detail (lowpoly, het model wat je ingame gebruikt). Het detail van de highpoly model wordt dan opgeslagen in de normal map. Deze methode heb ik gebruikt bij het stenen bankje en de pilon. Een andere methode is het gebruik maken van filters die 2d heightmaps omzetten in normal maps. Ik zal alle technieken die ik gebruikt heb voor mijn metro level uitleggen.
19
Verslag Vrije Opdracht DC Metro Station
The making off... het betonnen bankje Voor het maken van het highpoly model heb ik het programma Z-brush gebruikt. Zbrush is een sculpting programma wat je kunt vergelijken als kleien op de computer. Dit programma is zeer geschikt om organische vormen mee te maken maar ook om kapotte voorwerpen te maken zoals verbrijzeld beton. Als eerste ben ik begonnen met het maken van een mediumpoly model in 3ds max. Het is belangrijk dat de polygonen evenredig verdeeld en mooi vierkant zijn. Uitgerekte onregelmatige polygonen zijn niet geschikt om mee te sculpten zoals je in onderstaand plaatje kunt zien (beide modellen bevatten evenveel polygonen).
Alhoewel dit een extreem voorbeeld is, is het toch belangrijk om te letten op een net sculptmodel. Probeer triangles en uitgerekte polygonen zoveel mogelijk te vermijden!
Vervolgens ben ik met dit model gaan sculpten in Zbrush. Ik heb nog niet zoveel ervaring hiermee en heb dan ook nog genoeg te leren. De meeste beginners in Zbrush eindigen al snel met blubberige uitgezakte modellen. Het idee is dat je eerst globaal de vormen maakt en dan steeds fijner gaat werken. Dit fijner werken is mogelijk doordat je model gesubdivide wordt. Dit houdt in dat elke polygoon in je model verdeelt wordt in 4 kleinere polygonen. Dit kun je meerdere keren doen totdat je computer het niet meer kan bijhouden. Het grote voordeel van een sculptprogramma is dat je op hoge subdivision levels fijn detail kunt toevoegen aan je model maar ook kunt terugschakelen naar lagere levels zodat je de globale vormen kunt aanpassen. Hierbij word echter het fijne detail wat je op de hoge levels hebt gesculpt onthouden. Dit zorgt ervoor dat je heel veel flexibiliteit hebt tijdens het sculpten. Maar zoals gezegd, begin eerst met de grote vormen op de laagste subdivison levels en ga daarna steeds meer in detail werken. Voor mijn betonnen bankje was vooral de claytubes brush erg geschikt. Met deze brush kun je goed afgebrokkeld gesteente sculpten. Zodra het gesculpte model af is kunnen we het lowpoly model maken welke uiteindelijk in het spel gebruikt zal worden. Dit
20
Verslag Vrije Opdracht DC Metro Station
heb ik in eerst instantie gedaan met behulp van het programma Meshlab. Dit programma heeft een algoritme om modellen met veel polygonen om te zetten naar een lowpoly model waarbij de vormen van het oorspronkelijk highpoly model zoveel mogelijk behouden blijven. Je kunt zelf aangeven uit hoeveel polygonen het lowpoly model moet bestaan en het programma doet dan de rest. Dit gaf echter niet het gewenste resultaat. Het door meshlab geproduceerde lowpoly model had veel last van slechte vertex shading wat zorgt voor lelijke belichting op het model. Eenzelfde functie zit echter ook in 3ds max 2010, namelijk de pro optimizer modifier. Maar ook hier kreeg ik geen mooi lowpoly model. Achteraf gezien had wellicht een hoger opgegeven polycount het probleem kunnen verhelpen maar ik heb het uiteindelijk anders gedaan.
Ik heb het mediumpoly (laagste subdivision level) model uit zbrush geexporteerd en gestript in max zodat ik een lowpoly model overhield. De reden waarom ik het mediumpoly model uit zbrush heb gebruikt is omdat dit model meegevormd is met de deuken en schade die je aan het highpoly model toegevoegd hebt. Zie ter verduidelijk het verschil tussen het medium model uit 3ds max en het medium model uit zbrush. We hebben nu een high- en een lowpoly model zodat we de normal maps kun-
nen maken, dit heb ik gedaan met de render to texture functie in 3ds max. Naast het bakken van de normal map heb ik ook een Ambient Occlusion map gebakken. Dit is een texture met zachte schaduwen welke geblend kan worden met de diffuse texture in Photoshop voor een mooier resultaat.De algemene workflow ik gebruikt heb ziet er zo uit:
21
Verslag Vrije Opdracht DC Metro Station
The making off.. de pilon Alhoewel de pylon een enorm simpel model is, biedt het mij wel mooi de mogelijkheid om meer te vertellen over normal baking en dan met name in combinatie met hard surface modellen (non-organisch). Zoals eerder uitgelegd kunnen normal maps gebruikt worden om veel detail te faken zonder daadwerkelijk geometrie toe te voegen. Een van de details die gefaked kunnen worden zijn chamfered edges. Dit zijn afgeronde hoeken waardoor licht zich mooi verspreid over de hoek wat een model realistischer maakt. Hoeken in de echte wereld zijn namelijk ook nooit helemaal scherp maar altijd iets afgerond. Nou zou je dit bij 3d modellen makkelijk kunnen oplossen door hoeken in een hardsurface model daadwerkelijk te chamferen en extra geometrie toe te voegen, maar eenzelfde effect is ook te bereiken met normal maps waardoor er geen extra geometrie nodig is en dus minder rekenkracht gebruikt wordt. Het bakken van normal maps voor afgeronde hoeken gaat niet vanzelf goed. Als je de normale normal bake workflow zou toepassen zul je merken dat de afgeronde hoeken van het highpoly model niet goed geprojecteerd zullen worden op het lowpoly model en dat je zwarte randen krijgt. Alhoewel ik de technische verklaring hiervoor niet heb, is de oplossing gelukkig vrij simpel. Door iedere smoothing group van het model zijn eigen uv island te geven worden de hoeken van het highpoly model wel goed meegenomen en krijg je een goede bake.
22
Verslag Vrije Opdracht DC Metro Station
Dit principe is nog makkelijker te illustreren en zelf na te doen aan de hand van een kubus. Maak daarvoor twee lowpoly kubussen en een highpoly kubus met afgeronde hoeken. De ene lowpoly kubus unwrap je met alle polygonen aan elkaar en bij de ander hou je alle vlakken los. Let erop dat alle vlakken op hun eigen smoothing group zitten (dit is standaard echter al het geval als je een kubus aanmaakt). Volg nu de algemene normal bake workflow en je zult het verschil zien tussen beide lowpoly kubussen. Deze techniek heeft echter wel een nadeel. Je bent namelijk minder flexibel in het unwrappen omdat iedere smoothing group zijn eigen uv island moet hebben en het is mogelijk dat je unwrap minder efficient is en je textures daardoor waziger zullen worden. Ook is het texturen lastiger aangezien je met allemaal losse vlakjes werkt in plaats van een paar grote. Je zult daarom zelf moeten afwegen of je gaat voor afgeronde hoeken of voor een betere uv unwrap.
23
Verslag Vrije Opdracht DC Metro Station
The making off... tileable brokstukken texture Als laatste zal ik vertellen over nog een techniek waarbij normal maps gemaakt zullen worden. Deze keer zullen er geen normal maps gebakken worden via projectie van een highpoly model maar door middel van tekenen in 2.5D zoals in Z-brush mogelijk is. De 2.5D functie in zbrush houdt in dat pixels naast een x en y waarde, ook een z waarde hebben waardoor je hoogte waardes hebt die meteen in een normal map omgezet kunnen worden. Deze pixels met z-waarde worden ook wel pixols genoemd. Naast dat je brushes kunt gebruiken om diepte te tekenen kun je ook 3d modellen gebruiken om te projecteren op je 2.5D canvas. Dit heb ik ook veelvuldig gebruikt bij mijn debris texture. Als eerste heb ik losse betonblokken gesculpt in zbrush.
Deze 2 blokken heb ik veelvuldig rondgekopieert in verschillende rotaties. Alhoewel deze 3d modellen tot wel miljoenen polygonen kunnen bevatten maakt dit voor 2.5D tekenen niks uit. Dit komt omdat de 3d informatie uit het sculptmodel omgezet wordt in pixols wanneer het op het 2.5D canvas word geplaatst. Naast het plaatsen van de betonnen blokken heb ik ook een zandbodem toegevoegd. Een van de grote voordelen van 2.5D tekenen is de mogelijkheid om het canvas
te verschuiven (met de ~ toets) en zo een tileable texture te creeren. Of met andere woorden, de bovenkant van de texture sluit aan op de onderkant (evenzo met linker- en rechterkant). Als je klaar bent met tekenen kun je eenvoudig de normal material toekennen aan je 2.5 texture welke standaard in de zbrush materials zit. Helaas is het niet meteen een kwestie van je 2.5D texture exporteren vanwege een vervelende bug in zbrush. Als je direct zou exporteren naar bitmap zul je merken dat je vervelende seams (naden) zou krijgen in je tileable texture (zowel vertical als horizontaal). Na lang zoeken op internet ben ik gelukkig een workaround tegengekomen wat het probleem oplost.
24
Verslag Vrije Opdracht DC Metro Station
Je hebt hiervoor een speciaal script nodig om pixels toe te voegen en te verwijderen van het canvas. De oorzaak van het probleem is dat zbrush de randen van het canvas niet goed rendert. Je kunt dit goed zien als je inzoomt op een rand van het document.
De workaround ziet er als volgt uit: -teken op het 2.5D canvas zoals je normaal zou doen (ga niet over de hoeken van je canvas heen tekenen, dit doorbreekt de tileability) -gebruik tveyes’ script om 32 pixel langs elke rand van het canvas toe te voegen -doe een Best Render (Render --> Best) -doe layer --> bake
Daarnaast is het canvas kleiner dan je opgeeft. Feitelijk missen er 3 rijen pixels aan de onderkant van het canvas. Deze komen op magische wijze weer tevoorschijn als je een ‘Best Render’ doet. Dit is goed te zien als je een document van 16 bij 16 pixels maakt en de individuele pixels gaat tellen:
-gebruik tveyes’ script om 32 pixels langs elke rand van het canvas weg te halen -doe weer een Best Render -exporteer het document in gewenste formaat (ik gebruik .bmp) (Document --> Export) Alhoewel dit een nogal omslachtige manier van werken is, is het tot mijn weten helaas de enige manier om tileable normal maps te maken in 2.5D in zbrush zonder seams.
25
Verslag Vrije Opdracht DC Metro Station
Slotwoord We zijn nu bij het einde van het verslag. Ik heb met veel plezier aan dit project gewerkt en ik heb ook enorm veel opgestoken. Vooral op het gebied van normal maps bakken heb ik belangrijke kennis opgedaan wat zeker een vereiste is als straks een baan ga zoeken bij een groot gamebedrijf. Daarnaast heb ik goed ervaren hoe het is om in je eentje een groot project te doen en hoe moeilijk het soms is om de motivatie erin te houden. Vooral met zo´n grootschalig en langdurig project was het soms nodig om enkele weken niet aan het station te werken om daarna weer fris te beginnen. Al met al vind ik dat ik er toch redelijk doorheen ben gekomen en ben ik trots op het resultaat. Dit gezegd hebbende moet ik echter wel toegeven dat er nog ontzettend veel te verbeteren valt aan mijn level. Het was achteraf gezien wellicht verstandiger geweest om een nog kleiner level te maken aangezien ik toch het gevoel heb dat ik veel tijd besteed heb aan de kwantiteit en niet aan kwaliteit. Ik heb veel modellen snel afgemaakt en minder geexperimenteerd met verschillende technieken als dat ik vooraf van plan was. Mijns inziens hebben veel van mijn modellen nog niet de kwaliteit als die van professionele 3d modelers. Aan de andere kant is dit ook wel begrijpelijk. Ik heb tijdens mijn bezoek aan Streamline Studios (game outsource bedrijf, inmiddels helaas failliet) aan een van de artist daar gevraagd hoelang hij over een model van een standbeeld deed wat hij liet zien. Zijn antwoord was dat hij er van begin tot eind ongeveer een week over had gedaan, zo’n 40 uur dus. Zou ik
dit ook aanhouden voor de vrije opdracht, dan zou dat betekenen dat ik slecht 4 modellen zou kunnen maken. Zoals je waarscheinlijk wel gezien hebt bestaat mijn level uit een veel groter aantal modellen. Ik ben daarom ook van plan om vanaf nu meer te concentreren op een kleiner aantal modellen maar met meer tijd per model. Ik ga daarbij ook nog zeker verder werken aan mijn level en hem verder polijsten zodat het een mooi portfoliostuk wordt. Ook zie ik er naar uit dat mijn metrostation een onderdeel van een level van Warm Gun wordt zodat ik straks online mijn teamgenoten kan afknallen in mijn eigengemaakte level. Of dit al mogelijk is straks op de vrije opdracht markt is zowel voor jou als voor mij een verassing.
26
Verslag Vrije Opdracht DC Metro Station
Links
27
Verslag Vrije Opdracht DC Metro Station
Woordenlijst
model.
Capture the flag speltype in schietspellen waarbij 2 teams elkaars vlag moeten veroveren.
Lowpoly model 3d model met weinig polygonen. Dit is het model wat uiteindelijk ingame gebruikt wordt.
Deathmatch speltype in schietspellen waarbij het doel is om zoveel mogelijk kills te maken
Mediumpoly model alhoewel deze term niet heel veel gebruikt wordt doel ik hiermee op het ongesubdivide model wat geschikt is gemaakt om mee te sculpten.
Environment artist term uit de game-industrie die gebruikvt word voor 3d artists die uitsluitend omgevingsmodellen maken (dus geen karakters en wapens). Hard surface modellen non-organische modellen met veelal scherpe hoeken. Denk aan modellen van hout, metaal en steen zoals planken, wapens en huizen. Heightmaps texture maps in grijstinten waarbij de waarde van de pixel de hoogte aangeeft. Heightmaps kunnen gebruikt worden om normal maps van te maken. Highpoly model model met heel veel polygonen en detail. Met dit model worden de details gebakken in normal maps welke weer toegepast worden op het lowpoly model. Het highpoly model hoeft voor dit proces niet geunwrapped te worden, alleen het lowpoly
Sculpten letterlijk vertaald: kleien. Ik doel hier op het werken in zbrush waarbij je vooral met verscheidene brushes je 3d model naar gewenst figuur vervormd. Smoothing group in 3ds max kun je aan elke polygoon een smoothing group nummer meegeven. Polygonen met hetzelfde nummer die aan mekaar zitten worden behandeld als een gladde oppervlakte. Polygonen met verschillende smoothing groups zullen een scherpe hoek maken. Dit uit zich echter alleen in belichting, de geometrie blijft hetzelfde. Sub-division modelling subdividen houdt in dat elke vierhoekige polygoon opgedeeld wordt in 4 kleinere polygonen. De coördinaten van deze nieuw polygonen worden geïnterpoleerd waardoor je een gladder model krijgt.
28
Verslag Vrije Opdracht DC Metro Station
Unwrappen het vlak neerleggen van een 3d model zodat deze geschikt is om te texturen in een 2d programma zoals Photoshop. Vergelijk het bijvoorbeeld met het uitvouwen van een kubus tot een kruis. Uv island afzonderlijk set polygonen in de unwrap. Een kubus zou je kunnen uitvouwen tot een kruis wat je 1 uv island oplevert maar je zou elk vlak van de kubus ook los kunnen knippen zodat je 6 losse uv islands overhoudt. Vertex painting techniek waarbij je op je model kunt tekenen waarbij de (kleur)waardes worden opgeslagen per vertex. Een model met een hoge dichtheid aan vertices ziet er daardoor beter uit omdat er meer overgangen zijn (vergelijkbaar met een hogere resolutie).
Modellijst
Modellijst
Modellijst
Modellijst
Modellijst
Modellijst