lørdag 30. mai 2009

Introduksjon

Velkommen til min lille prosjekt blogg! 
I løpet av vårhalvåret 2009 samarbeidet jeg med Karoline Haugseth om utviklingen av en kortfilm,
som var vår avsluttende prosjektoppgave ved Noroff Bergen.
I denne bloggen vil jeg gjennomgå de forsjellige stadiene i utviklingen av kortfilmen, med
hovedvekt på de delene jeg hadde ansvar for. Karoline fører sin egen blogg som du kan finne på her: http://karoline3d.blogspot.com/
Dersom du skal lese bloggen i riktig rekkefølge mtp rekkefølgen filmen ble produsert i bør du lese nedenfra og opp.

onsdag 27. mai 2009

Sound design

Lyden til Bukkene Bruse er laget av Kim Petter Skaar og Mohamed Hamich, som også går på Noroff. Jeg har desverre ingen forutsetning til å gå detalj om lyddesignet. Det eneste vi har bidratt med til lyden er stemmene til trollet og bukkene. Vi hadde en morsom dag i studio der jeg spillte trollet og karoline spillte bukkene. Ikke store greiene, men etter litt editering fra kim og mo funket det bra.

Rendering/Compositing

Siden vi ville rendre filmen vår i 720p, og bruke mange krevende effekter (spesiellt hair and fur) måtte vi planlegge renderingen deretter. til forsjell fa de andre gruppene fullførte vi ett og ett klipp av filmen 100% og fikk det på rendering før vi startet på det neste. Dette gjorde at vi fikk starte på renderingen veldig tidelig. I tilleg hjalp min far, Jarle Slyngstad oss mye ved å låne oss sitt 8core oppsett til å rendre på, han har stått på for å holde renderingen i gang så ofte som mulig, noe vi er svært takknemelige for. I tilleg har min egen quadcore pc rendret omtrent kontinuerlig hver natt de siste månedene. På min egen pc kunne et karakterpass til tider ta over 40min pr frame, og når miljø, diverse effekter, ambient occlusion, og kanskje et karakterpass til skal rendres til samme clip sier det seg selv at renderingen blir tidkrevende.

Vi var fullstendig avhengig av compositing for å få den looken vi ville på filmen vår, multipassing gav oss større frihet til å rendre om igjenn ting vi ville endre uten å måtte rendre alt på nytt. Et typisk klipp bestod gjerne av :

  * 1 eller flere karakterpass
  * 1 miljøpass
  * 1 AmbientOcclusion pass for miljøet
  * Skyggepass for karakterer
  * kontaktskyggepass(AO) for karakterer
  * et eller flere egene pass for gress i de klippene der vi brukte gress
  * AO pass for gress i et par tilfeller   
  * Bakgrunnspass med fjell
  * flammepass i en del tilfeller
  * Zdepth pass
  * diverse custom rendrede grayscale masker for blannt annet fargekorreksjon

Fargekorreksjon i post spillte en veldig stor rolle for oss, klippene så gjerne veldig grå og kjedelige ut direkte fra max, her er et eksempel:

Før fargekorreksjon :


Etter fargekorreksjon :


Fargekorreksjonen er gjordt individuellt for hvert enkelt pass, og med forsjellige grayscalemasker for å inkludere/eksludere ting fra korreksjonen.

Her er enda noen eksempler på fargekorreksjon.

Før:


Etter:


Før:

Etter:


Før:


Etter:

Animation

Ettersom jeg ikke stod for særlig mer enn kanskje et par prosent av animasjonen i denne filmen skriver jeg heller ikke særlig om det her. Karoline dekker den delen i sin blogg som kan leses på: http://bukkenebruse3d.blogg.no/

Det jeg gjorde av animasjon var en del av det klippet der trollet tumler bakover etter å ha blitt stanget av den største bukken, og så hjalp jeg til litt med klippet før, der han blir truffet av storebukken. I tillegg til dette animerte jeg den lille fuglen som flyr forbi i bakgrunnen noen få ganger i løpet av filmen.

Scene Development


Her vil jeg forklare og vise bilder av hvordan vi byggde opp noen av miljøene i bukkene bruse.
Hver gang jeg begynnte på et nytt miljø, blocket jeg ut en ganske stor og røff modell som jeg gav til karoline, hun satte opp kameraføring og gav modellen tilbake til meg med ferdig kamera. Deretter slettet jeg alt som ikke syntes fra kamera, og begynnte å detaljere utifra det.
Her er Wip screenshots fra et av miljøene i filmen:













Character development

Under vil jeg forklare utviklingen av de tre karakterene jeg utviklet.

Minstebukken:

Vi hadde ett hovedmål når vi gikk igang med å designe minstebukken, den måtte vere så søt som over hode mulig, selv om det kanskje førte til at den ble mindre lik en ekte geitekilling. før jeg begynnte for alvor tegnet jeg massevis av raske småskisser av geitekillinger innimellom annet arbeid for å sette i gang underbevisstheten. Jeg prøvde å analysere søte dyr for å finne ut akkurat hva som gjør at vi oppfatter det dyret som søtt. Når datoen for å starte produksjonen av minstebukken kom, startet jeg direkte i 3dsmax og laget en enkel basemesh uten tanke på topology eller avansert form, kunn en klump med et hode og fire bein.



Deretter tok jeg modellen inn i zbrush, la på et par subdivisions og begynnte å gi den litt form:






Utformingen av kroppen var av liten betydning ettersom pelsen kom til å vere ganske tykk der, Det viktigste var å få hovedtrekkene på plass. I ansiktet derimot var formen viktigere ettersom håret kom til å vere kortere der. Når jeg var noenlunde fornøyd med utformingen gikk jeg i gang med retopologisering, retopologize er en funksjon i zbrush som lar deg tegne ny topology over en modell ved enkelt å greit å trykke rundt om kring på modellen for å plassere vertekser.

gammel wire før retopo:


Retopology progress:


retopologisert hode med et par subdivisions:


Retopologisert modell med en subdivision:


Og vips! så var modelleringen ferdig.
Unwrapingen var gjordt på en halvtimes tid med peltmapping og litt fiksing etterpå. ettersom vi skulle bruke hair and fur så var streching ganske uvesentlig, det viktigste var å få en "descent" uv-layout og få allt inn på ett map for å slippe å bruke et eksternt growth objekt til håret.



Tekstureringen var heller ikke særlig vesentlig på denne modellen pga pelsen, det viktigste var å få på plass en farge som passet bra som underlag til pelsen, og å farge på de plassene som ikke var dekket av hår.



For at Karoline skulle kunne begynne å animere fortest mulig tok jeg riggingen før jeg begynnte med hair and fur. Vi valgte å lage riggene våre selv, først og fremmst for å lære mer om rigging, men også fordi vi har prøvd characterstudio i et tideliger prosjekt og fått det litt opp i halsen. Hadde vi hatt mer tid på oss skulle vi satt oss inn i CAT. Siden dette var den første riggen jeg gjorde for dette prosjektet har den en del mangler i forhold til størstebukken. ettersom karoline fikk teste minstebukk-riggen en del i felten før jeg startet på storebukken, fikk jeg en del konstruktiv kritikk jeg kunne ta med meg videre for å forbedre riggene til trollet og storebukken.

Her er et par bilder av riggen:







Så var det tid for grooming.
Grooming (hårstell) går i 3d sammenheng gjerne ut på å tegne splines som skal representere hovedutformingen av en frisyre. Der er mange ulike grooming-options i hair and fur modifieren, men jeg brukte så godt som ingen av disse. å tegne hundrevis av splines tar riktig nok lang tid, men det gir en langt større frihet.



Når alle splines var ferdig tegnet begynnte jeg å testrendre med ulike settings. Planen var i utgangspunktet å rendre furen med scanline, og med standard buffer som hair and fur shader, men etter et utall testrendere innså vi at Buffer var ubrukelig til animasjon, ettersom den alltid fikk en stygg flimring, vi trålet nettet etter løsninger, men etter å ha funnet mange eksempler på samme problem men uten løsning så vi oss nødt til å gå over til å bruke mentalray og mr.prim i stedenfor scanline og buffer. Dette fjærnet flickeringen, men brukte til gjenngjeld flere ganger lengre tid å rendre, jeg fortsatte å tråle nettet og kom over en ekstern fur shader med navnet muHair. Denne shaderen viste seg å vere raskere å rendre og gi bedre resultat enn standard mr.prim. Shaderen kan lastes ned på : http://animus.brinkster.net/stuff/plg_muhhair/plg_muhhair.html

Her er pelsens utvikling, fra tidelige testrenders, til final :

Første test, uten grooming:


enda en, uten grooming :


med grooming :




Overkill glaretest :


final gather :


Uten final gather, men med diverse ekstra lys:


litt bedre farger i lyset, og motionblur aktivert:


Final version, fargekorrigert i photoshop (litt for rosa)


I løpet av produksjonen viste hair and fur seg å by på flere problemer enn bare økt renderingstid. Renderingen var svært ustabil, når vi satte på render som skulle gå over natten kunne vi føle oss omtrent 100% sikker på at den kom til å ha kræsjet når vi sjekket neste morgen, dette førte til at vi tapte veldig mye nattelig renderingstid, men etterhvert som vi hadde rendret flere og flere pass begynnte vi å ane et slags mønster i kræsjingen, den kom ca alltid etter 10-20 frames, aldri særlig under 10, så det vi gjorde mot slutten var å sette på flere renderinger som stod og gikk paralellt, dermed tok det lenger tid før hvert enkelt program klarte å fullføre så mange frames at det kresjet, og til sammen fikk de dermed ut flere frames. Vi føler oss ganske sikkre på at dette problemet skyldes muhair shaderen vi benyttet oss av, men ettersom den gav det beste resultatet, og det at vi fannt ut av det så sent i produksjonen valgte vi å forsette med den shaderen.

Et annet nesten like stort problem hair and fur gav oss var et hav av renderbugs, svarte vertikale linjer som opptrådte på tilfeldige frames i tilfeldig antall  og størrelse. Dette førte til at vi måtte rendre opp igjenn veldig mange frames, og på en del frames lot de seg ikke en gang rendre opp igjenn, samme bugs opptrådte gjerne også etter rerendering, disse måtte da enten fikses i photoshop, eller rett og slett fjærnes fra filmen hvis den bestemmte framen var veldig lik den forige. Dette problemet oppstod uavhengig av hvilken shader vi benyttet oss av, men i større grad med standard shaderen enn med muhair.


Trollet:

Trollet er inspirert av en tegning jeg kom over på nettet av Theodor Kittelsen, Jeg har alltid vert fascinert av trollene han tegner, men dette her likte jeg spesiellt godt:


Conceptarten til trollet sa jeg meg ferdig med i storyboard fasen, så jeg gikk rett i gang med modelleringen, i motsettning til lillebukken og storebukken brukte jeg på trollet den tradisjonelle modelleringsteknikken i max (uten zbrush og retopology), her er noen wip shots:







Ferdig modell:


En liten testsculpt til normalmap generering:


For å få mest mulig detaljer i ansiktet og på hendene valgte vi å dele opp uvw layouten i 3 deler, i etterkant angrer vi litt på dette ettersom det førte til at vi måtte operere med et ekstra growth object for hair and fur. Grunnen til dette var at vi trengte å bruke et densitymap for å definere hvor det skulle vere hår, og hvor det ikke skulle vere hår, Dette densitymapet kan ikke deles i flere deler og distribueres til de ulike delene av modellen via material ID som vanlige materialer kan, ettersom det legges i en egen kanal i hair and fur modifieren og blir automatisk lagt på i alle material ID's. Løsningen ble å lage en kopi av den orginale modellen, og slå sammen alle uv kordinatene i en layout. Når det var gjordt tok jeg modellen inn i zbrush og paintet en grayscale maske som jeg la i densitykanalen i max. Growthobjektet fikk en instance kopi av morpher og skin modifierene til den orginale modellen.

Karoline stod for teksturering, shading og morphing av trollet, så de delene kan leses på : 
http://bukkenebruse3d.blogg.no/

Riggingen av trollet ble en stor utfordring, og jeg ble egentlig aldri fornøyd med den. Det største problemet var at jeg ikke var klar over at hvert enkelt squash and strech bone må ha en egen "upnode" som  lookat-constrainen kan orientere rotasjonen sin etter. fordi riggen manglet dette fikk modellen mange rare bulker og vridninger ved visse bevegelser, dette skapte stor frustrasjon for stakkars Karoline som skulle animere beistet, hun gjorde en fantastisk jobb med animeringen til tross for de store begrensningene riggen skapte. 



Hair and fur på trollet gikk ganske greit bortsett fra utfordringene med densitymappet som jeg fortalte om over, vi brukte standard mr.prim shader uten noe videre hokus-pokkus.



Storebukken:

På samme måte som at vi ville lage den minste bukken så søt som mulig, ville vi lage den store bukken så maskulin og stolt som mulig. Jeg studerte en del geitebukker, men brukte også en type sau under navnet "Bighorn Sheep" som referanse, ettersom disse hadde mye av den looken jeg gjerne ville få til.


Når jeg skulle modellere storebukken gikk jeg tilbake til å bruke zbrush og retopology igjenn, som jeg gjorde med lillebukken. Det fine med denne teknikken er at den lar deg isolere den kunstneriske,kreative delen som er selve formgivingen, fra det å hele tiden tenke på topologien, at alle edges skal flyte fint og gi en god og logisk wireframe. Her er et par shots fra arbeidsprosessen :






Unwrapingen og tekstureringen av størstebukken var gjordt på samme måte som med minstebukken, så jeg ser ingen grunn til å ta hele leksa om igjen. Riggen er også i bunn og grunn ganske lik minstebukken sin, men jeg videreutviklet den og la til flere funksjoner og større fleksibilitet. på samme måte som trollet, har storebukken mange strechy bones, men her fannt jeg heldig vis ut av behoved for upnodes, så bukken endte opp med en langt mer funksjonell rigg enn trollet.



Hadde jeg hatt tid skulle jeg gjerne ha satt meg inn i CAT og muskelsimulering, men det får bli en annen gang :)

Hair and fur på storebukken var også ganske greit å få til, siden jeg allerede hadde gjordt det på minstebukken.