Vad är 3d-grafik?

Download pdf version: Vad är 3d

“I imagine that right now you’re feeling a bit like Alice. Tumbling down the rabbit hole?

You could say that.

You take the blue pill and the story ends. You wake in your bed and believe whatever you want to believe. You take the red pill and you stay in Wonderland and I show you how deep the rabbit-hole goes.”

-The Matrix, Andy Wachowski & Larry Wachowski

2d- och 3d-grafik
3d-grafik är både enkelt och svårt att förstå. Enkelt då vi har som goda referenser; alla datoranimerade filmer så som Finding Nemo eller Monsters Inc, vi har även datorspel som allt om ofta består av 3d-figurer.

Så, vad är det som är så svårt att förstå?

Låt oss nu snubbla ner i kaninhålet!

Det som kan vara svårt att förstå är vad just ordet ”3d” betyder. 3d står för ”tre dimensioner” till skillnad från 2d som står för ”två dimensioner”. Skillnaden mellan 3d-grafik och 2d-grafik är antalet dimensioner. Bli inte avskräckt av ordet ”dimensioner”! Vi hade kunnat beskriva ”dimensioner” med hjälp av ordet ”axlar” istället. Vi återkommer strax till detta.

Vanligtvis när vi hör ordet 3D så vandrar tankarna direkt till spel och film. Vi tänker sällan på vårt eget liv som kristallklar 3D – men så är det, livet är, grafiskt sett, riktigt vackert. Alla saker du ser runt om kring dig; din säng, väckarklocka, dator, till och med din mamma är i 3D.

2D däremot, ser vi inte i verkligheten. Hade 2D existerat i verkligheten skulle vi bara kunna se framsidan och baksidan, aldrig djupet. Tänk er 2D som en bit papper. Nej, än bättre, ta ett ark papper! Titta på det. Pappret har en framsida och en baksida. Tänk er nu att ni inte kan se pappret från sidan. Då förstår ni vad 2D är. Eftersom pappret faktiskt är i 3D så kan vi ju se sidan av det vilket leder oss till slutsatsen att inget är i 2D i verkligheten.

Vanligtvis när vi pratar om 2D så brukar vi referera till plattformsspel (så som Sonic). Nu har vi börjat sikta in oss på vårt mål; 2D. Det är inte enbart spel jag syftar på utan all media, alltså det vi ser på en skärm. Oavsett om det är en film vi ser på TV eller om vi gör något på skrivbordet på datorskärmen. I alla dessa fall kan vi bara se sakerna på skärmarna rakt framifrån eftersom vi inte kan trycka in skallen i skärmen och titta runt inuti.

Verkligheten är i 3D och media är i 2D. Jag gissar på att ni förmodligen börjat trolla längder av hat i ett mail (madhatter@wonderland) till mig nu, men ta det lugnt, Alice. Fortsätt läs, snart kommer poängen.

3D är den fysiska skärmen eftersom vi kan se den framifrån, från ovan, underifrån och från sidorna, eller hur? Det vi ser på skärmen är 2D eftersom vi bara kan se det framifrån, korrekt? Så allt vi kommer att skapa är, grafiskt sett, en simulering av 3 dimensioner i 2 dimensioner.

All digital grafik är 2D i verkligheten, skillnaden mellan 3D och 2D är enbart tekniken som vi använder oss av för att skapa grafiken. Jag ska lära er just tekniken för 3D-grafik.

Tidigare skrev jag om axlar som en alternativ benämning av dimensioner. Plocka fram en penna (och pappret som du hade innan och nu säkert kastat vid det här laget). Rita ett kors på pappret; ett vertikalt (höjden) på mitten och ett horisontellt (bredden). Nu har vi 2 axlar eller 2 dimensioner ritade på pappret. Dessa två ritade axlar motsvarar samma två axlar vi finner i 3d också, nu drar vi till med den tredje axeln. Hugg pennan rakt i mitten där de ritade axlarna möts. BAM! Nu har vi den tredje axeln också!

I Maya (motsvarande 3D-program) tillåts vi att arbeta med den tredje axeln till skillnad från MS-paint. Vi använder Maya för att simulera tredimensionella objekt i två dimensioner, vi kan alltså skapa en verklighetstrogen illusion av 3D.

x-, y- och z-axel
Två dimensioner består av två axlar i ett koordinatsystem (fråga gärna er matematiklärare); x-axeln och y-axeln.  X-axeln går horisontellt (indikerar alltså bredd) och y-axeln går vertikalt (vilket indikerar höjd). En ritad karaktär på ett papper har en viss höjd och en viss bredd, men inget djup.

Däremot så har exempelvis ett skrivbord 3 dimensioner vilket gör det möjligt för dig att se det från alla håll därför att det finns ett djup. Djupet är den tredje axeln som kallas för Z. Så det finns tre axlar; X, Y och Z.

Det finns ett mycket enkelt sätt att minnas vilken axel som är vilken (dock bygger detta trick på att man känner till färgskalan RGB). Varje axel har en färg, X-axeln är röd, Y-axeln är grön, Z-axeln är blå.

Färgskalan RGB (Röd, Grön, Blå) matchar således axlarnas färger.

Allt ni modellerar i Maya (det vill säga i 3d) består av polygoner som byggs i dessa tre axlar; x, y, z. Man placerar i teorin en massa vertexpunkter i ett koordinatsystem där varje punkt får ett värde i varje axel exempelvis 1,3,6. Vertexpunkten som illustreras av en grå kub i bilden under har således ett X-värde på 1, ett Y-värde på 3 och ett Z-värde på 6 som talar om var i koordinatsystemet som den befinner sig. Vi återkommer till vertexpunkter strax.


Polygonen
Man kan enkelt beskriva en polygon ur ett rent geometriskt perspektiv. En polygon kan då beskrivas som en samling av olika geometriska former, så som trianglar, kvadrater, och hexagoner, etc.

En polygon är inte enbart en geometrisk form, den är också platt. Det är alltså en platt geometrisk figur, men i 3d-grafikens värld är det viktigare att förstå vad polygonen består av.

Vi ska studera polygonen lite närmre nu för att lära oss vad den består utav. Tänk er en valfri geometrisk figur, vilken som helst så länge den är platt. Mina tankar gick rakt till en kvadrat. Ställ er nu frågan: om jag skulle rita den, hur skulle jag gå till väga?

Nu ska vi rita den, så skaffa ett tomt vitt papper och en penna. Bryt sedan ned ritprocessen i dess minsta beståndsdelar, precis som jag gör i de följande punkterna:

Jag skulle börja med att rita en linje för den första av 4 sidor.

En polygon består av linjer, dessa kallas edges i Maya.

 

När jag började rita min linje skapade jag två punkter, en startpunkt och slutpunkt.

En polygon fungerar på motsvarande sätt, de olika punkterna kallas för vertexpunkter (vertices, verts).

 

Fortsätter vi nu att rita kvadraten så kommer vi att få totalt 4 linjer och fyra punkter.

Vår polygon skulle således ha 4 edges och 4 vertexpunkter.
Så, just nu är kvadraten vi ritat helt färglös och det ska vi ändra på nu. Jag vill rita den blå. Hela arean mellan alla linjer och punkter ska målas.

Denna färglagda yta av vår polygon kallas för Face. Det är vårat face som är ytan. En yta vi kan rita på senare (att texturera).

 

Nästa steg är att vända blad! Vad ser vi? Ingenting.

 

(INGET HÄR)

 

En polygon fungerar på samma sätt. Det finns en framsida och en baksida av polygonen eftersom normalen antingen pekar fram eller bak. Detta talar om år vilket håll polygonens face pekar åt.

Den optimala polygonen
I bilden nedan kan ni se en polygon ritad i Maya. Den vänstra är från perspektivkameran och den högra är från sidokameran. Denna sort av polygon kallas för quadrilateral, eller kort bara ”quad”. Studera den, den blir er bästa vän.

Vi kommer aldrig någonsin använda någon annan geometrisk figur med fler än 4 vertexpunkter. En polygon som består av 4 vertexpunkter kallas för en quad (som tidigare nämnt). Om du skulle göra en polygon med fler än 4 vertexpunkter så kommer du att få skumma resultat och göra det svårare att skapa schysta modeller. En polygon med fler än 4 vertexpunkter kallas för en Ngon (se polygonerna nedan).

Jag arbetar enbart med quads eftersom de är pålitliga i sitt beteende och du får snygga mjuka resultat.  Det är även okej att använda ”tris”. En tri är en triangel, den består av 3 vertexpunkter och 3 edges. Undertill kan ni se de tillåtna formerna, först en quad, sedan en tri.

Det är helt okej att arbeta med tris, men inte lika smidigt. Att arbeta med tris är sista steget när vi modellerar. När man har en färdig modell som man inte tänker ändra mer på och vet att man ska använda den i en 3d-motor så gör man som sista steg alla sina quads till tris.

En tydlig fördel med quads är när vi ska UV-mappa (något vi ska kika närmre på sen) för att det tar mindre tid och är mycket mer smärtfritt. Det är även enklare att undvika problem när man ska öka antalet polygoner utan eller exportera den till Mudbox om man arbetar med quads.

Om ni någon gång läser en post på ett forum med en bild av en 3d-modell och det står nått i stil med att ”detta är min 4000poly karaktär” och du blir helt varm i kroppen för din modell ser bättre ut och är på 3000quads, kom ihåg att personen som postade förmodligen menar 4000tris vilket är 2000quads. När man räknar antalet polygoner så räknar man antalet tris och inte antalet quads.

Så, vad är så speciellt med Vertexpunkter, Edges och Faces?
Vertexpunkter, edges och faces är alla delar av polygonen som vi kan manipulera sett till storlek, placering och form av polygonobjektet.

Here’s Johnny!
Det finns två svarta får, bägge är delar av polygonen, men vi kan inte manipulera dem sett till form och placering i 3d. Dessa två får kallas för UV-punkter och Normaler.

Vertices
Vertexpunkter är de punkter på polygonen som definierar hörnen. Det korrekta namnet för en vertexpunkt är det engelska ordet vertex och för flera punkter vertices. Vertexpunkter kan vi direkt manipulera så att polygonen eller polygonobjektet förändras.

Edges
Kanterna mellan vertexpunkterna heter Edges som tidigare förklarats. De yttre kanterna av ett polygonobjekt kallas mer specifikt för gränskanter (border edges). Det är fullt möjligt att direkt manipulera kanterna (edges) för att ändra polygonobjektets form.

I bilden ovan illustreras ett polygonobjekt som består av 4 polygoner. Mellan polygonerna finns det edges. De yttre kanterna av polygonobjektet kallas för border edges eftersom de inte sitter fast i några andra polygoner.

Face
Maya skapar en yta (Face) genom att använda sig av informationen från linjerna (Edges) mellan vertexpunkterna (Vertices).  En yta (Face) kan direkt manipuleras så att topologin av polygonobjektet förändras.

UV
På exakt samma ställe där vertexpunkterna är placerade finns en komponent ytterligare kallad för UV. UV-punkterna är till för att placera texturerna på polygonerna. UV-punkterna kan inte bli manipulerade i 3d, utan enbart i ett speciellt fönster där vi plattar ut vår 3d-modell i 2d. När vi angriper texturering i kommande lektioner och kurser så ska vi titta närmre på hur det fungerar i teorin.

Normaler
Det finns två typer av normaler; Face Normals (ytnormaler) och Vertex Normals (vertexnormaler).

En polygons yta (face) kan peka åt ett håll, inte flera håll. Komponenten som beskriver åt vilket håll ytan pekar mot kallas för normal eller ytnormal (face normal). Man kan inte manipulera en normal så att objektet förändras, man kan enbart byta håll på ytan så att normalen tittar åt det rakt motsatta hållet.

Skillnaden mellan vertexnormalen och ytnormalen är att vertexnormalen inte är placerad mitt på face.  Vertexnormalen är den tredje komponenten placerad på vertexpunkten utöver vertexen självt och UV-punkten. Vertexnormalerna, även de, kan bara peka åt ett håll vardera.

Normalerna beskriver för renderaren hur ljus och skugga kommer att falla på polygonens yta, hur den shadas (eng. shaded).

Summering
Komponenterna som en polygon består av är edges, vertexpunkter, faces, normaler och UV-punkter. Alla dessa kommer du kunna som baksidan av din hand när vi är färdiga. Edges, vertexpunkter och faces är alla byggstenarna med vilka vi kan manipulera själva polygonen i 3d-rymden, medan UV-punkterna och normalerna förändrar ytans utseende av polygonen.

Polygonmodellering
Anledningen till att jag enbart går genom polygonen och dess beståndsdelar är för att vi enbart (i nuläget) kommer att syssla med polygonmodellering, och inte NURBs-modellering. Om ni är sugna på att kika lite närmre på NURBs är ni välkomna att göra så, men jag avvaktar tills vi faktiskt kommer att behöva använda oss av det.