Tentamen TNM077, 3D datorgrafik och animering Grupp: MT2 och NO2MT Datum: Lördagen den 13 mars 2004 Tid: 1400-1800 Hjälpmedel: inga Ansvarig lärare: Stefan Gustavson, ITN, 011-363191 Anvisningar Denna tentamen består av 5 uppgifter, vilka tillsammans kan ge maximalt 40 poäng Uppgifterna står inte i någon särskild ordning, så lös dem i den ordning du själv vill, men skriv varje uppgift på separat papper och lägg uppgifterna i nummerordning när du lämnar in dem Skriv namn, och helst även personnummer, på varje papper du lämnar in De flesta uppgifter är av beskrivande karaktär Några har en handfast praktisk prägel, andra kräver mer matematiska eller teoretiska resonemang, och vissa uppgifter kräver även vissa beräkningar Svara rimligt uttömmande men kortfattat på frågorna Använd fullständiga meningar Rita gärna figurer där det kan förtydliga din framställning Förklara införda begrepp och beteckningar, och motivera beräkningar så att de är lätta att följa Om du undrar hur mycket du skall skriva på någon fråga, titta på det antal poäng den kan ge Uppgifter med många poäng kräver mer ingående svar för full poäng Tentamen betygsätts med underkänt (U), godkänt (G) eller väl godkänt (VG) För betyget G krävs minst 20 poäng av 40 möjliga För betyget VG krävs minst 30 poäng av 40 möjliga Jag kommer att titta in minst ett par gånger under tentamenstiden för att svara på frågor om eventuella oklarheter Lycka till! Stefan Gustavson
Uppgift 1 (8 p) En person du känner som saknar teoretiska och praktiska kunskaper om 3D-modellering har på Internet hittat ett enkelt, gratis 3D-modelleringsprogram som du aldrig hört talas om, samt via envishet och egna experiment lyckats skapa en skalenlig polygonmodell av en Legobit och renderat den I figuren nedan ser du till vänster Legobiten som den visas i modelleringsprogrammet, och till höger den renderade bilden Personen vet att du har läst minst en kurs om 3D-grafik och kommer till dig för att få synpunkter Du både kan och vill hjälpa till, så du anstränger dig för att ge konstruktiv kritik på flera punkter a) I bilden till vänster markeras kanterna på varje polygon av en svart linje Du påpekar att det finns alldeles för många polygoner i modellen på ställen där de inte gör någon nytta Ange med hjälp av en enkel figur hur man kan förenkla modellen avsevärt utan att förändra dess form! (2 p) b) Du påpekar att de cylindriska knopparna på ovansidan ser för kantiga ut Din bekant förstår inte hur knopparna kan göras rundare utan att det blir väldigt många polygoner i modellen igen Även om du inte känner till några detaljer om modelleringsprogrammet som använts så förstår du att det är ett ganska kompetent program, även om det bara verkar kunna skapa polygonmodeller Förklara hur man kan göra för att åtgärda problemet med det kantiga utseendet utan att modellen blir mer komplicerad! Personen du förklarar för har läst linjär algebra, men inte 3D-grafik, och förväntar sig ett ganska ingående svar med en teknisk förklaring c) Till slut påpekar du att det borde stå LEGO i relief på knopparna i den renderade bilden Du får ett uppgivet svar i stil med Men ge dig, det skulle ju behövas säkert tusen extra polygoner per knopp om man skulle modellera alla de pyttesmå upphöjningarna Du ler nöjt och förklarar grunderna för en metod som löser problemet utan en enda extra polygon Vilken metod avses, och hur fungerar den? (3p) Uppgift 2 (10 p) Du och personen från uppgift 1 modifierar tillsammans Legobiten enligt förslagen, och gör ytterligare några justeringar så att den får svagt rundade hörn och ser ut ungefär som en riktig Legobit även från undersidan Ni arrangerar sedan två kopior av biten i en dramatisk scen enligt figuren på nästa sida Bilden högst upp visar en mycket enkel rendering där man använt samma algoritm som för den högra bilden i figuren i uppgift 1 För att få en mer realistisk bild behöver man ta hänsyn till flera andra verkliga optiska effekter Föreslå för var och en av de fyra stegvis bättre bilderna a) till d) någon algoritm eller metod du känner till som skulle kunna tillföra den sökta egenskapen till bilden! Ange inte bara namnet på algoritmen, utan förklara även kortfattat hur den fungerar Ett namn utan närmare förklaring ger inga poäng En bra förklaring utan namn kan ge full poäng
Den tråkiga originalbilden Det märks bara nätt och jämnt att ytan är blank, och ljuset är overkligt och dött a) Objekten bör kasta skuggor på sig själva, varandra och underlaget b) Skuggan och den obelysta sidan av objekten bör inte vara helt svarta (1 p) c) Det diffusa ljuset och den diffusa reflexionen i scenen kan modelleras mer noggrant, varvid den renderade bilden genast blir avsevärt mer verklighetstrogen d) De blanka objekten bör även reflektera något av varandra och omgivningen, inte bara ljuskällan (Legobitar är inte fullt så här blanka Effekten är överdriven för att synas tydligt i tryck)
Uppgift 3 (10 p) Java3D och många andra programmeringsgränssnitt för 3D-grafik använder sig av en scengraf för att beskriva objekten i scenen och deras relationer till varandra Rita upp en scengraf som är lämplig för att kunna animera en Lego-minifigur! En Lego-minifigur ser ut som i bilderna nedan och kan röra på benen, armarna och huvudet med enkla leder som bara tillåter rotation runt en axel Benen och armarna kan vridas framåt och bakåt, och huvudet kan vridas åt höger och vänster (Egentligen kan händerna vridas också, men det behöver du inte ta hänsyn till) Du har redan de olika delarna av figuren tillgängliga som Java3D-noder, med sitt lokala origo på de ställen som markeras i den tredje bilden nedan ϕ ϕ Minifiguren i normalläge En dynamisk pose för uppgift b) De olika rörliga delarna med sina lokala koordinatsystem X-axlarna är de som pekar åt höger Y-axlarna pekar uppåt Z-axlarna pekar rakt utåt mot dig och visas inte i bilden Armarnas rotationsaxlar är egentligen inte parallella med kroppens x-axel, utan lutar en liten vinkel ϕ a) Antag att figurens armar roterar kring en rotationsaxel som är parallell med kroppens x-axel och ange en scengraf för figuren Din scengraf skall kunna användas både för att flytta och rotera figuren i världen och röra på dess leder Ange vad alla noder i grafen står för För translationer skall du ange vilken translation som avses, för rotationer skall du ange rotationsaxeln Ange även vilka av transformationerna som skall vara statiska och vilka som skall vara rörliga, och vilka leder de rörliga transformationerna kontrollerar (6 p) b) Förklara hur dina transformationer skulle behöva förändras för att posera minifiguren från utgångspositionen i den första bilden till positionen i den andra bilden ovan Observera att höger fot står kvar på marken (2 p) c) Egentligen roterar armarna runt en svagt lutande rotationsaxel, som visas i bilden längst till höger Modifiera scengrafen så att den tar hänsyn till detta Du behöver inte ange hela scengrafen igen, bara de delar som ändras och vad de nya noderna gör (2 p)
Uppgift 4 (5 p) Animering kan göras med många olika metoder, bland annat direkt keyframing, scriptning av rörelser med parametriska kurvor, motion capture, fysikalisk modellering och partikelsystem Var och en av dessa fem animationsmetoder kan vara lämplig att använda för en av följande fem 3Danimerade scener i en tänkt kortfilm Para ihop metoderna med var sin scen, och motivera ditt svar kortfattat (Scenerna kan tyckas otäcka, men lugn, det är bara på låtsas) a) En Lego-bil kör med hög hastighet längs en gata i en Lego-stad b) En ensam Lego-figur går över gatan, vrider på huvudet, ser bilen komma och höjer armarna i förfäran (Lego-figurens ditmålade ansiktsuttryck förblir förstås oförändrat) c) Lego-figuren blir påkörd, kastas upp i luften och snurrar, landar en bit bort och studsar okontrollerat vid landningen d) Efter att föraren tappat kontrollen öven bilen kör den med hög fart in i ett Lego-hus, som går sönder i ett stort antal likadana Lego-bitar som flyger iväg åt alla håll e) En animerad representation av en verklig person kommer in i rummet där dramatiken just utspelat sig, trampar på en av de kantiga Legobitarna från huset och hoppar runt på ett ben och jämrar sig Uppgift 5 (7 p) Parametriska kurvor beskrivs oftast som en funktion Qu ( ) av parametern u, kontrollpunkterna P i och ett antal interpolationspolynom B i () u, enligt N Qu ( ) = P i B i ( u) i = 0 En vanlig och användbar klass av parametriska kurvor som du redan känner till är kubiska Béziér-kurvor, där interpolationspolynomen ges av: B 0 ( u) = ( 1 u) 3, B 1 ( u) = 3u( 1 u) 2, B 2 ( u) = 3u 2 ( 1 u), B 3 ( u) = u 3 Béziér-kurvor har dock en nackdel: en lång följd av hopkopplade kurvsegment går bara genom vissa av kontrollpunkterna Det blir därför svårt att med Béziér-kurvor göra t ex banor för animerade objekt utifrån en serie mätpunkter för en verklig rörelse Det finns för sådana ändamål andra klasser av kubiska kurvor som går genom samtliga kontrollpunkter En av dessa är så kallade Catmull-Rom-splines, där ett segment som definieras av kontrollpunkterna P 0 har följande egenskaper: Q( 0) = P 1 Q( 1) = P 2 Tangenten i u = 0 är lika med hälften av vektorn mellan P 0 och P 2 Tangenten i u = 1 är lika med hälften av vektorn mellan P 1 och P 3 Två intilliggande Catmull-Rom-kurvsegment har alla utom en av kontrollpunkterna gemensamma Om kontrollpunkterna för ett segment Q 1 () u är P 0 så har nästa segment Q 2 () u kontrollpunkterna P 1, P 4 a) Visa att de två kurvsegmenten Q 1 och Q 2 hänger ihop, alltså att det inte blir något glapp i skarven mellan de två segmenten (Detta innebär matematiskt att kurvan är kontinuerlig) (1 p) b) Visa att det blir en mjukt rundad övergång i skarven, alltså att tangenten på ömse sidor om punkten i skarven har samma riktning och längd (Detta innebär att kurvans derivata är kontinuerlig) (1 p) c) Härled interpolationspolynomen och teckna den fullständiga ekvationen för ett kubiskt Catmull-Rom kurvsegment Qu ( ) som funktion av kontrollpunkterna P 0 och parametern u (5 p)