700 likes | 917 Views
Forelesningsnotater SIF8039/ Grafisk databehandling. Notater til forelesninger over: Kapittel 5: ”Viewing” i: Edward Angel: ”Interactive Computer Graphics” Vårsemesteret 2002 Torbjørn Hallgren Institutt for datateknikk og informasjonsvitenskap
E N D
Forelesningsnotater SIF8039/Grafisk databehandling Notater til forelesninger over: Kapittel 5: ”Viewing” i: Edward Angel: ”Interactive Computer Graphics” Vårsemesteret 2002 Torbjørn Hallgren Institutt for datateknikk og informasjonsvitenskap Norges teknisk-naturvitenskapelige universitet
Behandlet hittil • Generelt om grafiske system • Interaksjon i grafiske systemer • Modelleringstransformasjoner • Modellering med OpenGL (selvstudium)
Neste tema • Avbildning: • Projeksjonsmetoder • Posisjonering av (syntetisk kamera) kamera • Spesifikasjon av betraktningsvolum • Klipping • Avbildningstransformasjonene
Projeksjonsmetoder • Oppgave: • Avbilde 3D objekter på en 2D flate 3D 2D avbildningstransformasjon • Begrensning: • Planare projeksjoner • Hovedklasser av planare projeksjoner: • Parallellprojeksjoner • Perspektiviske projeksjoner
Parallellprojeksjoner Projeksjonsplan Objekt Bilde Punktene til objektet projiseres langs parallelle linjer Spesifiseres ved projeksjonsplan og projeksjonsretning
Parallellprojeksjoner • Ortografiske parallellprojeksjoner Projeksjonsretningen er ortogonal til projeksjonsplanet • Projeksjoner i plan som er vinkelrette på koordinataksene • Maskintegninger - målriktighet • Aksonometriske projeksjoner Projeksjonsplanet står skjevt i forhold til to eller tre akser • Dimetriske projeksjoner • Trimetriske projeksjoner • Isometriske projeksjoner (en spesiell trimetrisk projeksjon) • Rørtegninger • Skjeve parallellprojeksjoner
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 ”forkortet”) • Lengder finnes ved multiplikasjon med en fast faktor
Perspektiviske projeksjoner Projeksjonsplan Objekt Projeksjons- senter Bilde Punktene til objektet projiseres langs linjer som samles i et projeksjonssenter Spesifiseres ved projeksjonsplan og projeksjonssenter
Perspektiviske transformasjoner Egenskaper: • Parallelle linjer som er parallelle med projeksjons-planet, forblir parallelle • Parallelle linjer som ikke er parallelle med projek-sjonsplanet, samles i et forsvinningspunkt (som representerer uendelig langt borte) • Forsvinningspunktene gitt når projeksjonsplan og projeksjonssenter er gitt • Ingen grense for antall mulige forsvinningspunkter Brukes for å bidra til realistisk utseende bilder
Perspektivprojeksjoner Topunkts Enpunkts Trepunkts
En-punkts perspektivprojeksjon Ett forsvinningspunkt
Topunkts perspektivprojeksjon To forsvinningspunkt
Trepunkts perspektivprojeksjon Tre forsvinningspunkt
Perspektivisk transformasjon y (x,y,z) (xp,yp,zp) z d Projeksjonssenter (COP) Projeksjonsplanets skjæringspunkt med z-aksen x d er negativ
Perspektivisk projeksjon y (x,y,z) (xp,yp,zp) z d
Homogene koordinater Ser på: som et punkt i et fire- dimensjonalt rom med homogene koordinater x, y, z og w med w=1. Er en linje i det firedimensjonale rommet De kartesiske koordinatene ligger i planet w=1: Kartesiske koordinater:
Perspektivisk projeksjon Perspektivprojeksjonen slik vi har spesifisert den, representeres med matrisen: Vi får: som gir de kartesiske koordinatene:
Ortografisk transformasjon y (x,y,z) (xp,yp,zp) z Projeksjonsplanet er x-y-planet x
Ortografisk projeksjon Projeksjonen er: Matrisen for ortografisk projeksjon er som her:
Posisjonering av kameraet • Flytte kameraet i forhold til scenen? • Transformere fra verdenskoordinatsystemet til kamerakoordinatsystemet Eller: • Flytte scenen i forhold til kameraet? • Flytte scenen i kamerakoordinatsystemet SAMME TRANSFORMASJONSMATRISE I BEGGE TILFELLE
Posisjonering av kameraet PHIGS’s metode: • Bestemme projeksjonssenter • Bestemme synsretning (normalen til projeksjons-planet) • Bestemme ”viewup”-vektor Dette fastlegger kamerakoordinatsystemet entydig
Posisjonering av kameraet z v VUP u n VPN COP y 1 Center Of Projection 2 View Plane Normal 3 View Up Vector 4 u-axis x
Posisjonering av kameraet Posisjonen til origo i kameraets koordinatsystem: Projeksjonsplannormalen og ”viewup”-vektoren:
Koordinatakser i kamerasystemet Har n-aksen (svarende til z-aksen) i retning vektoren n: Søker v-aksen (svarende til y-aksen): n vup Projeksjonsplanet v Søker u-aksen (svarende til x-aksen):
Enhetsvektorer i akseretningene Enhetsvektorer for akseretningene i uvn-systemet (kamerakoordinatsystemet):
Koordinater i kamerasystemet Translasjon av kamerakoordinatsystemets origo til verdenskoordinatsystemets origo: Rotasjon slik at kamerakoordinatsystemets akser faller sammen med verdenskoordinatsystemets akser:
Koordinater i kamerasystemet Transformasjon av koordinatrepresentasjoner i verdens- koordinatsystemet til koordinatrepresentasjoner i kamera- koordinatsystemet:
PHIGS: evaluate_ViewOrientationMatrix viewRefPoint viewPlaneNormal viewUpVector OpenGL: gluLookAt øyepunkt referansepunkt (”siktepunkt”) i scenen ”viewup”-vektor Posisjonering av kameraet
Betraktningsvolum bakplan Skjev parallellprojeksjon y (xmin,ymin) (xmaks,ymaks) bilde frontplan betraktningsvolum (view volume) x z projeksjonsplan
Kanonisk betraktningsvolum Betraktningsvolum for skjev parallell- projeksjon transformeres til kanonisk betraktnings- volum Terningen begrenset av planene: y x z Enkelt å: - klippe - fjerne skjulte flater - projisere
Oppretting av skjevhet zbak zbak zfor zfor xmin xmaks ymin ymaks y x z z Vinklene og er gitt av projeksjonsretningen 1. Translere hjørnet (xmin, ymin, zfor) til origo 2. Opprette skjevheten med en skjærtransformasjon 3. Translere tilbake
Oppretting av skjevhet Skjærtransformasjon: Den komplette opprettingstransformasjonen blir:
Oppretting av skjevhet Ferdig multiplisert:
Kanonisk betraktningsvolum zbak zfor x z xmin xmaks 1. Translere midtpunktet i betraktningsvolumet til origo 2. Skalere til kanonisk betraktningsvolum
Kanonisk betraktningsvolum Translasjon: Skalering:
Kanonisk betraktningsvolum Konkatenert:
Avbildning på skjermen View- port Høyde (xnvhj,ynvhj) Bredde Skjerm
Avbildning på skjermen • Det kanoniske betraktningsvolumet projiseres ortografisk inn i frontplanet med transformasjonen: • Frontplanet avbildes i ”viewport” med transforma-sjonen Mviewport
Viewport-transformasjonen • Transformasjonen består av en skalering til viewportens størrelse og form etterfulgt av en transformasjon (translasjon) til skjermkoordinater:
Parallellprojeksjon - komplett Komplett avbildningstransformasjon for parallell- projeksjon:
Komplett transformasjonsbilde Komplett transformasjonsbilde ved parallellprojeksjon: glViewport glOrtho Ikke støttet i OpenGL gluLookAt Basistransformasjoner
Betraktningsvolum (xmaks,ymaks) Perspektivprojeksjon bakplan y (xmin,ymin) bilde frontplan betraktningsvolum (view volume) x z projeksjonsplan
Betraktningsvolum Synsvinkel i x-retningen gitt ved : aspektforhold y synsvinkel z betraktningsvolum Perspektivisk betraktningsvolum kan også spesifiseres ved hjelp av synsvinkel
Normalisering Et perspektivisk betraktningsvolum i form av et skjevt frustrum, omgjøres til et terningformet kanonisk betraktningsvolum med følgende operasjoner: • Oppretting av skjevheten (skjærtransformasjon) • Omforming til et normalisert frustrum (skalering) • Transformasjon fra frustrum til terning
Oppretting av skjevhet Betraktningsvolum zbak zfor xmaks xmin x z Retter opp med skjærtransformasjon
Oppretting av skjevhet Skjevheten rettes fullstendig opp med transformasjonen: OBS! Både z og zfor vil her være negative.