Forelesningsnotater SIF839/ Grafisk databehandling Notater til elesninger over: Kapittel 5: Viewing i: Edward Angel: Interactive Computer Graphics Vårsemesteret 22 Torbjørn Hallgren Institutt datateknikk og inmasjonsvitenskap Norges teknisk-naturvitenskapelige universitet
Behandlet hittil Generelt om grafiske sstem Interaksjon i grafiske sstemer odelleringstransmasjoner odellering med OpenGL (selvstudium) 2
Neste tema Avbildning: Projeksjonsmetoder Posisjonering av (sntetisk kamera) kamera Spesifikasjon av betraktningsvolum Klipping Avbildningstransmasjonene 3
Projeksjonsmetoder Oppgave: Avbilde 3D objekter på en 2D flate 3D 2D avbildningstransmasjon Begrensning: Planare projeksjoner Hovedklasser av planare projeksjoner: Parallellprojeksjoner Perspektiviske projeksjoner 4
Parallellprojeksjoner Objekt Bilde Projeksjonsplan Punktene til objektet projiseres langs parallelle linjer Spesifiseres ved projeksjonsplan og projeksjonsretning 5
Parallellprojeksjoner Ortografiske parallellprojeksjoner Projeksjonsretningen er ortogonal til projeksjonsplanet Projeksjoner i plan som er vinkelrette på koordinataksene askintegninger - målriktighet Aksonometriske projeksjoner Projeksjonsplanet står skjevt i hold til to eller tre akser Dimetriske projeksjoner Trimetriske projeksjoner Isometriske projeksjoner (en spesiell trimetrisk projeksjon) Rørtegninger Skjeve parallellprojeksjoner 6
Ortografiske projeksjoner 7
Aksonometriske projeksjoner 8
Isometriske projeksjoner En trimetrisk projeksjon der projeksjonsplanet skjærer alle tre akser i samme avstand fra origo Linjer parallelle med koordinataksene sees under samme vinkel (er likt kortet ) Lengder finnes ved multiplikasjon med en fast faktor 9
Skjeve parallellprojeksjoner
Perspektiviske projeksjoner Objekt Projeksjonsplan Bilde Projeksjonssenter Punktene til objektet projiseres langs linjer som samles i et projeksjonssenter Spesifiseres ved projeksjonsplan og projeksjonssenter
Perspektiviske transmasjoner Egenskaper: Parallelle linjer som er parallelle med projeksjonsplanet, blir parallelle Parallelle linjer som ikke er parallelle med projeksjonsplanet, samles i et svinningspunkt (som representerer uendelig langt borte) Forsvinningspunktene gitt når projeksjonsplan og projeksjonssenter er gitt Ingen grense antall mulige svinningspunkter Brukes å bidra til realistisk utseende bilder 2
Perspektivprojeksjoner Trepunkts Topunkts Enpunkts 3
En-punkts perspektivprojeksjon Ett svinningspunkt 4
Topunkts perspektivprojeksjon To svinningspunkt 5
Trepunkts perspektivprojeksjon Tre svinningspunkt 6
Perspektivisk transmasjon (,,) ( p, p, p ) d d er negativ Projeksjonssenter (COP) Projeksjonsplanets skjæringspunkt med -aksen 7
Perspektivisk projeksjon (,,) ( p, p, p ) d p d p / d Tilsvarend e : p / d Dessuten : p d 8
Homogene koordinater [ ] T Ser på: som et punkt i et firedimensjonalt rom med homogene koordinater,, og w med w. w t t t t Er en linje i det firedimensjonale rommet De kartesiske koordinatene ligger i planet w: Kartesiske koordinater: / w, / w, / w 9
2 Perspektivisk projeksjon Perspektivprojeksjonen slik vi har spesifisert den, representeres med matrisen: / d Vi får: som gir de kartesiske koordinatene: d / d d d p p p / /
Ortografisk transmasjon ( p, p, p ) (,,) Projeksjonsplanet er --planet 2
22 Ortografisk projeksjon Projeksjonen er: p p p atrisen ortografisk projeksjon er som her: p p p
Posisjonering av kameraet Fltte kameraet i hold til scenen? Transmere fra verdenskoordinatsstemet til kamerakoordinatsstemet Eller: Fltte scenen i hold til kameraet? Fltte scenen i kamerakoordinatsstemet SAE TRANSFORASJONSATRISE I BEGGE TILFELLE 23
Posisjonering av kameraet PHIGS s metode: Bestemme projeksjonssenter Bestemme snsretning (normalen til projeksjonsplanet) Bestemme viewup -vektor Dette fastlegger kamerakoordinatsstemet entdig 24
Posisjonering av kameraet v VUP u COP n VPN Center Of Projection 2 View Plane Normal 3 View Up Vector 4 u-ais 25
26 Posisjonering av kameraet Posisjonen til origo i kameraets koordinatsstem: COP COP COP p Projeksjonsplannormalen og viewup -vektoren: n n n n up up up up v v v v
Koordinatakser i kamerasstemet Har n-aksen (svarende til -aksen) i retning vektoren n: Søker v-aksen (svarende til -aksen): n v up n n n n v up v v up v up n nn n Projeksjonsplanet v Søker u-aksen (svarende til -aksen): u v n 27
Enhetsvektorer i akseretningene Enhetsvektorer akseretningene i uvn-sstemet (kamerakoordinatsstemet): u v n u u v v n n 28
29 Koordinater i kamerasstemet Translasjon av kamerakoordinatsstemets origo til verdenskoordinatsstemets origo: ),, ( COP COP COP T T Rotasjon slik at kamerakoordinatsstemets akser faller sammen med verdenskoordinatsstemets akser: n n n v v v u u u R
3 Koordinater i kamerasstemet Transmasjon av koordinatrepresentasjoner i verdenskoordinatsstemet til koordinatrepresentasjoner i kamerakoordinatsstemet: + + + + + + ) ( ) ( ) ( COP COP COP COP COP COP COP COP COP COP COP COP W C n n n n n n v v v v v v u u u u u u n n n v v v u u u T R
Posisjonering av kameraet PHIGS: evaluate_vieworientationatri OpenGL: glulookat viewrefpoint viewplanenormal viewupvector øepunkt referansepunkt ( siktepunkt ) i scenen viewup -vektor 3
Betraktningsvolum Skjev parallellprojeksjon bakplan bilde (, ) (, ) frontplan betraktningsvolum (view volume) projeksjonsplan 32
Kanonisk betraktningsvolum Betraktningsvolum skjev parallellprojeksjon transmeres til kanonisk betraktningsvolum Terningen begrenset av planene: ± ± ± Enkelt å: - klippe - fjerne skjulte flater - projisere 33
34 Skjærtransmasjonen + ) cot( θ θ ) cot( ) (, θ θ H
Oppretting av skjevhet bak θ bak φ Vinklene θ og φ er gitt av projeksjonsretningen. Translere hjørnet (,, ) til origo 2. Opprette skjevheten med en skjærtransmasjon 3. Translere tilbake 35
36 Oppretting av skjevhet Skjærtransmasjon: ) cot( ) cot( ), (, φ θ φ θ H Den komplette opprettingstransmasjonen blir: ),, ( ), ( ),, (, opprett T H T φ θ
37 Oppretting av skjevhet Ferdig multiplisert: ) cot( ) cot( ) cot( ) cot( φ φ θ θ opprett
Kanonisk betraktningsvolum bak. Translere midtpunktet i betraktningsvolumet til origo 2. Skalere til kanonisk betraktningsvolum 38
39 Kanonisk betraktningsvolum Translasjon: ) 2, 2, 2 ( bak T T + + + Skalering: ) 2, 2, 2 ( bak S S
4 Kanonisk betraktningsvolum Konkatenert: + + + 2 2 2 bak bak bak T S parkan
Avbildning på skjermen Høde Viewport ( nvhj, nvhj ) Bredde Skjerm 4
42 Avbildning på skjermen Det kanoniske betraktningsvolumet projiseres ortografisk inn i frontplanet med transmasjonen: Frontplanet avbildes i viewport med transmasjonen viewport ort
43 Viewport-transmasjonen Transmasjonen består av en skalering til viewportens størrelse og m etterfulgt av en transmasjon (translasjon) til skjermkoordinater: + + + + 2 2 2 2 2 2 2 2 høde høde bredde bredde høde bredde høde bredde nvhj nvhj nvhj nvhj viewport
Parallellprojeksjon - komplett Komplett avbildningstransmasjon parallellprojeksjon: parallell viewport ort parkan opprett C W modellering 44
Komplett transmasjonsbilde Komplett transmasjonsbilde ved parallellprojeksjon: glviewport glortho Ikke støttet i OpenGL total viewport ort parkan opprett ( ( nvhj, ( θ, φ,, nvhj, bredde, høde), ),,, bak ) glulookat P P v C W ( COP, ref, up ) Basistransmasjoner modellering 45
Betraktningsvolum Perspektivprojeksjon (, ) bakplan (, ) bilde frontplan projeksjonsplan betraktningsvolum (view volume) 46
Betraktningsvolum snsvinkel Snsvinkel i -retningen gitt ved : aspekthold betraktningsvolum Perspektivisk betraktningsvolum kan også spesifiseres ved hjelp av snsvinkel 47
Normalisering Et perspektivisk betraktningsvolum i m av et skjevt frustrum, omgjøres til et terningmet kanonisk betraktningsvolum med følgende operasjoner: Oppretting av skjevheten (skjærtransmasjon) Omg til et normalisert frustrum (skalering) Transmasjon fra frustrum til terning 48
Oppretting av skjevhet Betraktningsvolum bak θ cot( θ ) cot( φ) + 2 + 2 Retter opp med skjærtransmasjon 49
5 Oppretting av skjevhet Skjevheten rettes fullstendig opp med transmasjonen: + + 2 2, H OBS! Både og vil her være negative.
Oppretting av skjevhet (, ) (, ) (, ) (, ) Etter oppretting Før oppretting OBS: - - - - Utnttes i påfølgende skalering 5
Kanonisk betraktningsvolum Kanonisk betraktningsvolum perspektivprojeksjon: (-,-,-) bak (,,-) 52
Kanonisk betraktningsvolum Skalering til kanonisk betraktningsvolum perspektivisk projeksjon: 2 (,, ) (,,-) 2 (-,-,-) (,, ) 53
54 Kanonisk betraktningsvolum Skalering til kanonisk betraktningsvolum perspektivisk projeksjon: 2 2 ), 2, 2 ( S per kan
Kanonisk betraktningsvolum Kanonisk betraktningsvolum perspektivprojeksjon: bak - - - Kanoniserer med skaleringstransmasjon 55
Perspektiv parallell Søker transmasjon som ommer et kanonisk betraktningsvolum perspektivprojeksjon til et kanonisk betraktningsvolum parallellprojeksjon. Vi stiller følgende krav: Siden skal transmeres til - - - - - og -koordinatene skal ikke påvirke transmasjonen av -koordinaten 56
Kanonisk betraktningsvolum Konverterer kanonisk betraktningsvolum perspektivisk projeksjon til kanonisk betraktningsvolum parallellprojeksjon Terningen begrenset av planene: ± ± ± 57
Perspektiv parallell Følgende matrise tilfredsstiller disse kravene: per par α β Videre langer vi at: Planet skal transmeres til - bak - der: bak - bak / 58
Perspektiv parallell Dette gir: per par per par T T [ ] [ β α ] [ ] T T [ ] [ α + β ] [ ] bak bak bak T T som gir disse to likningenetil bestemmelse avα og β : β α α bak + β bak 59
6 Perspektiv parallell Vi får: bak bak bak bak 2 + β α + 2 bak bak bak bak par per
Normalisering - komplett Den fullstendige normaliseringen fra skjevt frustrum (avkortet pramide) til terningmet kanonisk betraktningsvolum blir som følger: frus par per par kan per H, 2 2 + ( + ( bak + ( bak ) ) ) bak 2bak 6
Perspektivprojeksjon - komplett Komplett avbildningstransmasjon perspektivisk projeksjon: perspektiv viewport ort frus par C W modellering Til sammenlikning: parallell viewport ort parkan opprett C W modellering 62
Normalisering - komplett Utledningen av frus->par slik det er gjort her, representerer den vanlige og mest bent fram måten å gjøre det på OpenGL anvender en litt annen variant av matrisen Det eksisterer en enkel bindelse mellom OpenGL s versjon og den som er presentert her Læreboka utleder (med diverse feil under veis og i sluttsvaret) OpenGL s versjon 63
En alternativ matrise Vi kan danne en n (og kanskje litt enklere) matrise ved multiplikasjon med faktoren - : frus par frus 2 par + + + Hvordan har det seg at denne matrisen er gjør samme ntten som den opprinnelige!!!??? 2 bak bak 2bak bak 64
En alternativ matrise Vi arbeider med homogene koordinater Vi kan skalere alle ledd i en homogen transmasjonsmatrise med samme faktor uten at dette påvirker de resulterende kartesiske koordinatene (,,) som kommer fram av de homogene koordinatene (,,,w): w w w Skalering av matrisens ledd resulterer i lik skalering av teller og nevner 65
OpenGL s matrise OpenGL projiserer ortografisk inn i planet - i stedet i planet slik utledningen her legger opp til Dette har først og fremst betdning når det skal avgjøres hvilke flater som er snlige i bildet, og hvilken farge flatene skal ha Vi får OpenGL s matrise ved å reflektere vår matrise frus->par i planet 66
67 OpenGL s matrise + + + 2 2 2 bak bak bak bak par frus OpenGL par frus
OpenGL s matrise OpenGL s matrise kan utledes direkte ved å gjøre et par av valgene underveis i prosessen litt annerledes: Unnlate skaleringen i -retningen ved transmasjonen til kanonisk betraktningsvolum perspektivisk projeksjon: kan per S( 2 Vrenge det perspektiviske betraktningsvolumet ved transmasjonen til terningm:, 2 Planet transmeres til i stedet - bak -,) 68
69 Komplett transmasjonsbilde Komplett transmasjonsbilde ved perspektivprojeksjon: modellering up ref COP W C par frus ort nvhj nvhj viewport total v P P høde bredde ),, ( ),,,,, ( ),,, ( bak glviewport glfrustrum glulookat Basistransmasjoner
Komplett transmasjonsbilde Komplett transmasjonsbilde ved parallellprojeksjon: glviewport glortho Ikke støttet i OpenGL total viewport ort parkan opprett ( ( nvhj, ( θ, φ,, nvhj, bredde, høde), ),,, bak ) glulookat P P v C W ( COP, ref, up ) Basistransmasjoner modellering 7