forelesningsnotater sif8039/ grafisk databehandling

Post on 12-Jan-2016

49 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

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 Presentation

TRANSCRIPT

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

top related