Upload
others
View
9
Download
0
Embed Size (px)
Citation preview
Gledanje - kamera
Cevovod gledanja (Graphics Pipeline)
z = znear
z = zfar
y
x
z
COP
y
x
zx
z
z = -1
z = 1
y
x
y
Model Coordinates Eye Coordinates Normalized Coordinates
Window CoordinatesProjectedNormalized Coordinates
ModelviewTransform
ProjectionTransform
ViewportTransform
(-1,-1)
(1,1)
glScalef() glRotatef()glTranslatef()
glFrustrum()gluPerspective()
glViewport()
Cevovod gledanja (viewing pipeline)
ModelviewMatrix, VM
ProjectionMatrix, R
Clipping
PerspectiveDivision
Viewport Transformation, Vp
(Px, Py, Pz)
(x*,y*,z*)
Eye coordinates
Clip coordinates
Normalized device coordinates
Ravnina gledanja
eye
V
U
-N
RTTview =
⋅−⋅−⋅−
=
1000
100
010
001
NeVec
VeVec
UeVec
T
( )( )000−= eyeeVec
=
1000
0
0
0
zyx
zyx
zyx
NNN
VVV
UUU
R
=
11w
w
w
viewv
v
v
z
y
x
Tz
y
x
Groba klasifikacija projekcij
Paralelna Perspektiva
Klasifikacija planarnih projekcijPlanarne projekcije
Perspektiva
Pravokotna
Paralelna
EnotočkovnaPoševna
Dvotočkovna
Tritočkovna
Aksonometrična Multiview orthographicCabinet
Cavalier
TrimetričnaDimetričnaIzometrična
Pravokotna (ortografska) projekcija
Je najbolj enostavna projekcija
Ortografska projekcija
Zaslon
Dodajanje perspektive pogledu je le vprasanje skaliranja višine in širine predmeta, odvisno od tega, koliko je predmet oddaljen od zaslona.
Paralelna projekcija
Video
Perspektiva
Zaslon
Pogledi - projekcije na ravnine
Vzporedne poglede dobimo običajno s pravokotno, vzporedno projekcijo karakterističnih točk predmetov na eno od ravnin xz, yz ali xz
Pogledi v tipičnem modelirniku
Sprednji, stranski-desni, tloris-zgornji pogled so vzporedni projekcijski pogledi.
Črte v teh pogledih ne konvergirajo.Razdalja med objektom in kamero ne vpliva na velikost objekta, oddaljeni in bliznji predmeti so enako veliki.
==
1000
0000
0010
0001
ortproj TT
Paralelne pravokotne projekcije (ortografske)
Perspektivna projekcija
Perspektivna projekcija vsebuje določen Cp in oponaša naš vid. Pri taki projekciji je velikost predmeta obratnosorazmerna od tega, kako daleč je objekt od CP. Taka projekcija zgleda realistično, vendar ne ohranja kotov in vzporednosti črt.
==
1/100
0100
0010
0001
d
TT persproj
opomba: d je na sliki N
Perspektivne projekcije
dzw
zZ
yY
xX
v
v
v
v
====
Perspektiva
wZz
wYy
wXx
s
s
s
=
=
=
dzw
zZ
yY
xX
v
v
v
v
====kjer je
Paralelna (ortografska)
0===
s
vs
vs
z
yy
xx
Tipi perspektiv
Enotočkovna perspektiva Dvotočkovna perspektiva
Tritočkovna perspektiva
Lažna perspektiva
V prejšne preproste transformacije moramo vključiti volumen gledanja (view volume):
Volumen gledanja
Volumen gledanja, stožec gledanja
Volumen gledanja(view volume)
Stožec gledanja (frustrum)
Razmerje = wh
Prednja ravnina rezanja
Zadnja ravnina rezanja
Rezano IzločenoIzločeno Prikazano
Prednja ravnina rezanja
Zadnja ravnina rezanja
Nekaj pojmov
Position
Near distance
Far distance
Height angle
Width angle =
Look vector
Up vector
Height angle • Aspect ratio
x
y
z
d
hzx v
v −=
h
d
d
hzx v
v =
d
hzy v
vol =
d
hzy v
v −=
dzv =
fzv =f
Bližnja ravninaDaljna ravnina
Nekaj matematike
( )( )
−−
−
=
000
100
0010
0001
1000
0100
000
000
dffd
dffh
dh
d
Tpers
Skaliranje (d/h v x in y)Prirezana piramida v navadno
piramido
Navadna piramida v kvader
Transformacijske matrike
( )( )
−−
−=
000
100
100
000
dffd
dff
hd
hd
Tpers
Cevovod 3D upodabljanjaDefinicija predmeta
Kompozicija sceneDefinicija pogledaDefinicija osvetlitve
OdstranjevanjeRezanje v 3D prostor gledanja
Odstranjevanje zakritih ploskevRasterizacijaSenčenje
Lokalni koordinatni sistem
Koordinatni prostor sveta
Prostor gledanja
3D prostor zaslona
Prostor zaslona
Transformacije modela
Transformacija gledanja
Projekcija
Deljenje projekcije
Stopnje transformacije verteksov
Matrikagledanja
Matrikaprojekcije
Deljenje perspektive
ViewportTransformation
Koordinate predmeta
Koordinate oči
Koordinate rezanja
Normalizirane koordinate
Transformacije okna
Tu vse transformacije uporabimo na vsaki točki
Matrika “Modelview” vsebuje trenutno transformacijsko matriko, CT
OpenGL® Cevovod preslikav
Matrikagledanjamodela
Matrikaprojekcije
Delitevperspektive
Transformacijaviewport
w
z
y
x
eye
eye
eye
eye
w
z
y
x
1dev
dev
y
x
proj
proj
proj
w
y
x
win
win
y
x
originalniverteks
Verteks v koordinatnem prostoru očesa
2d projekcijaverteksa na Rvnino gledanja
Normalizirane koordinate
naprave(normalised
deviceCoordinates)
Končne koordinate
okna
OpenGL: Položaj in usmeritev kamere
View plane
eye
V
U
-N
glMatrixMode (GL_MODELVIEW)glLoadIdentity();
glLookAt (eye.x, eye.y, eye.z, look.x, look.y, look.z, up.x, up.y, up.z);glLookAt (eye.x, eye.y, eye.z, look.x, look.y, look.z, up.x, up.y, up.z);
OpenGL: Postavitev kamere (Paralelna projekcija)
glMatrixMode (GL_PROJECTION)glLoadIdentity();
glOrtho (left, right, bottom, top, near, far);glOrtho (left, right, bottom, top, near, far);
OpenGL: Postavitev kamere (Perspektivna projekcija)
glMatrixMode (GL_PROJECTION)glLoadIdentity();
glFrustum (left, right, bottom, top, near, far);glFrustum (left, right, bottom, top, near, far);
gluPerspective (viewAngle, aspect, near, far);gluPerspective (viewAngle, aspect, near, far);
or
more intuitive
Transformacija window - viewport
Osnovna ideja: Svet in okno v ta svet
Predstavitev sveta
Okno v svet
• Predstavitev sveta ostaja ista.
• Okno v svet se spreminja, ko se premikamo v svetu, tj. okno v svet se premika.
Svet in okno v svet
• Tako “okno v svet” kot “svet” imata oba koordinatni sistem.
• Zaslon je množica pikslov (pixel = picture element). Kot tudi okno na namizju zaslona. Kot tudi območje znotraj okna.
• Piksli tvorijo dvodimenzionalno mrežo s koordinatami (0,0) v zgornjem levem in maksimalnim številom pikslov za dimenzijo v spodnjem desnem kotu, npr.: (1024,768).
• Tako so koordinate zaslona naslednje:
(0,0)
(1024, 768)
Koordinate
• Črte so podane v koordinatah z izhodiščem, podanim v središču zaslona, npr.:
resolucija 1024 x 768 pomeni središčno točko (512, 384)
• Vse transformacije:
• izvedemo na koordinatah sveta,
• ki jih preslikamo na koordinate zaslona.
• Tako je izračun logičnih transformacij ločen od podrobnosti vidnega področja.
• Model nočemo imeti vezan na resolucijo. Preslikava koordinat sveta na koordinate zaslona nam to omogoča.
Koordinate sveta
Prikaz:
Os x
Os y
Os z
(0, 0, 0) v koordinatah sveta(512,384,0) v pravih koordinatah
• os Z je pravokotna na osi X in Y.
(512, 384, 0)
(512, -384, 0)
Koordinate sveta
Primer:
• točka (0,0,0) v svetu je (512, 384) na zaslonu.• točka (100, -20,0) v svetu je (612, 404) na zaslonu.
• zaslonska koordinata X postane večja s pozitivno koordinato sveta X.• zaslonska koordinata Y postane večja z negativno koordinato sveta Y.
Koordinate sveta