Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

Forelesningsnotater SIF8039/ Grafisk databehandling

Liknende presentasjoner


Presentasjon om: "Forelesningsnotater SIF8039/ Grafisk databehandling"— Utskrift av presentasjonen:

1 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

2 Behandlet hittil Generelt om grafiske system
Interaksjon i grafiske systemer Modelleringstransformasjoner Modellering med OpenGL (selvstudium)

3 Neste tema Avbildning: Projeksjonsmetoder
Posisjonering av (syntetisk kamera) kamera Spesifikasjon av betraktningsvolum Klipping Avbildningstransformasjonene

4 Projeksjonsmetoder Oppgave: Begrensning:
Avbilde 3D objekter på en 2D flate 3D D avbildningstransformasjon Begrensning: Planare projeksjoner Hovedklasser av planare projeksjoner: Parallellprojeksjoner Perspektiviske projeksjoner

5 Parallellprojeksjoner
Projeksjonsplan Objekt Bilde Punktene til objektet projiseres langs parallelle linjer Spesifiseres ved projeksjonsplan og projeksjonsretning

6 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

7 Ortografiske projeksjoner

8 Aksonometriske projeksjoner

9 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

10 Skjeve parallellprojeksjoner

11 Perspektiviske projeksjoner
Projeksjonsplan Objekt Projeksjons- senter Bilde Punktene til objektet projiseres langs linjer som samles i et projeksjonssenter Spesifiseres ved projeksjonsplan og projeksjonssenter

12 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

13 Perspektivprojeksjoner
Trepunkts Topunkts Enpunkts

14 En-punkts perspektivprojeksjon
Ett forsvinningspunkt

15 Topunkts perspektivprojeksjon
To forsvinningspunkt

16 Trepunkts perspektivprojeksjon
Tre forsvinningspunkt

17 Perspektivisk transformasjon
y (x,y,z) (xp,yp,zp) z d Projeksjonssenter (COP) Projeksjonsplanets skjæringspunkt med z-aksen x d er negativ

18 Perspektivisk projeksjon
y (x,y,z) (xp,yp,zp) z d

19 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:

20 Perspektivisk projeksjon
Perspektivprojeksjonen slik vi har spesifisert den, representeres med matrisen: Vi får: som gir de kartesiske koordinatene:

21 Ortografisk transformasjon
y (x,y,z) (xp,yp,zp) z Projeksjonsplanet er x-y-planet x

22 Ortografisk projeksjon
Projeksjonen er: Matrisen for ortografisk projeksjon er som her:

23 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

24 Posisjonering av kameraet
PHIGS’s metode: Bestemme projeksjonssenter Bestemme synsretning (normalen til projeksjons-planet) Bestemme ”viewup”-vektor Dette fastlegger kamerakoordinatsystemet entydig

25 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

26 Posisjonering av kameraet
Posisjonen til origo i kameraets koordinatsystem: Projeksjonsplannormalen og ”viewup”-vektoren:

27 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):

28 Enhetsvektorer i akseretningene
Enhetsvektorer for akseretningene i uvn-systemet (kamerakoordinatsystemet):

29 Koordinater i kamerasystemet
Translasjon av kamerakoordinatsystemets origo til verdenskoordinatsystemets origo: Rotasjon slik at kamerakoordinatsystemets akser faller sammen med verdenskoordinatsystemets akser:

30 Koordinater i kamerasystemet
Transformasjon av koordinatrepresentasjoner i verdens- koordinatsystemet til koordinatrepresentasjoner i kamera- koordinatsystemet:

31 Posisjonering av kameraet
PHIGS: evaluate_ViewOrientationMatrix viewRefPoint viewPlaneNormal viewUpVector OpenGL: gluLookAt øyepunkt referansepunkt (”siktepunkt”) i scenen ”viewup”-vektor

32 Betraktningsvolum bakplan Skjev parallellprojeksjon y (xmin,ymin)
(xmaks,ymaks) bilde frontplan betraktningsvolum (view volume) x z projeksjonsplan

33 Kanonisk betraktningsvolum
for skjev parallell- projeksjon transformeres til kanonisk betraktnings- volum Terningen begrenset av planene: y x z Enkelt å: - klippe - fjerne skjulte flater - projisere

34 Skjærtransformasjonen
y x

35 Oppretting av skjevhet
zbak zbak zfor zfor xmin xmaks ymin ymaks x y 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

36 Oppretting av skjevhet
Skjærtransformasjon: Den komplette opprettingstransformasjonen blir:

37 Oppretting av skjevhet
Ferdig multiplisert:

38 Kanonisk betraktningsvolum
zbak zfor x z xmin xmaks 1. Translere midtpunktet i betraktningsvolumet til origo 2. Skalere til kanonisk betraktningsvolum

39 Kanonisk betraktningsvolum
Translasjon: Skalering:

40 Kanonisk betraktningsvolum
Konkatenert:

41 Avbildning på skjermen
View- port Høyde (xnvhj,ynvhj) Bredde Skjerm

42 Avbildning på skjermen
Det kanoniske betraktningsvolumet projiseres ortografisk inn i frontplanet med transformasjonen: Frontplanet avbildes i ”viewport” med transforma-sjonen Mviewport

43 Viewport-transformasjonen
Transformasjonen består av en skalering til viewportens størrelse og form etterfulgt av en transformasjon (translasjon) til skjermkoordinater:

44 Parallellprojeksjon - komplett
Komplett avbildningstransformasjon for parallell- projeksjon:

45 Komplett transformasjonsbilde
Komplett transformasjonsbilde ved parallellprojeksjon: glViewport glOrtho Ikke støttet i OpenGL gluLookAt Basistransformasjoner

46 Betraktningsvolum (xmaks,ymaks) Perspektivprojeksjon bakplan y
(xmin,ymin) bilde frontplan betraktningsvolum (view volume) x z projeksjonsplan

47 Betraktningsvolum Synsvinkel i x-retningen gitt ved : y aspektforhold
z betraktningsvolum Perspektivisk betraktningsvolum kan også spesifiseres ved hjelp av synsvinkel

48 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

49 Oppretting av skjevhet
Betraktningsvolum zbak zfor xmaks xmin x z Retter opp med skjærtransformasjon

50 Oppretting av skjevhet
Skjevheten rettes fullstendig opp med transformasjonen: OBS! Både z og zfor vil her være negative.

51 Oppretting av skjevhet
y (x’maks,y’maks) (xmaks,ymaks) x Etter oppretting (x’min,y’min) Før oppretting (xmin,ymin) OBS: x’maks - x’min = xmaks - xmin y’maks - y’min = ymaks - ymin Utnyttes i påfølgende skalering

52 Kanonisk betraktningsvolum
Kanonisk betraktningsvolum for perspektivprojeksjon: y z’bak=z’min (1,1,-1) (-1,-1,-1) x z

53 Kanonisk betraktningsvolum
Skalering til kanonisk betraktningsvolum for perspektivisk projeksjon: y (x’maks,y’maks,zfor) 2 (1,1,-1) x 2 (-1,-1,-1) (x’min,y’min,zfor)

54 Kanonisk betraktningsvolum
Skalering til kanonisk betraktningsvolum for perspektivisk projeksjon:

55 Kanonisk betraktningsvolum
Kanonisk betraktningsvolum for perspektivprojeksjon: z=z’bak z=x z=-1 z=-x x -1 1 z Kanoniserer med skaleringstransformasjon

56 Perspektiv parallell Søker transformasjon som omformer et kanonisk
betraktningsvolum for perspektivprojeksjon til et kanonisk betraktningsvolum for parallellprojeksjon. Vi stiller følgende krav: Siden skal transformeres til x = z x = -1 x = -z x = 1 y = z y = -1 y = -z y = 1 x- og y-koordinatene skal ikke påvirke transformasjonen av z-koordinaten

57 Kanonisk betraktningsvolum
Terningen begrenset av planene: Konverterer kanonisk betraktningsvolum for perspektivisk projeksjon til kanonisk betraktnings- volum for parallell- projeksjon y x z

58 Perspektiv parallell Følgende matrise tilfredsstiller disse kravene:
Videre forlanger vi at: Planet skal transformeres til z = z = 1 z = z’bak z = der: z’bak = - zbak / zfor

59 Perspektiv parallell Dette gir:

60 Perspektiv parallell Vi får:

61 Normalisering - komplett
Den fullstendige normaliseringen fra skjevt frustrum (avkortet pyramide) til terningformet kanonisk betraktningsvolum blir som følger:

62 Perspektivprojeksjon - komplett
Komplett avbildningstransformasjon for perspektivisk projeksjon: Til sammenlikning:

63 Normalisering - komplett
Utledningen av Mfrus->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 forbindelse mellom OpenGL’s versjon og den som er presentert her Læreboka utleder (med diverse feil under veis og i sluttsvaret) OpenGL’s versjon

64 En alternativ matrise Vi kan danne en ny (og kanskje litt enklere) matrise ved multiplikasjon med faktoren -zfor: Hvordan har det seg at denne matrisen er gjør samme nytten som den opprinnelige!!!???

65 En alternativ matrise Vi arbeider med homogene koordinater
Vi kan skalere alle ledd i en homogen transforma-sjonsmatrise med samme faktor uten at dette påvirker de resulterende kartesiske koordinatene (x,y,z) som kommer fram av de homogene koordinatene (x’,y’,z’,w): Skalering av matrisens ledd resulterer i lik skalering av teller og nevner

66 OpenGL’s matrise OpenGL projiserer ortografisk inn i planet z = -1 i stedet for i planet z = 1 slik utledningen her legger opp til Dette har først og fremst betydning når det skal avgjøres hvilke flater som er synlige i bildet, og hvilken farge flatene skal ha Vi får OpenGL’s matrise ved å reflektere vår matrise M’frus->par i planet z = 0

67 OpenGL’s matrise

68 OpenGL’s matrise OpenGL’s matrise kan utledes direkte ved å gjøre et par av valgene underveis i prosessen litt annerledes: Unnlate skaleringen i z-retningen ved transformasjonen til kanonisk betraktningsvolum for perspektivisk projeksjon: Vrenge det perspektiviske betraktningsvolumet ved transformasjonen til terningform: Planet transformeres til i stedet for z = zfor z = zbak

69 Komplett transformasjonsbilde
Komplett transformasjonsbilde ved perspektivprojeksjon: glViewport glFrustrum gluLookAt Basistransformasjoner

70 Komplett transformasjonsbilde
Komplett transformasjonsbilde ved parallellprojeksjon: glViewport glOrtho Ikke støttet i OpenGL gluLookAt Basistransformasjoner


Laste ned ppt "Forelesningsnotater SIF8039/ Grafisk databehandling"

Liknende presentasjoner


Annonser fra Google