3D, transformationer och visualisering Föreläsning 6

Slides:



Advertisements
Liknande presentationer
Talföljder formler och summor
Advertisements

MaB: Andragradsfunktioner
Här ser ni några sidor som hjälper er att lösa uppgifterna:
Kap 1 - Algebra och linjära modeller
Innehåll, huvudpresentation 4. Rangordning av ordningsstörningar (fråga 1) 5. Problem med nedskräpning (fråga 1a) 6. Problem med skadegörelse (fråga 1b)
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning
1 Tillämpning av Koden Innehåll •Undersökningens metod och uppläggning, inkl. bolagsurval •Sammanfattning •Genomgång av svar på fokusfrågor.
Ruttplanering Vad är det??.
BENÄMNA lätta ord SPRÅKTRÄNING VID AFASIKg VIII
Numeriska beräkningar i Naturvetenskap och Teknik
Tillämpning av bolagsstyrningskoden vid årsstämmor 2005 och 2006.
Hela Sverige ska leva Totalrapport. Regeringens bidrag har medverkat till kunskapsförmedling?
Leif Håkansson’s Square Dancer Rotation
Projektföljeforskning
Eddie Arnold - Make The World Go Away Images colorées de par le monde Déroulement automatique ou manuel à votre choix 1 för dig.
LANDSTINGSDIREKTÖRENS STAB Regional utveckling BILD 1 Resultat av enkät till landstingspolitiker
UNIONEN - tillgänglighet under semestern 2014
Skånedatabasen & Region Skånes tillgänglighetsmodell
Karolinska Institutet, studentundersökning Studentundersökning på Karolinska Institutet HT 2013.
Kommunpussel Din uppgift är att sortera de organisatoriska delar på nästa sida på ett sådant sätt att det överensstämmer med hur din kommun är organiserad.
Punktprevalensmätning av trycksår 2011, v.40 Resultat från landstingen
V E R S I O N N R 2. 0 T A V E L I D É E R I M I L J Ö.
Bastugatan 2. Box S Stockholm. Blad 1 Läsarundersökning Maskinentreprenören 2007.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004 Datastrukturer och algoritmer Föreläsning 3.
Fastighetsbyrån Konjunkturundersökning Oktober 2012.
(Några begrepp från avsnitt 14.2)
INFÖR NATIONELLA PROVET
Pathfinding. –Vad är det? –Sökning från A till B.
Enkätresultat för Grundskolan Elever 2014 Skola:Hällby skola.
Från binära till hexadecimala
Finländarnas uppfattningar om äldrevården Kirsi Markkanen Utvecklingschef Tehy rf.
1 Vänsterskolan Debattartiklar. 2 Aktuell krok 3 Aktuella krokar 1. Direkt krok.
(2) Avvikelse från std. kostnad (5) Andel inv 65+ med insats (4) Andel 80+ i befolkningen (1) Kronor/ invånare (65+) (3) Kronor/ brukare (6) Ytterfall.
Vektorer (klassen Vector) Sortering
Digitalteknik 7.5 hp distans: 5.1 Generella sekvenskretsar 5.1.1
Hittarps IK Kartläggningspresentation år 3.
Från Gotland på kvällen (tågtider enligt 2007) 18:28 19:03 19:41 19:32 20:32 20:53 21:19 18:30 20:32 19:06 19:54 19:58 20:22 19:01 21:40 20:44 23:37 20:11.
Arbetspensionssystemet i bilder Bildserie med centrala uppgifter om arbetspensionssystemet och dess funktion
TÄNK PÅ ETT HELTAL MELLAN 1-50
Greppa Näringen Medlemsundersökning, kvartal 1. 1.
Helhet Händelse Agerande Kunskap om vardagsverksamheten Förståelse av vardagsverksamheten.
1 Joomla © 2009 Stefan Andersson 1. 2 MÅL 2 3 Begrepp Aktör: en användare som interagerar med webbplatsen. I diagrammet till höger finns två aktörer:
Kouzlo starých časů… Letadla Pár foteček pro vzpomínku na dávné doby, tak hezké snění… M.K. 1 I Norrköping får man inte.
Diskreta, deterministiska system Projekt 1.2; Vildkatt
Det finns i V en operation kallad addition, betecknad + sådan att
Resultat sammanhållen vård och omsorg om de mest sjuka äldre i Örebro län Västra länsdelen mätperiod 2014.
2 Agenda 1. Börja arbeta med Excel Hantera arbetsböcker 3. Formler 4. Formatera 5. Diagram 6. Skriva ut 7. Referenser mellan kalkylblad 8. Arbeta.
Arbetspensionssystemet i bilder Bildserie med centrala uppgifter om arbetspensionssystemet och dess funktion
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
SDDB hösten 2003 Preliminära resultat Svensk Njurmedicinsk Förening Riksstämman Stockholm KG Prütz Verksamhetsområde Internmedicin Helsingborgs.
En mycket vanlig frågeställning gäller om två storheter har ett samband eller inte, många gånger är det helt klart: y x För en mätserie som denna är det.
Fysikexperiment 5p Föreläsning Korrelationer Ett effektivt sätt att beskriva sambandet mellan två variabler (ett observationspar) är i.
Enkätresultat för Grundskolan Föräldrar 2014 Skola - Gillberga skola.
Regional handlingsplan ”Det goda livet för sjuka äldre” RESULTAT i VG+Skaraborg.
Google SketchUp Del 1.
INTRODUKTION Balken kan ha olika tvärsnitt
Smittspårarutbildning
Ingenjörsmetodik IT & ME 2008
Kartminne En serie bilder som ger övning av ”rutinen” Tänk på: –Vart är jag på väg? –Varifrån är kontrollen lättast att ta? –Vilken är sista säkra? –Förenkla.
Simulering Introduktion Exempel: Antag att någon kastar tärning
Projekt 5.3 Gilpins och Ayalas θ-logistiska modell A Course in Mathematical Modeling - Mooney & Swift.
Räkna till en miljard 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,14,15,16,17,18,19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, En miljard är ett.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 12 Sökning och Sökträd.
Förskoleenkät Föräldrar 2012 Förskoleenkät – Föräldrar Enhet:Hattmakarns förskola.
Bild 1 Prognos för länets arbetsmarknad Stefan Tjb.
Kom ihåg!! Vektoradditionside'n: “spets mot ända”.
Grundskola Elever 2013 Grundskoleenkät - Elever Enhet: Gillberga skola.
Diskret stokasticitet Projekt 2.3, Talltita
Förra föreläsningen: Historisk utveckling av elektromagnetismen Vektorer Koordinatsystem.
O p t i k e l l e r L j u s. Optik – Ljus Ljusstrålar har många märkliga egenskaper och det behövs därför många olika typer av modeller för att beskriva.
Presentationens avskrift:

3D, transformationer och visualisering Föreläsning 6 Innehåll 3D grunder och matematiska verktyg Lite om 3D-transformationer Introduktion till 3D-visualisering Algoritmer i objekt respektive bildrymden

Tredimensionella metoder Kamerametafor Man brukar använda en analogi med en kamera som placeras, riktas och flyttas i världen Visualisering Vi kan visualisera "realistiskt" med texturer/material, belysning, reflektion, skuggor, borttagning av skymda ytor osv eller mha tex ståltrådsmodeller Vi kan visa objekt i perspektiv- eller parallell projektion Vid kan använda ledtrådar om avstånd genom att variera färgtonen Vi kan visa spränskisser Stereobilder kan användas osv

Grundläggande typer av objekt I datorgrafik jobbar vi med dom grundläggande matematiska objekten (och datatyperna) punkt skalär vektor

Matematiska verktyg Skalärprodukt Kryssprodukt Planets ekvation Normal cosinus för vinkeln mellan två vektorer Kryssprodukt ger ortogonal vektor Planets ekvation Koplanära vektorer Normal ytans riktning

... Matriser Koordinatsystem vi använder matriser för att beskriva transformationer Koordinatsystem objekt definieras i förhållande till koordinatsystem

Omslutande volymer För att reducera arbetsmängden vid test av skärning Två objekt och deras projektion på xy-planet där normalisering och perspektivtransformation redan gjord I bilden överlappar ej rektanglarna så inga vidare tester för skymda ytor behöver göras y x z Konvexa höljet

forts om omslutande rektanglarna överlappar finns två möjligheter objekten skär varandra objekten skär inte varandra

Dom tredimensionella primitiverna I tre dimensioner har vi flera olika primitiva objekt som: kurvor och linjer ytor av olika slag olika typer av tredimensionella objekt sfär, rätblock, pyramid, etc

Exempel: konstruera roterande kub Några distinkta steg som måste utföras modellera sätt upp kamera och visualiseringsvolym klipp projicera ta bort skymda ytor rastrera

Definiera ytor och normaler Högerhandsregeln tummen i normalens riktning typedef point float[3]; point node[8] = { {-1.0,-1.0,-1.0},{1.0,-1.0,-1.0}, {1.0,1.0,-1.0},{-1.0,1.0,-1.0}, {-1.0,-1.0,1.0},{1.0,-1.0,1.0}, {1.0,1.0,1.0},{-1.0,1.0,1.0}}; glBegin(GL_POLYGON); glVertex3fv(node[0]); glVertex3fv(node[3]); glVertex3fv(node[2]); glVertex3fv(node[1]); glEnd();

Beskrivning av polyeder Objektet beskrivet som en följd av ytor där var och en av ytorna beskrivna som ordnade listor med vertex. Högerhandsregeln ger normalen.

Färg given för vissa vertex Färgen på ytor mellan hörnen beräknas genom bilinjär interpolation GLfloat colors[][3] = { {0.0,0.0,0.0},{1.0,0.0,0.0}, {1.0,1.0,0.0}, {0.0,1.0,0.0}, {0.0,0.0,1.0}, {1.0,0.0,1.0}, {1.0,1.0,1.0}, {0.0,1.0,1.0}}; glBegin(GL_POLYGON); glColor3fv(colors[0]); glVertex3fv(node[0]); glColor3fv(colors[3]); glVertex3fv(node[3]); /* och så vidare ... glEnd();

Ibland effektivt ”beräkna” färg vid utritningen Vid varje sveplinje interpoleras aktuell färg fram från färgen på hörnen och kanterna

I tre dimensioner använder vi precis som i 2D homogena koordinater Därmed kan vi behandla transformationer på ett uniformt sätt Matrisen och representationen av punkterna i 3D blir i stil med

Som i 2D, fast en dimension till Translation Som i 2D, fast en dimension till

Rotation kring z-axeln kring x-axeln kring y-axeln

Rotation kring fixpunkt 1. Flytta fixpunkt till origo 2. Rotera 3. Flytta tillbaks fixpunkt

...

Generell rotation kring rotationsaxel 1. Translatera objektet så att rotations- axeln passerar genom origo 2. Rotera objektet så att rotationsaxeln sammanfaller med önskad koordinataxel 3. Rotera specificerad vinkel runt axeln 4. Invertera rotationen från steg 2 5. Invertera translationen från steg 1

...

Skalning med avseende på fixpunkt På ungefär samma sätt som i 2D 1. Translatera fixpunkten till origo 2. Skala objektet 3. Invertera translationen från 1

Visualiseringspipeline Modell koordinater Vytransformation Modelltrans- formation Världs-koordinater Vykoordinater Projektions- koordinater Projektions- transformtion Transfomation till arbetstation Enhets-koordinater

Specificera utritningsplanet Vi börjar med att ansätta ett koordinatsystem genom att: ange referenskoordinatsystem relativt världskoordinatsystemet definiera projektionsplan välja positiv riktning för projektionsplanet, genom att ange en normalvektor vi ger en vektor som anger vad som är uppåt

Exempel: Vi positionerar kameran i OpenGL I OpenGL kan vi ange var ögat finns, vart vi tittar och vad som är uppåt

Transformation från världs- till vykoordinater Görs på liknande sätt som vid transformationer av enskilda objekt dvs använd en transformationsmatris för att transformera det ena korrdinatsystemet till det andra

Perspektivprojektion Projektioner Perspektivprojektion projektionscentrum

... Parallellprojektion

Parallella projektioner projektionsplan

Perspektivprojektioner projektionscentrum

”Klassiska” visualiserinssätt

Ortografisk projektion Projektorerna vinkelräta mot projektionsplanet

... Ett tempel och tre ortografiska projektioner av det

Axonometrisk projektion Projektorerna (fortfarande) ortogonala mot projektionsplanet, men projektionsplanet kan ha godtycklig orientering i förhållande till objektet

Symmetriska projektioner Om vinkel projektionsplanets normal bildar med koordinataxlarna uppfyller vissa villkor har projektionen eget namn Dimetrisk symmetrisk med avseende på två axlar Isometrisk symmetrisk med avseende på alla tre axlarna Trimetrisk generella fallet

Oblique projektion Projektorerna parallella men ej ortogonala mot projektionsplanet Specialfall Cabinet (med djupet = halva bredden)

Perspektiv tvåpunkts trepunkts enpunkts

Ortogonal projektion z-komponenten sätts till noll

Utritningsvolymer och generella projektionstransformationer I OpenGL anger vi visualiseringsvolym Objekt utanför denna volym klipps bort Man talar om att kameran har en vinkel för visualiseringsplanet (angle of view)

Vi anger klipplan Den resulterande trunkerade pyramiden brukar kallas för frustum

Alternativa sätt att ange volymen Vi kan istället ange vyvolumen genom att ange en vinkel och ett förhållande mellan bredd och höjd

Perspektivtransformation Punkter på samma projektionslinje Två punkter på samma projektionslinje i perspektivprojektion om: i parallellprojektion om: Om vi normaliserar vyvolymen och (perspektiv-) transformerar projektionspunkten till oändligheten så blir problemet med att avgöra om en punkt skymmer en annan detsamma som vid parallellprojektion dvs enklare beräkningar p3 projektions- centrum p1 p2

Normaliserade koordinater Många algoritmer förenklas om tester utförs först efter transformation till normaliserade enhetskoordinater (kanonisk form)

Borttagning av skymda ytor Problem Avgöra vad i scenen som syns från en given punkt Alternativ formulering Avgöra vilka delar av scenen som INTE syns

Typer av algoritmer Algoritmerna är av två olika huvudtyper som beror av om dom baseras direkt på objektens definition eller deras projektioner. Nämligen om avgörandet sker i: Objektrummet Jämför objekt och delar av dem för att avgöra vad som syns Bildrymden Vad som syns avgörs pixel för pixel på projektionsplanet

Algoritmer i objektrummet Också kända som objektprecisionsalgoritmer Algoritm (principskiss) for (varje objekt i världen){ hitta delar av objektet som inte är skymda av andra delar eller andra objekt; rita dessa delar} Komplexitet jämföra varje (n) objekt med varje annat n ** 2

Sammanfattning: principer för att rita objekt ”objektorienterade” också kända som ”sortera först” För varje objekt rita objektet ”avbildningsorienterade” också kända som ”sortera sist” för varje pixel tildela en färg

Olika fall Ett objekt skymmer helt ett annat Objekten skymmer inte varandra Det ena objektet skymmer delvis det andra eller vice versa Det sista fallet är mest komplicerat

Borttagning av ytor med normalen riktad bort från betraktaren Om projektionscentrum i (x’, y’, z’) är varje plan som uppfyller Ax’ + By’ + Cz’ + D < 0 bortriktat Normalen för ett bortriktat plan bildar en icke negativ skalärprodukt med vektorn från projektionscentrum till någon punkt på planet B A C D E H F G

...forts Om projektionsriktningen är längs z-axeln kan vi göra ett enklare test genom att enbart betrakta planets normalvektorer (A, B, C) Om C < 0 så är normalen riktad bort från betraktaren och därmed är planet en “baksida” Om världen endast består av en enda konvex polyeder så är testet tillräckligt annars kan “framsidor” som C och E i figuren ändå vara skymda och vi måste testa vidare i medeltal elimineras i alla fall hälften av ytorna

Algoritmer i bildrymden Också kända som bildprecisionsalgoritmer Algoritm (principskiss) for (varje pixel i bilden){ hitta det objekt som är närmast betraktaren på en projektionslinje genom pixeln; rita pixeln} Komplexitet (brutal metod) kräver att vi för varje pixel undersöker alla n objekt för att avgöra vilket som är närmast, dvs för p pixlar krävs np jämförelser

Vilken typ av algoritm är bäst? Man kan tro att objektalgoritmer är bättre än bildalgoritmer då n < p. Men i objektalgoritmer är ofta varje steg betydligt mer komplext och tidskrävande än i bildalgoritmer. Ofta är objektalgoritmer också svårare att implementera. Objektalgoritmer är bättre då vi tex vill ändra upplösning Bildalgoritmer är förutom att dom oftast enklare att implementera också snabbare. Det finns också algoritmer som kombinerar de två strategierna.

Z-buffer-algoritmen Synonym: djupbuffertalgoritmen Idé testa en punkt (x, y) i taget ytan med största z-koordinat är synlig y x (x, y) z

...z-buffer forts Algoritm /* Initiera */ sätt alla pixlar till bakgrundsfärgen, dvs WritePixel(x, y, bakgrundsfärg); WriteZ(x, y, 0) för varje punkt; /* gå igenom alla polygoner */ for (varje polygon){ for (varje pixel i polygonens projektion){ pz = polygonens z-värde i (x, y); if (pz >= ReadZ(x, y)){ WriteZ(x, y, pz); WritePixel(x,y, färg(poly, x, y)) }

... Vi kan lösa z ur Vi kan utnyttja djupkoherens, dvs utnyttja att en polygon är planär Vi kan konstruera en inkrementell algoritm som därmed är beräkningsmässigt mer effektiv Om polygonen inte är planär kan z-värdet interpoleras fram från olika kantpar

... z-värdet för en position (x, y) fås ur nästa z-värde (med sveplinje i x-led) kan sen beräknas ur nästa värde i y-led kan fås på samma sätt, dvs

...z-buffer forts Fördelar Problem enkel att implementera snabbheten oberoende av antal polygoner (antal pixlar som täcks av viss polygon minskar då antalet polygoner ökar) kan enkelt hantera “layers” (som inte lagras i z-bufferten) kan sparas Problem minneskrävande kan klaras av genom att ett “band” i taget av bilden beaktas objekt långt bort kan avrundas (transformeras) till samma z-värde även om dom inte hade gjort det om dom var närmare vypunkten aliasing, avrundningar kan ge upphov till att delade kanter kan få olika z-värden. Kan lösas genom att nya vertex införs.