Tentamen TNM061, 3D-grafik och animering för MT2. Tisdag 3/ kl 8-12 TP51, TP52, TP54, TP56, TP41, TP43. Inga hjälpmedel

Relevanta dokument
Tentamen TNM061, 3D-grafik och animering för MT2. Onsdag 20/ kl SP71. Inga hjälpmedel

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Omtentamen TNM077, 3D datorgrafik och animering (samt även TNM008, 3D datorgrafik och VR)

Omtentamen. TNM077 3D-datorgrafik och animering kl 8-12 Inga hjälpmedel. (samt även TNM008 3D-datorgrafik och VR)

Tentamen TNM061 3D-grafik och animering för MT2 och DAV1

Tentamen TNM077, 3D datorgrafik och animering

Spelutveckling 3d-grafik och modellering. Grunder för 3d-grafik Blender Animering

Procedurell grottgenerator och eld i GLSL. Marcus Widegren

Avalanche Studios. OpenGL. Vår teknik. Våra spel. Lite inspiration... Stora, öppna spelvärldar. Sandbox-gameplay. Hög audiovisuell standard

Bézierkurvor och parametriska objektrepresentationer

Robin Wahlstedt Datavetenskap / Spel Vetenskapsmetodik rwt07001@student.mdh.se. Datorgrafik i spel

Grafik raytracing. Mattias Axblom.

DGI/SUDOA Den historiska utvecklingen. Globala - lokala belysningsmodeller. Lokala belysningsmodeller. Rendering equation

x +y +z = 2 2x +y = 3 y +2z = 1 x = 1 + t y = 1 2t z = t 3x 2 + 3y 2 y = 0 y = x2 y 2.

Kurvor och ytor. Gustav Taxén

Linjär algebra på några minuter

Tentamen i Matematisk analys MVE045, Lösningsförslag

Homogena koordinater och datorgrafik

NpMa2b vt Kravgränser

Koordinatsystem och Navigation

ax + y + 2z = 3 ay = b 3 (b 3) z = 0 har (a) entydig lösning, (b) oändligt många lösningar och (c) ingen lösning.

LYCKA TILL! kl 8 13

TNA001- Matematisk grundkurs Tentamen Lösningsskiss

Procedurell 3D-eld på grafikkortet

MMA127 Differential och integralkalkyl II

NATIONELLT KURSPROV I MATEMATIK KURS D HÖSTEN Del I, 9 uppgifter utan miniräknare 3. Del II, 8 uppgifter med miniräknare 6

Procedurell Terräng med LOD i OpenGL 4

Procedurell renderingsmotor i Javascript och HTML5

Föreläsning 2 (kap , 2.6 i Optics)

Procedurella Grottor TNM084. Sammanfattning. Alexander Steen

Grunderna i C++ T A. Skapad av Matz Johansson BergströmLIMY

Datorstödd konstruktion fortsättningskurs, TM051B Tentamen: Del 2-3D CAD - modellering

Tentamen i Matematik 1 HF1901 (6H2901) 22 aug 2011 Tid: :15 Lärare:Armin Halilovic

PROCEDUELL TERRÄNG. Proceduella metoder för bilder (TNM084) Jimmy Liikala Institutionen för teknik och naturvetenskap

TDDC30/725G63. Objektorienterad programmering i Java, datastrukturer och algoritmer

Fotorealism, animering, SW resurser

Mälardalens högskola Akademin för undervisning, kultur och kommunikation

Denna tentamen består av två delar. Först sex enklare uppgifter, som vardera ger maximalt 2 poäng. Andra delen består av tre uppgifter, som

Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren om att du har förstått dessa även om detaljer kan vara felaktiga.

Frågorna 1 till 6 ska svaras med ett kryss för varje korrekt påstående. Varje uppgift ger 1 poäng. Använd bifogat formulär för dessa 6 frågor.

Lösningsförslag till övningsuppgifter, del V

FFM234, Klassisk fysik och vektorfält - Föreläsningsanteckningar

TANA17 Matematiska beräkningar med Matlab

TANA17 Matematiska beräkningar med Matlab

Rumsuppfattning är förmågan att behandla sinnesintryck av former

Viktigt! Glöm inte att skriva Tentamenskod på alla blad du lämnar in.

x 2 + x 2 b.) lim x 15 8x + x 2 c.) lim x 2 5x + 6 x 3 + y 3 xy = 7

MAA123 Grundläggande vektoralgebra

SF1635, Signaler och system I

Linjära avbildningar. Låt R n vara mängden av alla vektorer med n komponenter, d.v.s. x 1 x 2. x = R n = x n

SF1625 Envariabelanalys Tentamen Måndagen den 11 januari 2016

Konvexa höljet Laboration 6 GruDat, DD1344

Checklista för funktionsundersökning

NATIONELLT KURSPROV I MATEMATIK KURS B VÅREN Del I, 9 uppgifter utan miniräknare 3. Del II, 8 uppgifter utan miniräknare 5

(ii) Beräkna sidoförskjutningen d mellan in- och utgående strålar, uttryckt i vinklarna θ i och tjocklekar t i. (2p)

TAIU07 Matematiska beräkningar med Matlab

Chalmers tekniska högskola Datum: kl Telefonvakt: Christoffer Standar LMA033a Matematik BI

Kort introduktion till POV-Ray, del 5

1. (Dugga 1.1) (a) Bestäm v (3v 2u) om v = . (1p) and u =

Kurs: Datorstödd konstruktion fortsättningskurs, V15-3, TM051B. Provmoment: Tentamen 2,5 högskolepoäng. Personnummer:.. (Ifylles av student)

Vektorgeometri för gymnasister

Högskolan i Skövde (SK, JS) Svensk version Tentamen i matematik Lösningsförslag till del I

Lektion 1. Kurvor i planet och i rummet

Exempel :: Spegling i godtycklig linje.

Trigonometriska funktioner och deras derivata

LANDING ZONE IV (v1.0, uppgift 4 av 4) för 3D Animering B 1112

(a) Bestäm för vilka värden på den reella konstanten c som ekvationssystemet är lösbart. (b) Lös ekvationssystemet för dessa värden på c.

FYSIKUM STOCKHOLMS UNIVERSITET Tentamensskrivning i Vågrörelselära och optik, 7 poäng, FyL2 Tisdagen den 19 juni 2007 kl 9-15

Parabeln och vad man kan ha den till

Tentamen 1 i Matematik 1, HF okt 2018, Skrivtid: 14:00-18:00 Examinator: Armin Halilovic

Tentamen i Matematik 1 HF aug 2012 Tid: Lärare: Armin Halilovic

SF1626 Flervariabelanalys Tentamen Måndagen den 16 mars 2015

1. Betrakta en plan harmonisk elektromagnetisk våg i vakuum där det elektriska fältet E uttrycks på följande sätt (i SI-enheter):

I den här uppgiften ska du undersöka förhållandet mellan parabelarean och rektangelarean.

Fotorealistisk 3D Datorgrafik

(d) Mängden av alla x som uppfyller x = s u + t v + (1, 0, 0), där s, t R. (e) Mängden av alla x som uppfyller x = s u där s är ickenegativ, s 0.

Hjälpmedel: Typgodkänd räknare, Physics Handbook, Mathematics Handbook.

Mälardalens högskola Akademin för utbildning, kultur och kommunikation

After Effects Lathund

TDDC74 Programmering, abstraktion och modellering. Tentamen

TENTAMEN. Ten2, Matematik 1 Kurskod HF1903 Skrivtid 13:15-17:15 Fredagen 25 oktober 2013 Tentamen består av 4 sidor

x) 3 = 0. 1 (1 + 2x) Bestäm alla reella tal x som uppfyller att 0 x 2π och att tangenten till kurvan y = sin(cos(x)) är parallell med x-axeln.

Institutionen för matematik och datavetenskap Karlstads universitet. GeoGebra. ett digitalt verktyg för framtidens matematikundervisning

Robotarm och algebra

TENTAMEN. Kursnummer: HF0021 Matematik för basår I. Rättande lärare: Niclas Hjelm Examinator: Niclas Hjelm Datum: Tid:

Exempel :: Spegling i godtycklig linje.

Tentamen Matematisk grundkurs, MAGA60

Tentamen Datastrukturer (DAT036)

23 Konservativa fält i R 3 och rotation

. (2p) 2x + 2y + z = 4 y + 2z = 2 4x + 3y = 6

Försättsblad Tentamen

1 basen B = {f 1, f 2 } där f 1 och f 2 skall uttryckas i koordinater i standardbasen.

Modeller och teknik Grundl program och gränssnitt. Matlab-tips

3.0. Tips och Trix Sida 1 av 18

Spelutveckling - Scenegrafer. Scenegrafer Optimeringar Culling

FFM234, Klassisk fysik och vektorfält - Föreläsningsanteckningar

Mikael Bondestam Johan Isaksson. Spelprogrammering. med CDX och OpenGL

SF1624 Algebra och geometri Tentamen Torsdag, 9 juni 2016

1.1 Verktygslådan översikt

Rendera med mental ray

Transkript:

Tentamen TNM061, 3D-grafik och animering för MT2 Tisdag 3/6 2014 kl 8-12 TP51, TP52, TP54, TP56, TP41, TP43 Inga hjälpmedel Tentamen innehåller 8 uppgifter, vilka tillsammans kan ge maximalt 50 poäng. För betyg G (registreras som sifferbetyg 3) erfordras minst 24 poäng. För betyg VG (registreras som sifferbetyg 5) erfordras minst 35 poäng. Deluppgifterna bygger inte alltid direkt på varandra, så läs t ex b) även om du inte svarar på a). Svara kortfattat men rimligt fullständigt på uppgifterna. Förutsätt inte att läsaren redan kan svaret, utan visa med ditt svar att du kan ämnet och att du förmår förklara det för andra. Förklara införda beteckningar och ekvationer, och redovisa eventuella beräkningar. Rita figurer där det gör svaret tydligare. Glöm inte heller bort att förklara dina figurer i ord eller i ekvationer. För uppgifter som ger många poäng vill jag se rimligt utförliga svar för full poäng, men för uppgifter med enstaka poäng räcker det med korta svar. Även korta svar skall vara tydliga. Jag kommer att befinna mig i närheten av tentamenslokalen och besöka den flera gånger under tentamenstiden för att svara på eventuella frågor. Kontakta tentamensvakten om du behöver få tag i mig mellan dessa tillfällen. Lycka till! Stefan Gustavson

Uppgift 1 (9 p). Phongs klassiska lokala reflexionsmodell med tre termer för allmänljus, diffus reflexion och spekulär reflexion brukar traditionellt presenteras med följande förenklade ekvation: I=I a k a +I d k d ( ^N ^L)+I s k s ( ^R ^V ) n Om man verkligen ska implementera modellen i programkod i t.ex. en shader måste man tänka på flera saker som inte framgår av den förenklade ekvationen: a) Ekvationen beskriver reflexionen som en skalär intensitet, I. Hur hanterar man färgat ljus och färgade ytor? Visa tydligt med en förklarad ekvation för åtminstone en av de tre termerna. (2 p) b) Vinkelberoendet för den diffusa termen beräknas med en skalärprodukt. Vad händer om vinkeln mellan de båda vektorerna är större än 90 grader? Hur hanterar man det? Hur väl motsvarar det vad som händer i verkligheten? (2 p) c) Ekvationen beskriver inverkan av en enda ljuskälla. Hur hanterar man flera ljuskällor? Svara med en modifierad ekvation. (2 p) d) Nästan samtliga ingående parametrar beror på olika sätt av vilken punkt p=(p x, p y, p z ) på ytan av ett visst objekt som man räknar på, men det framgår inte av ekvationen. För normalriktningen ^N är det ganska självklart att den beror på p, men förklara varför var och en av I d, k d och ^L i den diffusa termen också bör kunna bero av p för att få god realism! (3 p) Uppgift 2 (5 p). Nedanstående två bilder visar ett spegelblankt objekt i en enkel miljö. Den ena bilden har renderats med raytracing, den andra med en så kallad environment map, även kallad reflection map. a) Vilken är vilken? Motivera ditt svar. (1 p) b) En av metoderna är lämplig för realtidsrendering. Vilken, och varför? (2 p) c) Den andra metoden är inte lämplig för realtidsrendering. Varför inte? (2 p) Uppgift 3 (7 p). Raytracing ( strålföljning ) är en vanlig renderingsmetod. a) Förklara den grundläggande principen för hur metoden fungerar. Förklara särskilt hur man beräknar reflexionen från speglande, genomskinliga och diffusa ytor. (5 p) b) Förklara hur skuggor beräknas med raytracing. (2 p)

Uppgift 4 (6 p). Spelet Elder Scrolls Online som släpptes i april 2014 är ett så kallat MMO, massive multiplayer online-spel. Hundratals spelare ska kunna delta i samma scen, där alla deras olika karaktärer visas samtidigt på skärmen. Modellerna för varje spelare behöver därför vara förhållandevis enkla. En bild av en sådan modell visas i bilden här bredvid. De visuella effekterna av förenklingarna yttrar sig som följer (a, b, c). Beskriv i tekniska termer vad det är som förenklats, och varför just den förenklingen sparar arbete för datorn. a) Modellerna ser litet kantiga ut. Inte så att det direkt stör, men i alla fall så att det syns. (2 p) b) De olika kläderna och rustningarna som en spelare kan ha ser på nära håll ut som om de målats på modellerna. Det finns några få grundvarianter av själva modellen, och sedan är det bara mönstret som skiljer. (2 p) c) När det är väldigt många spelare i bild blir de ännu kantigare, mönstret på ytan blir pixligt och suddigt, och blanka detaljer som t ex polerad metall på rustningar och spännen blir matta. (2 p) Uppgift 5 (4 p). I bilden i föregående uppgift ser det på ljusreflexionen ut som om den blanka rustningen är skrovlig, men modellen är i själva verket slät. Det ser också ut som om det går vågor på vattnet i bakgrunden, men vattenytan är egentligen bara ett enkelt plan. För dessa effekter har man använt en metod som är väldigt vanlig inom datorgrafik. Vilken? Förklara någorlunda i detalj hur den fungerar. Rita figur. Du behöver inte gå in på några ekvationer.

Uppgift 6 (4 p). Videospelet Lego Marvel Super Heroes släpptes under 2013. Några av de många spelbara figurerna visas i bilden. Mönstret på kroppen på figurerna är gjorda med bildbaserade texturer, men ansiktsdragen är gjorda med en ganska ansenlig mängd polygoner, trots att de flesta av ansiktena är tvådimensionella mönster på en helt slät yta. Det blir mer uppenbart när man ser figurerna animeras, men även i en stillbild på nära håll i hög upplösning syns det tydligt att mönstret för ansiktsdragen är gjort med polygoner och att mönstret på kroppen är gjort som en bildbaserad textur. Hur ser man det? Varför har man valt att göra så? Uppgift 7 (6 p). En kubisk Béziérkurva definieras av ekvationen: p(t)=(1 t ) 3 p 0 +3 t(1 t) 2 p 1 +3t 2 (1 t) p 2 +t 3 p 3, 0 t 1 där p i är kurvans kontrollpunkter, i=0, 1,2,3. Två kurvsegment A och B med kontrollpunkter p ia och p ib skall skarvas ihop till en sammanhängande bana så att segment B tar vid med t=0 där segment A slutar med t=1, och de kännetecknas av följande: Segment A har sin sista kontrollpunkt på samma ställe som kurva B har sin första kontrollpunkt: p 3 A = p 0 B. Den tredje kontrollpunkten för segment A ( p 2 A ) och den andra kontrollpunkten för segment B ( p 1B ) ligger lika långt åt var sitt håll längs en rät linje som går igenom p 3 A = p 0 B. (Se figur.) a) Visa att den ihopskarvade kurvan är kontinuerlig i skarven. (2 p) b) Visa att även derivatan för den ihopskarvade kurvan är kontinuerlig i skarven. (2 p) c) Är dessutom andraderivatan kontinuerlig i skarven? Motivera ditt svar med en beräkning. (2 p)

Uppgift 8 (9 p). Nedanstående programkod ritar en teddybjörn med OpenGL och C++. Teddybjörnen har rörliga armar, ben och huvud. En verklig teddybjörn med samma rörelsemöjligheter finns i tentamenslokalen om du vill testa. (Det är helt OK att klappa honom också.) Rotationsaxlarna har förenklats något i koden för att göra den kortare. Klassen Matrix implementerar en matrisstack enligt följande: Matrix.pop() Matrix.push() Matrix.init() Matrix.rotateX(phi) Matrix.rotateY(phi) Matrix.rotateZ(phi) Matrix.translate(tx, ty, tz) Tag bort den översta matrisen från stacken. Skapa en kopia av den översta matrisen och lägg den överst på stacken. Tag bort alla matriser från stacken och lägg en enhetsmatris överst. vinkeln phi runt x-axeln. vinkeln phi runt y-axeln. vinkeln phi runt z-axeln. Mutliplicera den översta matrisen med en translationsmatris. För att rita objekt har man implementerat en enkel klass Mesh som renderas med metoden: Mesh.render(Matrix M); Matrisen högst upp på matrisstacken M används för att transformera objektet vid renderingen. Arrayen float pose[5] innehåller de vinklar som beskriver rotationen för figurens leder. Matrix M; Mesh TeddyBody, TeddyHead, TeddyLeftArm, TeddyRightArm, TeddyLeftLeg, TeddyRightLeg; float pose[5]; // (Code to create meshes left out) M.init(); TeddyBody.render(M); M.translate(0.0, 0.0, 0.3); M.rotateZ(pose[0]); TeddyHead.render(M); M.translate(0.1, 0.0, 0.2); M.rotateX(pose[1]); TeddyRightArm.render(M); M.translate(-0.1, 0.0, 0.2); M.rotateX(pose[2]); TeddyLeftArm.render(M); M.translate(0.1, 0.0, 0.0); M.rotateX(pose[3]); TeddyRightLeg.render(M); M.translate(-0.1, 0.0, 0.0); M.rotateX(pose[4]); TeddyLeftLeg.render(M); a) Rita en scengraf för att beskriva samma scen i ett scengrafsbaserat API, exempelvis Java3D. Det är inte så noga med exakt vilken notation du använder, men du skall visa tydligt hur scengrafen ser ut. (5 p) b) När man multiplicerar en ny matris T med en existerande matris M på stacken, ska den nya matrisen då bli T M eller M T? Motivera ditt svar! (2 p) c) Med koden ovan kommer teddybjörnen att kunna röra på huvud, armar, ben, men den kommer att sitta fast på en fix position i scenen. Visa vilka ändringar som behöver göras i koden för att även kunna flytta och rotera teddybjörnen. (2 p)