forelesningsnotater sif8039/ grafisk databehandling
DESCRIPTION
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 - PowerPoint PPT PresentationTRANSCRIPT
1
Forelesningsnotater SIF8039/Grafisk databehandlingNotater 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:– Avbilde 3D objekter på en 2D flate
3D 2D
avbildningstransformasjon Begrensning:
– Planare projeksjoner Hovedklasser av planare projeksjoner:
– Parallellprojeksjoner– Perspektiviske projeksjoner
5
Parallellprojeksjoner
Punktene til objektet projiseres langs parallellelinjer
Spesifiseres ved projeksjonsplan og projeksjonsretning
Objekt
Projeksjonsplan
Bilde
6
Parallellprojeksjoner
Ortografiske parallellprojeksjonerProjeksjonsretningen er ortogonal til projeksjonsplanet– Projeksjoner i plan som er vinkelrette på koordinataksene
– Maskintegninger - målriktighet
– Aksonometriske projeksjonerProjeksjonsplanet 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
Punktene til objektet projiseres langs linjer somsamles i et projeksjonssenter
Spesifiseres ved projeksjonsplan og projeksjonssenter
Objekt
Projeksjonsplan
Projeksjons-senterBilde
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 EnpunktsTopunkts
14
En-punkts perspektivprojeksjon
Ett forsvinningspunkt
15
Topunkts perspektivprojeksjon
To forsvinningspunkt
16
Trepunkts perspektivprojeksjon
Tre forsvinningspunkt
17
Perspektivisk transformasjon
x
y
z
d
(x,y,z)
(xp,yp,zp)
Projeksjonssenter (COP)
Projeksjonsplanetsskjæringspunkt medz-aksend er negativ
18
Perspektivisk projeksjon
y
zd
(xp,yp,zp)
(x,y,z)
dz
dz
xx
dz
yy
z
d
y
y
p
p
p
p
:Dessuten/
:eTilsvarend/
19
Homogene koordinater
Ser på: som et punkt i et fire-dimensjonalt rom med homogene koordinater x, y, z og w med w=1.
Tzyx 1
tw
tzz
tyy
txx
'
'
'
'
Er en linje i det firedimensjonale rommet
De kartesiske koordinatene ligger i planet w=1:
Kartesiske koordinater: '/','/','/' wzzwyywxx
20
Perspektivisk projeksjonPerspektivprojeksjonen slik vi har spesifisert den,representeres med matrisen:
0/100
0100
0010
0001
d
M
Vi får: som gir de kartesiske
koordinatene:
dz
z
y
x
z
y
x
M
/1dz
dz
yy
dz
xx
p
p
p
/
/
21
Ortografisk transformasjon
x
y
z
(x,y,z)(xp,yp,zp)
Projeksjonsplanet er x-y-planet
22
Ortografisk projeksjon
Projeksjonen er:
0
p
p
p
z
yy
xx
Matrisen for ortografisk projeksjon er som her:
11000
0000
0010
0001
1
z
y
x
z
y
x
p
p
p
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
x
y
z
COP
n
VPN
vVUP u
1 Center Of Projection2 View Plane Normal3 View Up Vector4 u-axis
26
Posisjonering av kameraet
Posisjonen til origo i kameraets koordinatsystem:
1COP
COP
COP
z
y
x
p
Projeksjonsplannormalen og ”viewup”-vektoren:
0z
y
x
n
n
n
n
0up
up
up
z
y
x
upv
v
v
v
27
Koordinatakser i kamerasystemetHar n-aksen (svarende til z-aksen) i retning vektoren n:
Søker v-aksen (svarende til y-aksen):
nvup
v
nnn
nvup
Projeksjonsplanet
nnn
nvvv up
up
Søker u-aksen (svarende til x-aksen):
nvu
28
Enhetsvektorer i akseretningene
||'
||'
||'
n
nn
v
vv
u
uu
Enhetsvektorer for akseretningene i uvn-systemet(kamerakoordinatsystemet):
29
Koordinater i kamerasystemet
Translasjon av kamerakoordinatsystemets origo til verdenskoordinatsystemets origo:
),,( COPCOPCOP zyxTT
Rotasjon slik at kamerakoordinatsystemets akser fallersammen med verdenskoordinatsystemets akser:
1000
0'''
0'''
0'''
zyx
zyx
zyx
nnn
vvv
uuu
R
30
Koordinater i kamerasystemetTransformasjon av koordinatrepresentasjoner i verdens-koordinatsystemet til koordinatrepresentasjoner i kamera-koordinatsystemet:
1000
)'''('''
)'''('''
)'''('''
1000
100
010
001
1000
0'''
0'''
0'''
zCOPyCOPxCOPzyx
zCOPyCOPxCOPzyx
zCOPyCOPxCOPzyx
COP
COP
COP
zyx
zyx
zyx
WC
nznynxnnn
vzvyvxvvv
uzuyuxuuu
z
y
x
nnn
vvv
uuu
TRM
31
Posisjonering av kameraet
PHIGS:evaluate_ViewOrientationMatrix
viewRefPoint viewPlaneNormal viewUpVector
OpenGL:gluLookAt
øyepunkt referansepunkt (”siktepunkt”)
i scenen ”viewup”-vektor
32
Betraktningsvolum
zx
y
frontplan
bakplan
(xmaks,ymaks)
projeksjonsplan
bilde
betraktningsvolum(view volume)
(xmin,ymin)
Skjev parallellprojeksjon
33
Kanonisk betraktningsvolum
1
1
1
z
y
x
Terningen begrenset av planene:
z
x
y
Enkelt å:- klippe- fjerne skjulte flater- projisere
Betraktningsvolumfor skjev parallell-projeksjontransformerestil kanoniskbetraktnings-volum
34
Skjærtransformasjonen
zz
yy
yxx
'
'
)cot('
1000
0100
0010
00)cot(1
)(,
yxH
x
y
35
Oppretting av skjevhet
z x z y
zbak
zfor
yminxmin
zbak
ymaksxmaks
zfor
Vinklene og er gitt av projeksjonsretningen
1. Translere hjørnet (xmin, ymin, zfor) til origo2. Opprette skjevheten med en skjærtransformasjon3. Translere tilbake
36
Oppretting av skjevhet
Skjærtransformasjon:
1000
0100
0)cot(10
0)cot(01
),(,
zxyH
Den komplette opprettingstransformasjonen blir:
),,(),(),,( forminmin,forminminopprett zyxTHzyxTM zxy
37
Oppretting av skjevhet
Ferdig multiplisert:
1000
0100
)cot()cot(10
)cot()cot(01
for
for
z
z
M opprett
38
Kanonisk betraktningsvolum
zx
zbak
zfor
xmaks xmin
1. Translere midtpunktet i betraktningsvolumet til origo2. Skalere til kanonisk betraktningsvolum
39
Kanonisk betraktningsvolum
Translasjon:
)2
,2
,2
( bakforminmaksminmaks zzyyxxTT
Skalering:
)2
,2
,2
(bakforminmaksminmaks zzyyxx
SS
40
Kanonisk betraktningsvolum
Konkatenert:
1000
200
02
0
002
bakfor
bakfor
bakfor
minmaks
minmaks
minmaks
minmaks
minmaks
minmaks
zz
zz
zz
yy
yy
yy
xx
xx
xx
TSM parkan
41
Avbildning på skjermen
View-port
Skjerm
BreddeH
øyde
(xnvhj,ynvhj)
42
Avbildning på skjermen
Det kanoniske betraktningsvolumet projiseres ortografisk inn i frontplanet med transformasjonen:
Frontplanet avbildes i ”viewport” med transforma-sjonen Mviewport
1000
0000
0010
0001
ortM
43
Viewport-transformasjonen Transformasjonen består av en skalering til
viewportens størrelse og form etterfulgt av en transformasjon (translasjon) til skjermkoordinater:
1000
01002
02
0
200
2
1000
0100
002
0
0002
1000
01002
010
2001
høydey
høyde
breddex
bredde
høyde
bredde
høydey
breddex
M
nvhj
nvhj
nvhj
nvhj
viewport
44
Parallellprojeksjon - komplett
Komplett avbildningstransformasjon for parallell-projeksjon:
gmodellerinWCopprettparkanortviewportparallell MMMMMMM
45
Komplett transformasjonsbilde
Komplett transformasjonsbilde ved parallellprojeksjon:
gmodellerin
uprefCOPWC
foropprett
bakformaksminmaksminparkan
ort
nvhjnvhjviewport
total
M
vPPM
zM
zzyyxxM
M
høydebreddeyxM
M
),,(
),,(
),,,,,(
),,,(
glViewport
glOrtho
Ikke støttet i OpenGL
gluLookAt
Basistransformasjoner
46
Betraktningsvolum
zx
y
frontplan
bakplan
(xmin,ymin)
(xmaks,ymaks)
projeksjonsplan
bilde
betraktningsvolum(view volume)
Perspektivprojeksjon
47
Betraktningsvolum
z
y
betraktningsvolum
synsvinkel
Perspektivisk betraktningsvolum kan også spesifiseres ved hjelp av synsvinkel
Synsvinkel ix-retningen gitt ved :aspektforhold
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
zbak
zfor
xmin xmaks
Betraktningsvolum
zx
for
for
z
yy
z
xx
2)cot(
2)cot(
minmaks
minmaks
Retter opp med skjærtransformasjon
50
Oppretting av skjevhet
Skjevheten rettes fullstendig opp med transformasjonen:
1000
0100
02
10
02
01
minmaks
minmaks
,for
for
zxy z
yyz
xx
H
OBS! Både z og zfor vil her være negative.
51
Oppretting av skjevhety
x
Før oppretting
Etter oppretting
(xmin,ymin)
(x’maks,y’maks)
(x’min,y’min)
(xmaks,ymaks)
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:
x
y
z
(1,1,-1)(-1,-1,-1)
z’bak=z’min
53
Kanonisk betraktningsvolum
y
x
(x’maks,y’maks,zfor)
(x’min,y’min,zfor)
(1,1,-1)
(-1,-1,-1)
2
2
Skalering til kanonisk betraktningsvolum for perspektiviskprojeksjon:
54
Kanonisk betraktningsvolum
Skalering til kanonisk betraktningsvolum for perspektiviskprojeksjon:
1000
01
00
002
0
0002
)1
,2
,2
(
for
minmaks
minmaks
forminmaksminmaks
z
yy
xx
zyyxxSM perkan
55
Kanonisk betraktningsvolum
z
x-1 1
z=-1
z=z’bak
z=-xz=x
Kanonisk betraktningsvolum for perspektivprojeksjon:
Kanoniserer med skaleringstransformasjon
56
Perspektiv parallellSø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 transformasjonenav z-koordinaten
57
Kanonisk betraktningsvolum
1
1
1
z
y
x
Terningen begrenset av planene:
z
x
y
Konverterer kanonisk betraktningsvolum forperspektivisk projeksjontil kanonisk betraktnings-volum for parallell-projeksjon
58
Perspektiv parallellFølgende matrise tilfredsstiller disse kravene:
0100
00
0010
0001
parperM
Videre forlanger vi at:
Planet skal transformeres til z = -1 z = 1 z = z’bak z = -1 der: z’bak = - zbak / zfor
59
Perspektiv parallellDette gir:
1'
'
1
: og av ebestemmels tillikningene todissegir som
1100''001'00
11001001100
bak
bak
bakbakbak
z
z
zzzM
M
TTTparper
TTTparper
60
Perspektiv parallellVi får:
forbak
bak
forbak
forbak
2
zz
z
zz
zz
0100
200
0010
0001
forbak
bak
forbak
forbak
zz
z
zz
zzM parper
61
Normalisering - komplett
Den fullstendige normaliseringen fra skjevt frustrum (avkortet pyramide) til terningformet kanonisk betraktningsvolum blir som følger:
0z
100
2
)(00
0)(
20
0)(
02
for
forbak
bak
forbakfor
forbak
minmaksfor
minmaks
minmaks
minmaksfor
minmaks
minmaks
,
zz
z
zzz
zzyyz
yy
yy
xxz
xx
xx
HMMM zxyperkanparperparfrus
62
Perspektivprojeksjon - komplett
Komplett avbildningstransformasjon for perspektiviskprojeksjon:
gmodellerinWCopprettparkanortviewportparallell MMMMMMM
gmodellerinWCparfrusortviewportperspektiv MMMMMM
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!!!???
0100
200
02
0
002
'
forbak
forbak
forbak
forbak
minmaks
minmaks
minmaks
for
minmaks
minmaks
minmaks
for
for
zz
zz
zz
zzyy
yy
yy
zxx
xx
xx
z
MzM parfrusparfrus
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
w
zz
w
yy
w
xx
'''
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
0100
200
02
0
002
'
1000
0100
0010
0001
forbak
forbak
forbak
forbak
minmaks
minmaks
minmaks
for
minmaks
minmaks
minmaks
for
zz
zz
zz
zzyy
yy
yy
zxx
xx
xx
z
MM parfrusOpenGL
parfrus
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:
)1,2
,2
(minmaks
for
minmaks
for
yy
z
xx
zSM perkan
Planet transformeres til i stedet for z = zfor -1 1z = zbak 1 -1
69
Komplett transformasjonsbildeKomplett transformasjonsbilde ved perspektivprojeksjon:
gmodellerin
uprefCOPWC
parfrus
ort
nvhjnvhjviewport
total
M
vPPM
zzyyxxM
M
høydebreddeyxM
M
),,(
),,,,,(
),,,(
bakforminmaksminmaks
glViewport
glFrustrum
gluLookAt
Basistransformasjoner
70
Komplett transformasjonsbilde
Komplett transformasjonsbilde ved parallellprojeksjon:
gmodellerin
uprefCOPWC
foropprett
bakformaksminmaksminparkan
ort
nvhjnvhjviewport
total
M
vPPM
zM
zzyyxxM
M
høydebreddeyxM
M
),,(
),,(
),,,,,(
),,,(
glViewport
glOrtho
Ikke støttet i OpenGL
gluLookAt
Basistransformasjoner