Transforationer, er, projektioner, skda tor Visualisering Innehåll Mateatiska grunder (kort) Transforationer Projektioner Borttagning a skda tor preious net preious net 2 Trediensionella etoder Vi kan isualisera "realistiskt" ed teturer/aterial, belsning, reflektion, skuggor, borttagning a skda tor os trådodell Vi kan isa objekt i perspektieller parallell projektion Trediensionella etoder Kaeraetafor Man brukar anända en analogi ed en kaera so placeras, riktas och flttas i ärlden Vi kan isa sprängskisser Material/tetur Varierad färgton kan ge ledtråd o astånd Stereobilder kan också anändas os preious net 3 preious net 4 Grundläggande tper a objekt I datorgrafik jobbar i ed do grundläggande ateatiska objekten (och datatperna) punkt skalär ektor Mateatiska erktg Skalärprodukt cosinus för inkeln ellan tå ektorer Krssprodukt ger ektor ortogonal ot do ingående ektorerna Planets ekation A +B +C+D Koplanära ektorer Noral Tre ektorer a, b och c är koplanära o a (b c) tans riktning preious net 5 preious net 6
Matriser i anänder atriser för att beskria transforationer Koordinatsste objekt definieras i förhållande till koordinatsste Vektorer Fsikalisk definition: en ektor är en kantitiet ed tå attribut Riktning Storlek Eepel Kraft Hastighet Riktade linjesegent Viktigast för datorgrafik preious net 7 preious net 8 Vektoroperationer En ektor har iners Saa storlek en pekar i otsatt riktning En ektor kan ultipliceras ed en skalär Finns nollektor Storlek noll, odefinierad riktning Suan a tå ektorer är en ektor Vektorer saknar position Identiska ektorer Saa längd och riktning - α u w Vektorru otillräckliga för geoetri Vi behöer punkter också preious net 9 preious net Punkter Plats i rden Operationer på punkter och ektorer tillåtna Punkt-punkt-subtraktion ger ektor Ekialent ed en punkt-ektor-addition Linjer Betrakta alla punkter på foren P(α)P + α d Mängden a alla punkter so passerar geno P i ektorn d:s riktning P-Q P+Q preious net preious net 2
Paraetrisk for Foren på föregående sida kallas paraetrisk for Mer robust och generell än andra forer Utidgbar till kuror och tor Kone Ett objekt är konet o alla punkter på linjesegentet ellan alla par a punkter i objektet också befinner sig innuti objektet Tådiensionella forer Eplicit: +h Iplicit: a + b +c Paraetrisk: Q P P Q (α) α + (-α) (α) α + (-α) Konet Ej konet preious net 3 preious net 4 Oslutande oler Bla för att reducera arbetsängden id test a skärning Tå objekt och deras projektion på -planet forts o oslutande rektanglarna öerlappar finns tå öjligheter objekten skär arandra objekten skär inte arandra Konea höljet I bilden öerlappar ej rektanglarna så inga idare tester för skda tor behöer göras så finkornigare test åste göras preious net 5 preious net 6 Plan Ett plan kan bestäas a en punkt och tå ektorer eller ia tre punkter Noraler Varje plan har en ektor n noral (inkelrät) ot det Från en punkt och tå ektorer kan i bilda P(α,β)R+αu+β Vi kan anända krssprodukten n u och den ekialenta foren (P(α)-P) n P(α,β)R+αu+β P(α,β)R+α(Q-R)+β(P-Q) P u preious net 7 preious net 8
Koordinatsste Vilket är korrekt? Raar (eng Fraes) Koordinatsste otillräckliga för att representera punkter Vi kan lägga till en punkt, origio, till basektorerna och bilda en ra 2 P Båda efterso ektorer inte har någon position 3 preious net 9 preious net 2 Raen gien a (P,, 2, 3 ) Dock sns inte skillnaden ellan Punkter och Vektorer Punkt Ino raen kan arje ektor skrias so P P + β + β 2 2 +.+β n n Vektor α + α 2 2 +.+α n n Och arje punkt so P P + β + β 2 2 +.+β n n α + α 2 2 +.+α n n Får likadana representationer p[β β 2 β 3 ] [α α 2 α 3 ] Vilket gör att an kan blanda ihop de En ektor har ju ingen position p Kan placeras arsohelst fierad preious net 2 preious net 22 Presentation där i kan skilja på de Definiera P och P P, ilket gör att i kan skria Vektor α + α 2 2 +α 3 3 [α α 2 α 3 ][ 2 3 P ] T Punkt P P + β + β 2 2 +β 3 3 [β β 2 β 3 ][ 2 3 P ] T Vi har konstrueat en 4-diensionell sätt att skria ektorer och punkter i hoogena koordinater [α α 2 α 3 ] T p [β β 2 β 3 ] T Hoogena koordinater Generell for för 4-diensionella hoogena koordinater p[ w] T Vi får en 3-diensionell punkt (för w ) geno /w /w /w O w är det en ektor Alltså hoogena koordinater ersätter punkter i tre diensioner ed linjer geno origo i fra diensioner Mer o hoogena koordinater o en liten stund preious net 23 preious net 24
Transforationer En transforation abildar en punkt eller ektor till en annan punkt eller ektor Grundläggande transforationer Translation P P + d T(u) Rotation P R * P QT(P) Skalning P S * P preious net 25 preious net 26 Translation P P + d Rotation kring origo P P P R P preious net 27 preious net 28 rotation på atrisfor cos sin sin + cos r cos (φ + ) r sin (φ + ) cos sin r cos φ r sin φ sin cos preious net 29 ρe i ρ(cos + i sin ) ρ cosφ, ρ cos( φ + ) ρ sinφ, ρ sin( φ + ) i e ( φ+ ) ρ ρ Kan enkelt härledas ed hjälp a Eulers forel: iφ i e e ρ(cos( φ + ) + i sin( φ + )) ρ(cosφ cos sinφ sin + i(cosφ sin + sinφ cos )) cos sin sin + cos preious net 3
Skalning Reflektion s - s original s - s - s s - preious net 3 preious net 32 Transforationer i i hoogena koordinater För att behandla transforationer på ett unifort sätt, ds translation, skalning, rotation, anänder i hoogena koordinater En (2D-) punkt representeras a en trippel P (, h) h h, Vilket h so helst kan äljas, fast i grafik-saanhang brukar an älja h Rotation i 2D ed hoogena koordinater cos sin sin cos Alla transforationer kan representeras a atrisultiplikationer preious net 33 preious net 34 Translation i hoogena koordinater α α Fler grundläggande operationer Skjuning (Skening) preious net 35 preious net 36
preious net 37 Saanslagning a transforationer O hoogena koordinater anänds kan alla transforationer utföras so atrisultiplikationer Detta gör att i kan slå saan flera transforationer till en n atris innan i applicerar denna tranforationsatris på alla punkter i objektet (/objekten) detta kan ge stora prestandainster speciellt o i skall utföra saa transforationer på tusentals punkter Kostnaden att bilda MABCD är liten i förhållande till att beräkna Mp Idag finns det dessuto chips so kan utföra 4*4- atrisoperationer, ds an kan göra detta direkt i hårdaran preious net 38 Rotation kring fi punkt ) ( ) ( ) ( f f p T R p T M p f Metod:. fltta rotationspunkten till origo 2. rotera 3. fltta tillbaks rotationspunkten Alternatit sätt att tänka:. Bt koordinatsste till ett ed origo i rotationspunkten 2. Rotera 3. Bt tillbaks till gala koordinatssteet Mer naturligt då i senare kodar i OpenGL preious net 39 Do trediensionella priitierna I tre diensioner har i flera olika priitia objekt so: kuror och linjer tor a olika slag olika tper a trediensionella objekt sfär, rätblock, praid, etc preious net 4 I tre diensioner anänder i precis so i 2D hoogena koordinater Däred kan i behandla transforationer på ett unifort sätt Matrisen och representationen a punkterna i 3D blir i stil ed 33 32 3 23 22 2 3 2 t t t transforation.ee preious net 4 Translation t t t So i 2D, fast en diension till So i 2D, fast en diension till preious net 42 Rotation cos sin sin cos kring -aeln kring -aeln cos sin sin cos kring -aeln kring -aeln cos sin sin cos kring -aeln kring -aeln
Rotation kring fipunkt Skalning ed aseende på fipunkt På saa sätt so i 2D. Translatera fipunkten till origo 2. Skala objektet 3. Inertera translationen från. Fltta fipunkt till origo 2. Rotera 3. Fltta tillbaks fipunkt M T ( p f ) R ( ) T ( p f ) Alternatit (so i tidigare sett i 2D):. Bt koordinatsste till ett ed origo i rotationspunkten 2. Rotera 3. Bt tillbaks till gala koordinatssteet preious net 43 Alternatit (so i tidigare sett):. Bt koordinatsste till ett ed origo i fipunkten 2. Skala 3. Bt tillbaks till gala koordinatssteet preious net 44 Projektioner Perspektiprojektion Parallellprojektion Direction of projection projektionscentru preious net 45 preious net 46 Parallella projektioner Perspektiprojektioner projektionsplan projektionscentru preious net 47 preious net 48
Klassiska isualiseringssätt Ortografisk projektion Projektorerna inkelräta ot projektionsplanet preious net 49 preious net 5 Ett tepel och tre ortografiska projektioner a det Aonoetrisk projektion Projektorerna (fortfarande) ortogonala ot projektionsplanet, en projektionsplanet kan ha godtcklig orientering i förhållande till objektet preious net 5 preious net 52 Setriska projektioner O den inkel projektionsplanets noral bildar ed koordinatalarna uppfller issa illkor har projektionen eget nan Dietrisk setrisk ed ed aseende på på tå tå alar alar Trietrisk generella fallet fallet Isoetrisk setrisk ed ed aseende på på alla alla tre tre alarna Oblique projektion Projektorerna parallella en ej ortogonala ot projektionsplanet Specialfall Cabinet (ed djupet hala bredden) preious net 53 preious net 54
Perspekti Utritningsoler och generella projektionstransforationer trepunkts tåpunkts enpunkts I OpenGL anger i isualiseringsol Objekt utanför denna ol klipps bort Man talar o att kaeran har en inkel för isualiseringsplanet (angle of iew) preious net 55 preious net 56 i anger klipplan Den resulterande trunkerade praiden brukar kallas för frustu Alternatia sätt att ange olen Vi kan istället ange oluen geno att ange en inkel och ett förhållande ellan bredd och höjd projection.ee preious net 57 preious net 58 Borttagning a skda tor Proble Agöra ad i scenen so sns från en gien punkt Tper a algoriter Algoriterna är a tå olika huudtper so beror a o do baseras direkt på objektens definition eller deras projektioner. Alternati forulering Agöra ilka delar a scenen so inte sns (, ) Näligen o agörandet sker i: Objektruet Jäför objekt och delar a de för att agöra ad so sns Bildrden Vad so sns agörs piel för piel på projektionsplanet preious net 59 preious net 6
Algoriter i objektruet Också kända so objektprecisionsalgoriter Algorit (principskiss) for (arje objekt i ärlden){ hitta delar a objektet so inte är skda a andra delar eller andra objekt; rita dessa delar} Kopleitet jäföra arje (n) objekt ed arje annat Ds i storleksorningen n 2 jäförelser preious net 6 Algoriter i bildrden Också kända so bildprecisionsalgoriter Algorit (principskiss) for (arje piel i bilden){ hitta det objekt so är närast betraktaren på en projektionslinje geno pieln; rita pieln} Kopleitet (brutal etod) kräer att i för arje piel undersöker alla n objekt för att agöra ilket so är närast, ds för p pilar kräs np jäförelser preious net 62 Vilken tp a algorit är bäst? Man kan tro att objektalgoriter är bättre än bildalgoriter då n < p. Men i objektalgoriter är ofta arje steg betdligt er koplet och tidskräande än i bildalgoriter. Ofta är objektalgoriter också sårare att ipleentera. Objektalgoriter är bättre då i te ill ändra upplösning Bildalgoriter är föruto att do oftast enklare att ipleentera också snabbare. Det finns också algoriter so kobinerar de tå strategierna. Saanfattning: principer för att rita objekt objektorienterade också kända so sortera först För arje objekt rita objektet abildningsorienterade också kända so sortera sist för arje piel tildela en färg preious net 63 preious net 64 Olika fall Ett objekt sker helt ett annat Objekten sker inte arandra Det ena objektet sker delis det andra eller ice ersa Det sista fallet är est koplicerat Borttagning a tor ed noralen riktad bort från betraktaren O projektionscentru i (,, ) är arje plan so uppfller B A + B + C + D < bortriktat Noralen för ett bortriktat plan bildar en icke negati skalärprodukt ed ektorn från projektionscentru till någon punkt på planet A H G C D E F preious net 65 preious net 66
forts O projektionsriktningen är längs -aeln kan i göra ett enklare test geno att enbart betrakta planets noralektorer (A, B, C) O C < så är noralen riktad bort från betraktaren och däred är planet en baksida Snon: djupbuffertalgoriten Idé testa en punkt (, ) i taget tan ed största -koordinat är snlig Z-buffer-algoriten, en bildprecisionsalgorit O ärlden endast består a en enda kone poleder så är testet tillräckligt annars kan frasidor so C och E i figuren ändå ara skda och i åste testa idare i edeltal eliineras i alla fall hälften a torna (, ) preious net 67 preious net 68 -buffer forts Algorit /* Initiera */ sätt alla pilar till bakgrundsfärgen, ds WritePiel(,, bakgrundsfärg); WriteZ(,, ) för arje punkt; /* gå igeno alla polgoner */ for (arje polgon){ for (arje piel i polgonens projektion){ p polgonens -ärde i (, ); if (p > ReadZ(, )){ WriteZ(,, p); WritePiel(,, färg(pol,, )) } } } Vi kan lösa ur A+ B+ C+ D Vi kan utnttja djupkoherens, ds utnttja att en polgon är planär Vi kan konstruera en inkreentell algorit so däred är beräkningsässigt er effekti O polgonen inte är planär kan -ärdet interpoleras fra från olika kantpar preious net 69 preious net 7 -ärdet för en position (, ) fås ur nästa -ärde (ed seplinje i -led) kan sen beräknas ur nästa ärde i -led kan fås på saa sätt, ds D A B C D A B A D A B ( + ) C C eller A C D A B( ) C eller -buffer forts Fördelar enkel att ipleentera snabbheten oberoende a antal polgoner (antal pilar so täcks a iss polgon inskar då antalet polgoner ökar) kan enkelt hantera laers (so inte lagras i -bufferten) kan sparas Proble inneskräande kan klaras a geno att ett band i taget a bilden beaktas objekt långt bort kan arundas (transforeras) till saa -ärde äen o do inte hade gjort det o do ar närare punkten aliasing, arundningar kan ge uppho till att delade kanter kan få olika -ärden. Kan lösas geno att na erte införs. + B C preious net 7 preious net 72