Transformationer i 3D. Gustav Taxén

Relevanta dokument
3D: transformationer:

Bakgrund. Bakgrund. Kursmaterial. Transformationer i 3D. Matematiska byggstenar. GrIP våren 2008, Förel.10 Yngve Sundblad

Transformationer. Translation. Skalning. Homogena koordinater. Rotation. 2D-grafik. x y. Inom datorgrafik är transformationer den. Många. bevaras.

Explorativ övning Vektorer

LINJÄRA AVBILDNINGAR

Transformationer, Angel

Geometriska vektorer

5 Linjär algebra. 5.1 Addition av matriser 5 LINJÄR ALGEBRA

Homogena koordinater och datorgrafik

Linjär Algebra, Föreläsning 2

Veckoblad 1, Linjär algebra IT, VT2010

Moment 4.11 Viktiga exempel 4.32, 4.33 Övningsuppgifter Ö4.18-Ö4.22, Ö4.30-Ö4.34. Planet Ett plan i rummet är bestämt då

1 Ortogonalitet. 1.1 Skalär produkt. Man kan tala om vinkel mellan vektorer.

MATEMATIK GU. LLMA60 MATEMATIK FÖR LÄRARE, GYMNASIET Analys, ht Block 5, översikt

Varför behövs grafikbibliotek? Introduktion till OpenGL. OpenGL är ett grafikbibliotek. Fördelar med OpenGL. Allmänt om OpenGL. Nackdelar med OpenGL

Analys o Linjär algebra. Lektion 7.. p.1/65

Vektorgeometri. En vektor v kan representeras genom pilar från en fotpunkt A till en spets B.

Uppsala Universitet Matematiska Institutionen Bo Styf. Sammanfattning av föreläsningarna

P Q = ( 2, 1, 1), P R = (0, 1, 0) och QR = (2, 2, 1). arean = 1 2 P Q P R

Veckoblad 3, Linjär algebra IT, VT2010

KOKBOKEN 1. Håkan Strömberg KTH STH

October 9, Innehållsregister

Vektorgeometri för gymnasister

UPG5 och UPG8 Miniprojekt 1: 2D datorgrafik

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

Självkoll: Ser du att de två uttrycken är ekvivalenta?

T BSK03 Teknik för avancerade Datorspel. Jens Ogniewski Information Coding Group Linköpings universitet

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.

1. Inledning. x y z. u = xe 1 + ye 2 + ze 3 = e

2D-grafik. Gustav Taxén

1 Linjära ekvationssystem. 2 Vektorer

Linjär algebra på några minuter

TBSK03 Teknik för avancerade Datorspel 49(68)

MA2004 Tillämpad Matematik II, 7.5hp,

M0043M Integralkalkyl och Linjär Algebra, H14,

Innehåll. Referenssystem. Matriser. Rotationsmatrisen. Euler angle. Animering av ett objekts rotation

Exempel :: Spegling i godtycklig linje.

Lösningar till utvalda uppgifter i kapitel 1

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

Linjär Algebra, Föreläsning 2

Modul 1: Komplexa tal och Polynomekvationer

Där a = (1, 2,0), b = (1, 1,2) och c = (0,3, 1) Problem 10. Vilket är det enda värdet hos x för vilket det finns a och b så att

1 Vektorer i koordinatsystem

Linjer och plan (lösningar)

Exempel :: Spegling i godtycklig linje.

Detta cosinusvärde för vinklar i [0, π] motsvarar α = π 4.

SF1624 Algebra och geometri

1 som går genom punkten (1, 3) och är parallell med vektorn.

SF1624 Algebra och geometri Lösningsförslag till tentamen DEL A

Vektorer. Vektoriella storheter skiljer sig på ett fundamentalt sätt från skalära genom att de förutom storlek också har riktning.

Vektorgeometri för gymnasister

vilket är intervallet (0, ).

Isometrier och ortogonala matriser

Tentamen 1 i Matematik 1, HF1903, för BD10 onsdag 22 september 2010, kl

För ingenjörs- och distansstudenter Linjär Algebra ma014a ATM-Matematik Mikael Forsberg

Att beräkna:: Avstånd

Matematik med Matlab för I Inledning. 1 Programmering i MATLAB

Vektorgeometri för gymnasister

Föreläsning 3, Linjär algebra IT VT Skalärprodukt

Lösningsförslag till problem 1

A = x

Lösningar till utvalda uppgifter i kapitel 8

Moment 4.3.1, Viktiga exempel 4.44, 4.46, 4.48 Handräkning 4.53, 4.59, 4.60, 4.61, 4.62, 4.63, 4.64, 4.65 Datorräkning 1-15 i detta dokument

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

Vi definierar addition av två vektorer och multiplikation med en reell skalär (tal) λλ enligt nedan

2x+y z 5 = 0. e x e y e z = 4 e y +4 e z +8 e x + e z = (8,4,5) n 3 = n 1 n 2 =

SF1624 Algebra och geometri Tentamen med lösningsförslag onsdag, 11 januari 2017

Uppgift 1. a) Bestäm alla lösningar till ekvationen. b) Lös olikheten. Rita följande andragradskurvor:

M = c c M = 1 3 1

Mer om geometriska transformationer

SF1624 Algebra och geometri Lösningsförslag till tentamen DEL A

Vektorgeometri för gymnasister

SF1624 Algebra och geometri

17. Övningar ÖVNINGAR Låt F och G vara avbildningar på rummet, som i basen e = {e 1,e 2,e 3 } ges av. x 1 x 2 2x 2 + 3x 3 2x 1 x 3

Transformationer i R 2 och R 3

Geometriska transformationer

2s + 3t + 5u = 1 5s + 3t + 2u = 1 3s 3u = 1

Crash Course Algebra och geometri. Ambjörn Karlsson c januari 2016

c d Z = och W = b a d c för några reella tal a, b, c och d. Vi har att a + c (b + d) b + d a + c ac bd ( ad bc)

DEL I. Matematiska Institutionen KTH. Lösning till tentamensskrivning på kursen Linjär algebra II, SF1604, den 15 mars 2010 kl

Uppgift 1. (4p) (Student som är godkänd på KS1 hoppar över uppgift 1.) Vi betraktar triangeln ABC där A=(1,0,3), B=(2,1,4 ), C=(3, 2,4).

Banach-Tarskis paradox

SF1624 Algebra och geometri

SF1624 Algebra och geometri

Karta över Jorden - viktigt exempel. Sfär i (x, y, z) koordinater Funktionen som beskriver detta ser ut till att vara

Frågorna 1 till 6 ska svaras med ett kryss för varje korrekt påstående. Varje uppgift ger 1 poäng.

Vektorgeometri för gymnasister

Vektorer för naturvetare. Kjell Elfström

Inledning. CTH/GU LABORATION 4 MVE /2017 Matematiska vetenskaper

Vektorgeometri för gymnasister

ANALYTISK GEOMETRI. Xantcha

MA2004 Tillämpad Matematik II, 7.5hp,

Stöd inför omtentamen i Linjär algebra TNA002.

(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.

SF1624 Algebra och geometri Lösningsförslag till tentamen DEL A

===================================================

Kompendium om. Mats Neymark

Inför tentamen i Linjär algebra TNA002.

Lite Linjär Algebra 2017

Vektorgeometri för gymnasister

Transkript:

Transformationer i 3D Gustav Taén gustavt@csc.kth.se 2D64 Grafik och Interaktionsprogrammering VT 27

Bakgrund Ett smidigt sätt att arbeta med 3D-grafik är att tänka sig att man har en virtuell kamera som betraktar betraktar de föremål man vill rita. Om vi simulerar hur ljus från ljuskällor llor reflekteras av tor och når kameran kan vi få en bild som i bästa fall ser ut som ett fotografi.

Bakgrund Vi börjar med att ta reda på hur vi kan transformera 3D-förem remål och gå från tre dimensioner till två. Vi tar hand om ljusreflektion och skuggning senare i kursen!

Transformationer i 3D Transformation Projektion Transformation Viewporttransformation

Matematiska bggstenar Skalär (storhet) Punkt (position) Vektor (längd och riktning) u P v Kvaternion (orientering) q

Skalär- och krssprodukt Två av de vanligaste operationerna i datorgrafik. v v u u v = (u v, u v, u v ) = u v cos θ u v θ u v u v = (u v u v, u v u v, u v u v ) v u

Höger- och vänsterhäntnt koordinat- sstem OpenGL använder ett högerhänt koordinatsstem med -aeln till höger, -aeln uppåt. -aeln pekar utåt ur skärmen. Direct 3D använder ett vänsterhänt koordinatsstem med -aeln till höger, -aeln uppåt. -aeln pekar in i skärmen. I fortsättningen arbetar vi i högerhänta koordinatsstem.

Basvektorer Givet n st n-dimensionella basvektorer v, v 2,..., v n som alla är vinkelräta mot varandra kan vi skriva vektorn w som w = α v + α 2 v 2 + α 3 v 3 +... + α n v n v 2 α 3 v 3 α 2 v 2 v 3 w α v v

Basvektorer Vi inför vektorer i vektorer för att kunna skriva w = α v + α 2 v 2 +... + α n v n lite kortare som: v a = w = a T v 2... v n där α α 2... a T = α α 2... α n α n

Ramar (frames) Vi definierar en ram som (v, v 2,..., v n, P ) där P kallas ramens origo. För punkter i denna ram gäller: P = P + η v + η 2 v 2 + η 3 v 3 +... + η n v n v 3 η 3 v 3 P P η v v η 2 v 2 v 2

Ramar (frames) eller P = p T v v 2... v n P η 3 v 3 P v 3 P η v v där p T = η η 2... η n v 2 η 2 v 2 Vi definierar P= P och P =

Ramar (frames) En riktningsvektor w i denna ram skrivs w = a T v v 2... v n P där a T = α α 2... α n Riktningsvektorer definieras alltså oberoende av origo.

Bte av ram Givet två ramar (v, v 2, v 3, P ) och (u, u 2, u 3, Q ), kan vi skriva u = γ v + γ 2 v 2 + γ 3 v 3 u 2 = γ 2 v + γ 22 v 2 + γ 23 v 3 γ 3 v 3 γ 2 v 2 v 3 u γ v v u 3 = γ 3 v + γ 32 v 2 + γ 33 v 3 v 2 Q = γ 4 v + γ 42 v 2 + γ 43 v 3 + P

Bte av ram u = γ v + γ 2 v 2 + γ 3 v 3 u 2 = γ 2 v + γ 22 v 2 + γ 23 v 3 u 3 = γ 3 v + γ 32 v 2 + γ 33 v 3 Q = γ 4 v + γ 42 v 2 + γ 43 v 3 + P Det är smidigare att skriva rambtet på matrisform: u u 2 u 3 Q = γ γ 2 γ 3 γ 2 γ 22 γ 23 γ 3 γ 32 γ 33 γ 4 γ 42 γ 43 v v 2 v 3 P M

Punkter och rambte Ta nu en punkt P och definiera den i två olika ramar: P = α v + α 2 v 2 + α 3 v 3 + P P = β u + β 2 u 2 + β 3 u 3 + Q i den första ramen i den andra Hur är α- och β-värdena relaterade? (enl. ovan) P = β β 2 β 3 u u 2 u 3 Q = b T M v v 2 v 3 P = α α 2 α 3 v v 2 v 3 P = a T v v 2 v 3 P (föregående bild)

Punkter och rambte b T M v v 2 v 3 P = a T b T M = a T a = M T b v v 2 v 3 P och omvänt: b = (M T ) - a D.v.s. P's koordinater i ram 2 fås om man multiplicerar koordinaterna för ram med (M T ) -.

Eempel Antag att vi arbetar i 2D och har två ramar (v, v 2, P ) och (u, u 2, Q ) och att ramarna är relaterade till varandra enligt följande: v 2 v u 2 (= v 2 ) u (= 2v ) u = 2v u 2 = v 2 Q = P M = M T = M - = (M T ) - = 2.5

Eempel Tag nu punkten a = ( ) T i den första ramen. Vilken är dess motsvarighet i den andra ramen? b = (M T ) - a ger oss.5 b = a =.5 T v u 2 (= v 2 ) v 2 u (= 2v )

Vi kan också se rambtet som en transformation. Eempel: Antag att "världen" är ram och att vi gör ett temporärt rambte till ram 2. Vi specificerar nu punkten p = ( ) T i ram 2. I ram blir den p världen = M T p = (2 ) T u 2 p v 2 p världen u v Med andra ord är bte av ram och transformation ekvivalenta begrepp!

Firam och transformationsram Ofta jobbar man med en "firam" och en "transformationsram". Firamen är fast och transformationsramen tillåts variera. Eempel: Våra koordinater -d α α 2 α 3 = α α 2 α 3 -d d Firam Transformationsram M T Punkt i transf.- ramen Motsv. punkt i firamen

Firam och transformationsram Specificera en modell i "sitt eget" koordinatsstem, objektkoordinater. "Placera ut" modellen i "världen" genom att definiera en transformationsram. Multiplicera objektkoordinaterna med M T för att få modellens koordinater i firamen. Groda-modell i dess objektkoordinatsstem Firam Transformationsram

Matriser Matriser = = = = = ' ' ' ' ' ' s s s t t t T S T M Translation Skalning

Matriser Matriser = = = = = = cos sin sin cos ) ( ' ' ' cos sin sin cos ) ( ' ' ' cos sin sin cos ) ( ' ' ' θ θ θ θ θ θ θ θ θ θ θ θ θ θ θ R R R Rotation kring -aeln Rotation kring -aeln Rotation kring -aeln

Multipla transformationer Vi kan sätta samman transformationer genom att multiplicera matriserna: -d s s -d T S TS = s -d α α 2 α 3 = α sα 2 α 3 -d TS

Multipla transformationer Observera att ordningen på multiplikationen kan spela roll! -d s = s -d T S TS s -d = s -sd S T ST

Att specificera orientering Vi börjar med att pröva aw-pitch pitch-roll. Antag att flgplanet är modellerat så det initialt "pekar" längs -aeln. Vi roterar först kring -aeln (roll), sedan kring -aelnaeln (aw), sist kring -aeln (pitch). Kallas för att arbeta med Euler angles eller Eulermatriser.

Gimbal lock Om vi roterar en av alarna så den sammanfaller med en av de andra kan vi hamna i ett läge där vi tappar information! Situationen kallas för Gimbal lock. Beror på att rotationerna alltid görs i samma ordning.

Gimbal lock: eempel θ 2 BÅDE θ och θ beskriver "pitch"! θ = 9 grader 2 3 θ 3 3 2

Gimbal lock: eempel Eempel: Rotationsordningen är Z, Y, X. Vinkeln för är : rotationer kring och funkar som förväntat. Om vinkeln för är 9 grader: rotationen kring och går inte att särskilja!

Quaternions v Antag att vi kan beskriva rotation kring en godtcklig vektor v. Man kan visa att vilken orientering som helst kan beskrivas som en ( st) rotation kring en vektor.

Quaternions Antag att vi kan skriva flgplanets orientering i förhållande till "världens" koordinatsstem som q. Idén är nu att utgå från q och beskriva förändringen i orientering över en bildruta som rotationer kring flgplanets tre nuvarande koordinatalar.

Quaternions Antag att vi drar flgplanets strspak mot oss, planets nos ska rotera uppåt θ radianer. b θ a c Vi har q som tar oss från "världskoordinatsstemet" till planets nuvarande orientering. Vi tillverkar nu en q b som roterar θ radianer kring aeln b. Vi gör sedan q = q "+" q b

Quaternions b a c Rotera från "världskoordinatsstemet" till nuvarande koordinatsstem abc Uppdatera "heading": rotera kring a och få ab'c' Uppdatera "pitch": rotera kring b' och få a'b'c'' Uppdatera "roll": rotera kring c'' och få a''b''c'' Sätt q till resultatet

Quaternions v En matematisk struktur som kan beskriva rotation kring en godtcklig vektor är kvaternioner (quaternions). En kvaternion q definieras så här: q = (q, q, q 2, q 3 ) = (q, q) i 2 = j 2 = k 2 = ijk = - q = q i + q 2 j + q 3 k Observera att q INTE är rotationsaeln v!

Quaternions Lite kvaternionalgebra: tag två kvaternioner a och b: a = (q, q, q 2, q 3 ) = (q, q) b = (p, p, p 2, p 3 ) = (p, p) Addition och multiplikation: a + b = (p + q, p + q) ab = (p q p q, q p + p q + p q) Norm och invers: a 2 = q 2 + q q a - = ( / a 2 )(q, -q)

Quaternions Tag en punkt P i 3D. Skapa kvaternionen P θ v p = (, P) Välj rotationsaeln v och normera den. Låt rotationsvinkeln vara θ. Skapa nu kvaternionen r enligt r = (cos(θ/2), sin(θ/2)v) r - = (cos(θ/2), -sin(θ/2)v)

Man kan visa att p' = rpr - är resultatet av att rotera punkten P θ radianer kring vektorn v. Om a och b är kvaternioner som representerar rotation enl. ovan gäller också att q = ab är resultatet av att kombinera rotationerna (först a, sedan b).

Quaternions Det går enkelt att konvertera en kvaternion till en rotationsmatris (och tvärt om), se kursbunten eller kursboken! Det kan löna sig att lagra orienteringar som kvaternioner: : 4 flttal ist. för 33 = 9 (för( en rotationsmatris) Kvaternioner gör det enkelt att interpolera mellan orienteringar,, se kursbunten!

Projektioner Brook Talor, New Principles of Linear Perspective, 79.

Projektioner Planar Geometric Projections Parallell Perspective Orthographic Oblique -pt 2-pt 3-pt Multiview Aonometric Cavalier Cabinet Isometric Dimetric Trimetric Alla projektionerna finns beskrivna i kursbunten.

Ortografisk projektion Projektorerna är vinkelräta mot projektionstan. Avstånd och vinklar bevaras i projektionen.

Perspektivprojektion (enpunkts) Storlek minskar med avstånd från projektionstan. Avstånd och vinklar bevaras inte i projektionen.

Perspektivprojektion Antag att vi projicerar punkten P på ett bildplan som ligger d enheter från origo och är parallellt med --planet: Bildplan d d P p P

Perspektivprojektion Likformiga trianglar: P = T d P p p P p d = p = Analogt för p. Så den projicerade punkten blir: P p = /(/d) /(/d) d T P p = p p d T d = ( / d)

Perspektivprojektion Vi vill kunna skriva perspektivprojektionen som en matris P. För att kunna göra det måste vi införa en n operation. Om vi transformerar en punkt P = w T så att w blir skilt från ser vi till att alltid dividera med w innan vi fortsätter, d.v.s. P = /w /w /w T

Perspektivprojektion /d = /d Om /d dividerar vi alla komponenterna med /d innan vi använder punkten så att vi får /(/d) /(/d) d Detta kallas perspektivdivision i OpenGL.

Perspektivprojektion I OpenGL är projektionerna lite mer komplicerade än vad som sagts här. Anledningen är att man vill kunna klippa grafiska primitiver mot den volm som sns på projektionsplanet på ett och samma sätt oavsett vilken sorts projektion man har. I OpenGL klipps alla polgoner mot volmen - - - Man måste m.a.o. konstruera en projektionsmatris som svarar mot detta.

Perspektivprojektion Matrisen är en kombination av två operatorer: ) Distortion 2) Ortografisk projektion Klippning görs i detta läge. Detaljer finns i kursboken.

Transformationer i OpenGL Objektkoord. Ögonkoord. Klippkoord. o o o w o Kameraram till världsram e e e w e Modelviewmatris Projektionsmatris c c c w c Klippning w w w Perspektivdivision Viewporttransformation n n n Fönsterkoord. Normerade enhetskoord.

Att positionera kameran Antingen tänker man att kameran flttas i förhållande världens ram, eller att världsramen flttas så att den hamnar framför kameran. Operationerna är inverser av varandra. I OpenGL är kameraramen fi så rent matematiskt gäller det senare alternativet. Men det finns en funktion som hjälper en att fltta världen så att det motsvarar att fltta kameran.

Kombinationer av transformationer På motsvarande sätt som i 2D. Varje transformation motsvarar ett bte av ram. Så successiva transformationer är också successiva bten av koordinatsstem! M = M2 M M M 2

Hierarkiska modeller

Hierarkiska modeller i OpenGL Matrisstack Objektkoord. Ögonkoord. Klippkoord. o o o w o e e e w e Modelviewmatris Projektionsmatris c c c w c w w w Perspektivdivision Viewporttransformation n n n Fönsterkoord. Normerade enhetskoord.