GrI åren 28, Förel. Bakgrun 3D-transformationer & erspekti & Gusta Taén @kth.se & gustat@csc.kth.se Ett smiigt sätt att arbeta me 3D-grafik är att tänka sig att man har en irtuell kamera som betraktar betraktar e föremål man ill rita. Om i simulerar hur ljus från ljuskällor reflekteras a tor och når kameran kan i få en bil som i bästa fall liknar ett fotografi. DH264 Grafik och Interaktionsprogrammering VT 28 Bakgrun Vi börjar me att ta rea på hur i kan transformera 3D-föremål och gå (projicera) från tre imensioner till tå. Vi tar han om ljusreflektion och skuggning senare i kursen! Kursmaterial 3D-transformationer: Kursboken (Angel) kap.4 rojektioner: Kursboken (Angel), kap.5 Ingri Carlbom & Joseph aciorek: : lanar Geometric rojections an Viewing Transformations, Computing Sures (4), Dec 978, pp.465-492 (hela -52) (i kursbunten) Transformationer i 3D Matematiska bggstenar Transformation rojektion Skalär (storhet) unkt (position) Vektor (läng och riktning) u Transformation Viewporttransformation Katernion (3D-rotation)-orientering -orientering q
GrI åren 28, Förel. Skalär- och krssproukt Tå a e anligaste ektoroperationerna i atorgrafik Höger- och änsterhänt koorinat- sstem u (u + u,+u ) u cos θ Skalärproukten är omm faktorerna är ortogonala (inkelräta) u θ u u (u u, u u, u u ) Krssproukten (en ektor) är ortogonal mot bägge faktorerna u OpenGL anäner ett högerhänt koorinatsstem me -aeln till höger, -aeln uppåt. -aeln pekar utåt ur skärmen. Direct 3D anäner ett änsterhänt koorinatsstem me -aeln till höger, -aeln uppåt. -aeln pekar in i skärmen. u I fortsättningen arbetar i i högerhänta koorinatsstem. Basektorer Giet 3 st 3-imensionella basektorer,, som alla är inkelräta mot aranra kan i skria ektorn w som w α + α 2 + α 3 Basektorer Vi inför ektorer i ektorer för att kunna skria w α + α 2 + α 3 lite kortare som: α 3 w α w a T är α 2 a α α 2 α 3 a T α α 2 α 3 Ramar (frames) Ramar (frames) Vi efinierar en ram som (,,, ) är kallas ramens origo. För punkter i enna ram gäller: + η + η 2 + η 3 eller p T η 3 η η 3 η är p T η η 2 η 3 η 2 η 2 (4D homogena koorinater, jfr 3D homogena för punkter i planet) Vi efinierar och
GrI åren 28, Förel. Ramar (frames) Bte a ram En riktningsektor w i enna ram skris w a T Giet tå ramar (,,, ) och (u, u 2, u 3, Q ), kan i skria u γ + γ 2 + γ 3 u 2 γ 2 + γ 22 + γ 23 γ 3 γ 2 u γ är u 3 γ 3 + γ 32 + γ 33 a T α α 2 α 3 Q γ 4 + γ 42 + γ 43 + Riktningsektorer efinieras alltså oberoene a origo. Bte a ram u γ + γ 2 + γ 3 u 2 γ 2 + γ 22 + γ 23 u 3 γ 3 + γ 32 + γ 33 Q γ 4 + γ 42 + γ 43 + Det är smiigare att skria rambtet på matrisform: unkter och rambte Ta nu en punkt och efiniera en i tå olika ramar: α + α 2 + α 3 + β u + β 2 u 2 + β 3 u 3 + Q i en första ramen i en anra Hur är α- och β-ärena relaterae? u u 2 u 3 Q γ γ 2 γ 3 γ 2 γ 22 γ 23 γ 3 γ 32 γ 33 γ 4 γ 42 γ 43 u u 2 (enl. oan) β β β 2 3 u a 2 b T M 2 α T 3 α 2 α 3 3 Q M (föregåene bil) unkter och rambte b T M a T b T M a T a M T b och omänt: b (M T ) - a D..s. s koorinater i ram 2 fås om man multiplicerar koorinaterna för ram me (M T ) -. Eempel Antag att i har tå ramar (,,, ) och (u, u 2, u 3, Q ) och att ramarna är relaterae till aranra enligt följane: u 3 Q M T u u 2.6.8.8 -.6.5 u (3 + 4 )/5 u 2 (4-3 )/5 u 3 Q +.5 M (M T ) -.6.8.8 -.6.5.6.8.8 -.6 -.5
GrI åren 28, Förel. Eemplet b Tag nu punkten a ( ) T i en första ramen. Vilken är ess motsarighet i en anra ramen? b (M T ) - a ger oss.6.8.8 -.6 a.4.2 -.5 T rel -.5, -.5 rel Q u 3 Q.4.2 u u 2 Vi kan också se rambtet som en transformation. Eemplet: Antag att "ärlen" är ram och att i gör ett temporärt rambte till ram 2. Vi specificerar nu punkten p (.4.2 -.5 ) T i ram 2. I ram blir en p ärlen M T p ( ) T Me anra or är bte a ram och transformation ekialenta begrepp! Firam och transformationsram Ofta jobbar man me en "firam" (t.e. kameran/utsiktspunkten) och en "transformationsram". Firamen är fast och transformationsramen tillåts ariera. Eempel: - M T Våra koorinater α α 2 α 3 unkt i transf.- ramen α α 2 α 3 - Mots. punkt i firamen Firam Firam och transformationsram Specificera en moell i "sitt eget" koorinatsstem, objektkoorinater. "lacera ut" moellen i "ärlen" genom att efiniera en transformationsram. Multiplicera objektkoorinaterna me M T för att få moellens koorinater i firamen. Groa-moell i ess objektkoorinatsstem Firam Transformationsram Transformationsram 3D-transformationsmatriser(jfr 2D) Translation Skalning & # & # & # &!!!! T!! M T!!!!!! % " % " % " % & # & # & s!!!! s S!! s!! % " % " % # & #!!!!!!!! " % " t #& # t!!!! t!!!! "% " 3D-rotationsmatriser (tre( tre,, en i 2D) Rotation kring -aeln Rotation kring -aeln Rotation kring -aeln " % " % " cos( )sin( % " % R (() sin( cos( # & # & # & # & " % " % " % " % R (() cos( )sin( sin( cos( # & # & # & # & " % " % " cos( sin( % " % R (() )sin( cos( # & # & # & # &
GrI åren 28, Förel. Multipla transformationer (som 2D) Vi kan sätta samman transformationer genom att multiplicera matriserna: - s s - T S TS Multipla transformationer Obserera att orningen på multiplikationen kan spela roll! - s s - T S TS s - TS α α 2 α 3 α sα 2 α 3 - s S - T s -s ST Att specificera orientering (rotationer) Vi börjar me att pröa aw-pitch-roll (gir-stig-roll( gir-stig-roll). Antag att flgplanet är moellerat så et initialt "pekar" längs -aeln. Vi roterar först kring -aeln (roll), sean kring -aeln (aw), sist kring -aeln (pitch). Kallas för att arbeta me Euler angles eller Eulermatriser. Gimbal lock Om i roterar en a alarna så en sammanfaller me en a e anra kan i hamna i ett läge är i tappar information! Situationen kallas för Gimbal lock. Beror på att rotationerna allti görs i samma orning. Gimbal lock: eempel Rotation i 3D θ 2 θ 9 graer 2 2 3 BÅDE θ och θ beskrier "pitch"! θ 3 3 Man kan isa att ilken orientering (3D-rotation) som helst kan beskrias som en ( st) rotation kring en ektor. Rotationsmatriserna (kring -, - och -alarna) kan sättas ihop till en transformation utgåene från rotationsektorn och rotationsinkeln
GrI åren 28, Förel. Allmän 3D-rotation - Angel 4.9.4 Om rotationsenhetsektorn är a (a, a, a) och rotationsinkeln runt enna ektor är θ roterar man först kring -aeln till -planet () me inkeln θ arctan(a/a); a 2 +a 2, cos(θ )a/, sin(θ )a/, sean kring -aeln till -planet me inkeln θ -arcsin(a); cos(θ ), sin(θ )-a, sean kring -aeln me inkeln θ θ sean tillbaka kring -aeln me inkeln -θ sean tillbaka kring -aeln me inkeln -θ Alltså blir totala transformationsmatrisen: R (-θ ) R (-θ ) R (θ) R (θ ) R (θ ) Katernioner, Angel 4.2 En matematisk struktur som kan beskria 3D-rotation kring en gotcklig ektor är katernioner (quaternions), uppfunna 843 a irlänske matematikern W.R. Hamilton. Detta motsarar komplea talens (Euler mfl, 7-talet), i 2 -, anänning för att beskria 2D-rotationer i planet: + i r (cos µ + isin µ) Rotation inkeln θ genom multiplikation me p cos θ + isin θ p* r (cos(µ + θ) + i sin(µ + θ)) Katernioner (quaternions) En katernion q efinieras så här: q (q, q, q 2, q 3 ) (q, q) q q i + q 2 j + q 3 k, är (jfr komplea tal) i 2 j 2 k 2 - ijk, jki, kij ji-k, kj-i, ik-j Katernioner - algebra Lite katernionalgebra: tag tå katernioner a och b: a (q, q, q 2, q 3 ) (q, q) b (p, p, p 2, p 3 ) (p, p) Aition och multiplikation: a + b (p + q, p + q) ab (p q p q, q p + p q + p q) Norm och iners: a 2 q 2 + q q a - ( / a 2 )(q, -q) Katernioner - för 3D-rotation θ Tag en punkt i 3D. Skapa katernionen p (, ) i + j + k Välj rotationsaeln och normera en. Låt rotationsinkeln ara θ. Skapa nu katernionen r enligt r (cos(θ/2), sin(θ/2)) r 2 r - (cos(θ/2), -sin(θ/2)) Katernioner - för 3D-rotation Genom lite råräknane isar man att p rpr - ger samma resultat som sammansatta rotationsmatriserna för att rotera punkten θ raianer kring ektorn. Om a och b är katernioner som representerar rotation enl. oan gäller också (analogt me komplea talen för 2D-rotationer) att q ab är resultatet a att kombinera rotationerna (först a, sean b).
GrI åren 28, Förel. Katernioner rojektioner - historia Det går alltså att konertera en katernion till en rotationsmatris (och tärtom) Det kan löna sig att lagra orienteringar som katernioner: katernioner: 4 flttal istället för 33 9 (för en rotationsmatris) rotationsmatris) Katernioner gör et enkelt att interpolera mellan orienteringar (för animering)! rojektionsritningar: rojektionsritningar: Arkitekten Vitruius i Rom, år 4 fkr erspekti: erspekti: känt a greker, greker, formaliserat först (centralperspekti) uner renässansen, renässansen, a arkitekter och målare: målare: Giotto (276-336) rojektioner - historia Rafael (483-52) rojektioner - historia Brunelleschi (377-446): Duomo i Firene mm, Leonaro a Vinci (452-59): Nattaren mm, Dürer (47-528): Brook Talor, New rinciples of Linear erspectie, 79. rojektioner Ortografisk projektion rojektorerna är inkelräta mot projektionstan (på oänligt astån ). lanar Geometric rojections arallell erspectie Orthographic Multiiew Isometric Aonometric Dimetric Oblique Caalier -pt 2-pt 3-pt Cabinet Trimetric Alla projektionerna finns beskrina me illustratia figurer i Carlbom-acioreks artikel och i Angel 5.. I enklaste formen är et en eller flera er (multiiew) me projektionsplan parallella till objektets huutor. Astån och inklar bearas i projektionerna. Tpiskt eempel: maskinritningar Aonometrisk ortografisk: Fortfarane inkelräta projektorer men objektet riet så att man ser flera tor. projektionsplan smmetriskt till alla tre huutorna:isometrisk projektionsplan smmetriskt till tå a huutorna: imetrisk projektionsplan utan såan smmetri: trimetrisk arallellitet bearas, inte inklar & astån (samma förkortning)
GrI åren 28, Förel. erspektiprojektion rojektor på änligt astån. Storlek minskar me astån från projektionstan. Astån och inklar bearas inte i projektionen. arallella linjer konergerar i fjärrpunkt (anishing point) erspektiprojektion, Angel 5.4 Antag att i projicerar punkten på ett bilplan som ligger enheter från origo och är parallellt me --planet: Här enpunkts (ett projektionsplan), finns också tå- och tre-, se Carlbom-aciorek Bilplan p erspektiprojektion erspektiprojektion Likformiga trianglar: p p T p p Analogt för p. Så en projicerae punkten blir: p /(/) /(/) T p p p T ( / ) Vi ill kunna skria perspektiprojektionen som en matris M. För att kunna göra et måste i införa en normeringsoperation Om resultatet a en transformation blir en punkt w T me w skilt från ser i till att allti iiera me w innan i fortsätter,..s. /w /w /w T erspektiprojektionsmatris Ortografiskprojektionsmatris M p / / Här är p och p och p - så i får M O p - - Eftersom / iierar i alla komponenterna me / innan i anäner punkten så att i får /(/) /(/) Detta kallas perspektiiision i OpenGL. (i boken är satt till )
GrI åren 28, Förel. Att positionera kameran Kombinationer a transformationer Antingen tänker man att kameran flttas i förhållane ärlens ram, eller att ärlsramen flttas så att en hamnar framför kameran. Operationerna är inerser a aranra. I OpenGL är kameraramen fi så rent matematiskt gäller et senare alternatiet. Men et finns en funktion som hjälper en att fltta ärlen så att et motsarar att fltta kameran. 3D alltså på motsarane sätt som i 2D. Varje transformation motsarar ett bte a ram. Så successia transformationer är också successia bten a koorinatsstem! M M2 M M M 2 Inlämningsuppgift 3 Finns på webben senast freag morgon 29 mars. Iniiuell, skickas till @kth.se senast april. (Något utsträckt ti) Fikti etenta Finns på webben senast freag 4 april. Genomgås sista föreläsningen, 4 maj. Tenta 27 maj 8-3, Q-salar Nästa föreläsning Iniiuell inlämningsuppgift 3 till GrI-kursen t 28 Skicka enna blankett ifll senast april kl. 23.59 till @kth.se Ditt namn: ersonnummer: Uppgiften beöms på skalan -3 (bäst). Deluppgifterna ger poäng, maimalt 3. För 3 kräs 25 poäng, för 2 kräs 2 poäng, för kräs 5 poäng. 3D: transformationer, projektioner, kuror, tor (2p). Beisa att krssproukten a tå ektorer utom i ett urartat fall (ilket), är ortogonal (inkelrät) mot båa essa ektorer. Freag 29 mars kl.8.3-, sal D3 (ej( kl.-2!).