Homogenn´ı souˇradnice, maticov´
e transformace
Souˇradn´
e soustavy, projekˇ
cn´ı transformace, frustum
Reprezentace orientace
Perspektivnˇ
e korektn´ı interpolace
Hardware pro poˇc´ıtaˇcovou grafiku
NPGR019
Matematika pro real-time grafiku
Josef Pelik´an
Jan Hor´aˇcek
http://cgg.mff.cuni.cz/
MFF UK Praha
2012
Josef Pelik´
an, Jan Hor´
aˇ
cek
Hardware pro poˇ
c´ıtaˇ
covou grafiku NPGR019
Homogenn´ı souˇradnice, maticov´
e transformace
Souˇradn´
e soustavy, projekˇ
cn´ı transformace, frustum
Reprezentace orientace
Perspektivnˇ
e korektn´ı interpolace
Obsah
1
2
3
4
Homogenn´ı souˇradnice, maticov´e transformace
Pˇrevod mezi souˇradn´ymi soustavami
Souˇradn´e soustavy, projekˇcn´ı transformace, frustum
Reprezentace orientace
Eulerovy u
´hly, kvaterniony
interpolace orientac´ı
Perspektivnˇe korektn´ı interpolace
Josef Pelik´
an, Jan Hor´
aˇ
cek
Hardware pro poˇ
c´ıtaˇ
covou grafiku NPGR019
Homogenn´ı souˇradnice, maticov´
e transformace
Souˇradn´
e soustavy, projekˇ
cn´ı transformace, frustum
Reprezentace orientace
Perspektivnˇ
e korektn´ı interpolace
Pˇrevod mezi souˇradn´
ymi soustavami
Geometrick´e transformace v 3D
vektor 3D souˇradnic [x, y , z]
transformace n´asoben´ım matic´ı 3x3
ˇr´
adkov´
y vektor se n´asob´ı zprava (DirectX )


a11 a12 a13
[x, y , z] · a21 a22 a23  = [x 0 , y 0 , z 0 ]
a31 a32 a33
sloupcov´
y vektor se

a11
a21
a31
n´asob´ı zleva (OpenGL)
    0
a12 a13
x
x
a22 a23  · y  = y 0 
a32 a33
z
z0
transformaˇcn´ı matice 3x3 maj´ı podstatn´e omezen´ı - nelze je
pouˇz´ıt pro posunut´ı (translaci)
Josef Pelik´
an, Jan Hor´
aˇ
cek
Hardware pro poˇ
c´ıtaˇ
covou grafiku NPGR019
Homogenn´ı souˇradnice, maticov´
e transformace
Souˇradn´
e soustavy, projekˇ
cn´ı transformace, frustum
Reprezentace orientace
Perspektivnˇ
e korektn´ı interpolace
Pˇrevod mezi souˇradn´
ymi soustavami
Homogenn´ı souˇradnice
vektor homogenn´ıch souˇradnic [x, y , z, w ]
transformace n´asoben´ım

a11
a21
[x, y , z, w ] · 
a31
a41
matic´ı 4x4
a12
a22
a32
a42
a13
a23
a33
a43

a14
a24 
 = [x 0 , y 0 , z 0 , w 0 ]
a34 
a44
homogenn´ı matici lze i posunovat (translace) a prov´adˇet
perspektivn´ı projekci
Josef Pelik´
an, Jan Hor´
aˇ
cek
Hardware pro poˇ
c´ıtaˇ
covou grafiku NPGR019
Homogenn´ı souˇradnice, maticov´
e transformace
Souˇradn´
e soustavy, projekˇ
cn´ı transformace, frustum
Reprezentace orientace
Perspektivnˇ
e korektn´ı interpolace
Pˇrevod mezi souˇradn´
ymi soustavami
Pˇrevod homogenn´ıch souˇradnic
homogenn´ı souˇradnice [x, y , z, w ] se pˇrev´adˇej´ı na bˇeˇzn´e
kart´ezsk´e souˇradnice vydˇelen´ım (je-li w 6= 0) [x/w , y /w , z/w ]
souˇradnice [x, y , z, 0] neodpov´ıdaj´ı ˇz´adn´emu vlastn´ımu bodu v
prostoru
lze je ch´apat jako reprezentaci smˇ
erov´
eho vektoru (bod v
nekoneˇcnu)
pˇrevod z obyˇcejn´ych souˇradnic do homogenn´ıch je
jednoduch´y: [x, y , z] ⇒ [x, y , z, 1]
Josef Pelik´
an, Jan Hor´
aˇ
cek
Hardware pro poˇ
c´ıtaˇ
covou grafiku NPGR019
Homogenn´ı souˇradnice, maticov´
e transformace
Souˇradn´
e soustavy, projekˇ
cn´ı transformace, frustum
Reprezentace orientace
Perspektivnˇ
e korektn´ı interpolace
Pˇrevod mezi souˇradn´
ymi soustavami
Element´arn´ı transformace
nejbˇeˇznˇejˇs´ı jsou afinn´ı transformace

a11 a12 a13
a21 a22 a23

a31 a32 a33
t1 t2 t3

0
0

0
1
lev´a horn´ı podmatice [a11 aˇz a33 ] vyjadˇruje rozmˇer a orientaci,
pˇr´ıpadnˇe zkosen´ı
vektor [t1 , t2 , t3 ] ud´av´a posunut´ı (translaci)
posunut´ı je aˇz posledn´ı operace
Josef Pelik´
an, Jan Hor´
aˇ
cek
Hardware pro poˇ
c´ıtaˇ
covou grafiku NPGR019
Homogenn´ı souˇradnice, maticov´
e transformace
Souˇradn´
e soustavy, projekˇ
cn´ı transformace, frustum
Reprezentace orientace
Perspektivnˇ
e korektn´ı interpolace
Pˇrevod mezi souˇradn´
ymi soustavami
Transformace norm´al
norm´alov´e vektory se nesm´ı transformovat bˇeˇzn´ymi
transformaˇcn´ımi maticemi
v´yjimka: matice M je rotaˇcn´ı (ortonorm´aln´ı)
matice pro transformaci norm´
al N:
N = (M −1 )T
P˚
uvodn´ı objekt
Josef Pelik´
an, Jan Hor´
aˇ
cek
Transformovan´y objekt
Hardware pro poˇ
c´ıtaˇ
covou grafiku NPGR019
Homogenn´ı souˇradnice, maticov´
e transformace
Souˇradn´
e soustavy, projekˇ
cn´ı transformace, frustum
Reprezentace orientace
Perspektivnˇ
e korektn´ı interpolace
Souˇradn´e soustavy
Souřadnice modelu
(Object coordinates)
Modelovací transformace
(Modeling transform)
Světové souřadnice
(World coordinates)
Pohledová transformace
(View transform)
Souřadnice kamery
(Eye coordinates)
Projekční transformace
(Projection transform)
Josef Pelik´
an, Jan Hor´
aˇ
cek
Ořezávací souřadnice
(Clip coordinates)
Hardware pro poˇ
c´ıtaˇ
covou grafiku NPGR019
Homogenn´ı souˇradnice, maticov´
e transformace
Souˇradn´
e soustavy, projekˇ
cn´ı transformace, frustum
Reprezentace orientace
Perspektivnˇ
e korektn´ı interpolace
Souˇradn´e soustavy
Souřadnice modelu
(Object coordinates)
Modelovací transformace
(Modeling transform)
Světové souřadnice
(World coordinates)
ModelViewMatrix
Pohledová transformace
(View transform)
ModelViewProjMatrix
Souřadnice kamery
(Eye coordinates)
Projekční transformace
(Projection transform)
Josef Pelik´
an, Jan Hor´
aˇ
cek
Ořezávací souřadnice
(Clip coordinates)
Hardware pro poˇ
c´ıtaˇ
covou grafiku NPGR019
Homogenn´ı souˇradnice, maticov´
e transformace
Souˇradn´
e soustavy, projekˇ
cn´ı transformace, frustum
Reprezentace orientace
Perspektivnˇ
e korektn´ı interpolace
Souˇradn´e soustavy 2
Ořezávací souřadnice
(Clip coordinates)
Perspektivní dělení
(Perspective divide)
Normalizovaný
prostor
(Normalized
device space)
Okénková transformace
(Viewport transform)
Josef Pelik´
an, Jan Hor´
aˇ
cek
Souřadnice v okně
(Window coordinates)
Hardware pro poˇ
c´ıtaˇ
covou grafiku NPGR019
Homogenn´ı souˇradnice, maticov´
e transformace
Souˇradn´
e soustavy, projekˇ
cn´ı transformace, frustum
Reprezentace orientace
Perspektivnˇ
e korektn´ı interpolace
Souˇradn´e soustavy 3
souˇradnice modelu
datab´aze objekt˚
u, ze kter´ych se skl´ad´a sc´ena
3D modelovac´ı programy (3DS, Maya, ...)
svˇetov´e souˇradnice
absolutn´ı souˇradnice virtu´aln´ıho 3D svˇeta
vz´ajemn´a poloha jednotliv´ych instanc´ı objekt˚
u
pro zobrazov´an´ı nemaj´ı pˇr´ıliˇs velk´y v´yznam (pouze teoretick´y)
souˇradnice kamery
3D svˇet se transformuje do relativn´ıch souˇradnic kamery
stˇred projekce: poˇ
c´
atek, smˇer pohledu: -Z (OpenGL) nebo
+Z (DirectX)
Josef Pelik´
an, Jan Hor´
aˇ
cek
Hardware pro poˇ
c´ıtaˇ
covou grafiku NPGR019
Homogenn´ı souˇradnice, maticov´
e transformace
Souˇradn´
e soustavy, projekˇ
cn´ı transformace, frustum
Reprezentace orientace
Perspektivnˇ
e korektn´ı interpolace
Souˇradn´e soustavy a jejich transformace
transformace model ⇒ kamera
kombinovan´a do ModelView matice
projekˇcn´ı transformace
definuje zorn´y objem (frustum pro perspektivn´ı projekci)
pˇredn´ı a zadn´ı oˇrez´avac´ı vzd´alenost: n, f
v´ysledkem je homogenn´ı souˇradnice (pˇred oˇrez´an´ım)
oˇrez´avac´ı souˇradnice (clip coordinates)
v´ystupn´ı souˇradnice vertex shaderu
Josef Pelik´
an, Jan Hor´
aˇ
cek
Hardware pro poˇ
c´ıtaˇ
covou grafiku NPGR019
Homogenn´ı souˇradnice, maticov´
e transformace
Souˇradn´
e soustavy, projekˇ
cn´ı transformace, frustum
Reprezentace orientace
Perspektivnˇ
e korektn´ı interpolace
Projekˇcn´ı transformace
tzv. frustum pro perspektivn´ı projekci je definov´ano
parametry n, f, l, r, t, b
vzd´alen´y bod f lze pousnout do nekoneˇcna

2n
r −l
 0

 r +l
 r −l
0
0
2n
t−b
t+b
t−b
0
0
0
−(f +n)
f −n
−2fn
f −n

0
0


−1
0
Josef Pelik´
an, Jan Hor´
aˇ
cek

2n
r −l
0
r −l
2n
t−b
t+b
t−b
0
0
 0

 r +l

0
0
0
0

−1 −1
−2n 0
Hardware pro poˇ
c´ıtaˇ
covou grafiku NPGR019
Homogenn´ı souˇradnice, maticov´
e transformace
Souˇradn´
e soustavy, projekˇ
cn´ı transformace, frustum
Reprezentace orientace
Perspektivnˇ
e korektn´ı interpolace
Souˇradn´e soustavy a jejich transformace
perspektivn´ı dˇelen´ı
pouze pˇrev´ad´ı homogenn´ı souˇradnice do kart´ezsk´ych
normalizovan´e souˇradnice zaˇr´ızen´ı (NDC )
kv´adr standardn´ı velikosti
OpenGL: [−1, −1, −1] aˇz [1, 1, 1]
DirectX: [−1, −1, 0] aˇz [1, 1, 1]
souˇradnice v oknˇe (window coordinates)
v´ysledkem ok´enkov´e transformace (ˇsk´alov´an´ı + posun) a
transformace hloubky
pouˇz´ıvaj´ı se pˇri rasterizaci a pr´aci s fragmenty
Josef Pelik´
an, Jan Hor´
aˇ
cek
Hardware pro poˇ
c´ıtaˇ
covou grafiku NPGR019
Homogenn´ı souˇradnice, maticov´
e transformace
Souˇradn´
e soustavy, projekˇ
cn´ı transformace, frustum
Reprezentace orientace
Perspektivnˇ
e korektn´ı interpolace
Transformace tuh´eho tˇelesa
zachov´av´a tvar tˇ
eles, mˇen´ı pouze jejich orientaci
skl´ad´a se jen z posunut´ı a ot´
aˇ
cen´ı
ˇcasto se pouˇz´ıv´a k pˇrevodu mezi souˇradnicov´ymi syst´emy
(napˇr. mezi svˇetov´ymi souˇradnicemi a syst´emem spojen´ym s
pozorovatelem)
Josef Pelik´
an, Jan Hor´
aˇ
cek
Hardware pro poˇ
c´ıtaˇ
covou grafiku NPGR019
Homogenn´ı souˇradnice, maticov´
e transformace
Souˇradn´
e soustavy, projekˇ
cn´ı transformace, frustum
Reprezentace orientace
Perspektivnˇ
e korektn´ı interpolace
Eulerovy u
´hly, kvaterniony
interpolace orientac´ı
Pˇrevod mezi dvˇemi orientacemi
y
s
O
t
z
x
u
[1, 0, 0] · Mstu→xyz = s
[0, 1, 0] · Mstu→xyz = t
[0, 0, 1] · Mstu→xyz = u
Josef Pelik´
an, Jan Hor´
aˇ
cek
Souˇradn´
y syst´
em m´a poˇc´atek v O
a je zad´an trojic´ı jednotkov´ych
vektor˚
u [s, t, u]


sx sy sz
Mstu→xyz =  tx ty tz 
ux uy uz
T
Mxyz→stu = Mstu→xyz
Hardware pro poˇ
c´ıtaˇ
covou grafiku NPGR019
Homogenn´ı souˇradnice, maticov´
e transformace
Souˇradn´
e soustavy, projekˇ
cn´ı transformace, frustum
Reprezentace orientace
Perspektivnˇ
e korektn´ı interpolace
Eulerovy u
´hly, kvaterniony
interpolace orientac´ı
Eulerova transformace
y
rozklad obecn´e rotace na tˇri sloˇ
zky
-z
E (h, p, r ) = Ry (h) · Rx (p) · Rz (r )
x
h(head, yaw): otoˇcen´ı hlavy v p˚
udorysu
p(pitch): zvednut´ı/sklonˇen´ı hlavy
r(roll): otoˇcen´ı kolem osy pohledu
Josef Pelik´
an, Jan Hor´
aˇ
cek
Hardware pro poˇ
c´ıtaˇ
covou grafiku NPGR019
Homogenn´ı souˇradnice, maticov´
e transformace
Souˇradn´
e soustavy, projekˇ
cn´ı transformace, frustum
Reprezentace orientace
Perspektivnˇ
e korektn´ı interpolace
Eulerovy u
´hly, kvaterniony
interpolace orientac´ı
Eulerova transformace 2
v´ysledn´a matice rotace:


c(r )c(h) − s(r )s(p)s(h) s(r )c(h) + c(r )s(p)s(h) −c(p)s(h)
−s(r )c(p)
c(r )c(p)
s(p) 
E =
c(r )s(h) + s(r )s(p)c(h) s(r )s(h) − c(r )s(p)c(h) c(p)c(h)
s(x) = sin(x), c(x) = cos(x)
moˇznost zpˇetn´eho v´ypoˇctu u
´hl˚
u h,p,r:
p . . . e23
r . . . e21 /e22
h . . . e13 /e33
Josef Pelik´
an, Jan Hor´
aˇ
cek
Hardware pro poˇ
c´ıtaˇ
covou grafiku NPGR019
Homogenn´ı souˇradnice, maticov´
e transformace
Souˇradn´
e soustavy, projekˇ
cn´ı transformace, frustum
Reprezentace orientace
Perspektivnˇ
e korektn´ı interpolace
Eulerovy u
´hly, kvaterniony
interpolace orientac´ı
Rotace - jin´e konvence
hlavn´ı konvence
1. rotace kolem Z o u
´hel ϕ
2. rotace kolem X’ o u
´hel θ
3. rotace kolem Z”o u
´hel ψ
X-konvence
1. rotace kolem Z
2. rotace kolem p˚
uvodn´ı osy X
3. rotace kolem p˚
uvodn´ı osy Z
dalˇs´ı syst´
emy: aeronautika, gyroskopy, fyzika, . . .
Josef Pelik´
an, Jan Hor´
aˇ
cek
Hardware pro poˇ
c´ıtaˇ
covou grafiku NPGR019
Homogenn´ı souˇradnice, maticov´
e transformace
Souˇradn´
e soustavy, projekˇ
cn´ı transformace, frustum
Reprezentace orientace
Perspektivnˇ
e korektn´ı interpolace
Eulerovy u
´hly, kvaterniony
interpolace orientac´ı
Kvaterniony
Sir William Rowan Hamilton, 1843
i 2 = j 2 = k 2 = ijk = −1
aplikace v grafice aˇz v roce 1985 (Shoemake)
zobecnˇ
en´ı komplexn´ıch ˇ
c´ısel do 4D prostoru
q = (v, w ) = ix + jy + kz + w = v + w
imagin´
arn´ı ˇ
c´
ast v = (x, y , z) = ix + jy + kz
i 2 = j 2 = k 2 = −1
jk = −kj = i
ki = −ik = j
ij = −ji = k
Josef Pelik´
an, Jan Hor´
aˇ
cek
Hardware pro poˇ
c´ıtaˇ
covou grafiku NPGR019
Homogenn´ı souˇradnice, maticov´
e transformace
Souˇradn´
e soustavy, projekˇ
cn´ı transformace, frustum
Reprezentace orientace
Perspektivnˇ
e korektn´ı interpolace
Eulerovy u
´hly, kvaterniony
interpolace orientac´ı
Kvaterniony - operace
sˇc´ıt´an´ı
(v1 , w1 ) + (v2 , w2 ) = (v1 + v2 , w1 + w2 )
n´asoben´ı
qr = (vq × vr + wr vq + wq vr , wq wr − vq · vr )
i(qy rz − qz ry + rw qx + qw rx ),
j(qz rx − qx rz + rw qy + qw ry ),
k(qx ry − qy rx + rw qz + qw rz ),
qw rw − qx rx − qy ry − qz rz
Josef Pelik´
an, Jan Hor´
aˇ
cek
Hardware pro poˇ
c´ıtaˇ
covou grafiku NPGR019
Homogenn´ı souˇradnice, maticov´
e transformace
Souˇradn´
e soustavy, projekˇ
cn´ı transformace, frustum
Reprezentace orientace
Perspektivnˇ
e korektn´ı interpolace
Eulerovy u
´hly, kvaterniony
interpolace orientac´ı
Kvaterniony - operace
konjugace
(v, w )∗ = (−v, w )
norma (ˇctverec absolutn´ı hodnoty)
k q k2 = n(q) = qq∗ = x 2 + y 2 + z 2 + w 2
jednotka
i = (0, 1)
pˇrevr´acen´a hodnota
q−1 =
q∗
n(q)
n´asoben´ı skal´arem
sq = (0, s)(v, w ) = (sv, sw )
Josef Pelik´
an, Jan Hor´
aˇ
cek
Hardware pro poˇ
c´ıtaˇ
covou grafiku NPGR019
Homogenn´ı souˇradnice, maticov´
e transformace
Souˇradn´
e soustavy, projekˇ
cn´ı transformace, frustum
Reprezentace orientace
Perspektivnˇ
e korektn´ı interpolace
Eulerovy u
´hly, kvaterniony
interpolace orientac´ı
Jednotkov´e kvaterniony
jednotkov´
y kvaternion lze vyj´adˇrit goniometricky
q = (uq sinϕ, cosϕ)
pro nˇejak´y jednotkov´
y 3D vektor uq
reprezentace rotace (orientace) v 3D
nejednoznaˇcnost: q i −q reprezentuj´ı stejnou rotaci
identita (nulov´e otoˇcen´ı): (0, 1)
mocnina, exponenci´ala, logaritmus:
q = uq sinϕ + cosϕ = exp(ϕuq )
log q = ϕuq
qt = (uq sinϕ + cosϕ)t = exp(tϕuq ) = uq sin(tϕ) + cos(tϕ)
Josef Pelik´
an, Jan Hor´
aˇ
cek
Hardware pro poˇ
c´ıtaˇ
covou grafiku NPGR019
Homogenn´ı souˇradnice, maticov´
e transformace
Souˇradn´
e soustavy, projekˇ
cn´ı transformace, frustum
Reprezentace orientace
Perspektivnˇ
e korektn´ı interpolace
Eulerovy u
´hly, kvaterniony
interpolace orientac´ı
Rotace pomoc´ı kvaternionu
jednotkov´y kvaternion
q = (uq sinϕ, cosϕ)
uq . . . osa rotace
ϕ ...u
´hel
bod nebo vektor v 3D:
p = [px , py , pz , pw ]
rotace bodu (vektoru) p kolem
osy uq o u
´hel 2ϕ:
0
−1
p = qpq
uq
φ
φ
∗
= qpq
Josef Pelik´
an, Jan Hor´
aˇ
cek
Hardware pro poˇ
c´ıtaˇ
covou grafiku NPGR019
Homogenn´ı souˇradnice, maticov´
e transformace
Souˇradn´
e soustavy, projekˇ
cn´ı transformace, frustum
Reprezentace orientace
Perspektivnˇ
e korektn´ı interpolace
Eulerovy u
´hly, kvaterniony
interpolace orientac´ı
Pˇrevod kvaternion ↔ matice
kvaternion q po pˇreveden´ı na matici:


1 − 2(y 2 + z 2 )
2(xy + wz)
2(xz − wy )
1 − 2(x 2 + z 2 )
2(yz + wx) 
M =  2(xy − wz)
2(xz + wy )
2(yz − wx)
1 − 2(x 2 + y 2 )
pˇrevod matice na kvaternion - z´akladem jsou rovnice:
m23 − m32 = 4wx
m31 − m13 = 4wy
m12 − m21 = 4wz
tr (M) + 1 = 4w 2
Josef Pelik´
an, Jan Hor´
aˇ
cek
Hardware pro poˇ
c´ıtaˇ
covou grafiku NPGR019
(1)
Homogenn´ı souˇradnice, maticov´
e transformace
Souˇradn´
e soustavy, projekˇ
cn´ı transformace, frustum
Reprezentace orientace
Perspektivnˇ
e korektn´ı interpolace
Eulerovy u
´hly, kvaterniony
interpolace orientac´ı
Pˇrevod matice na kvaternion 2
pokud je stopa matice+1 v absolutn´ı hodnotˇe velk´
a:
p
−m32
w = 21 tr (M) + 1 x = m234w
m31 −m13
m12 −m21
y = 4w
x = 4w
v opaˇcn´em pˇr´ıpadˇe se nejprve spoˇc´ıt´a sloˇzka s maxim´aln´ı
absolutn´ı hodnotou, pak se pouˇzij´ı rovnice (1)
4x 2 = 1 + m11 − m22 − m33
4y 2 = 1 − m11 + m22 − m33
4z 2 = 1 − m11 − m22 + m33
Josef Pelik´
an, Jan Hor´
aˇ
cek
Hardware pro poˇ
c´ıtaˇ
covou grafiku NPGR019
Homogenn´ı souˇradnice, maticov´
e transformace
Souˇradn´
e soustavy, projekˇ
cn´ı transformace, frustum
Reprezentace orientace
Perspektivnˇ
e korektn´ı interpolace
Eulerovy u
´hly, kvaterniony
interpolace orientac´ı
Sf´erick´a line´arn´ı interpolace (slerp)
nejkratˇs´ı sf´
erick´
y oblouk mezi orientacemi q a r
vstup:
dva kvaterniony q a r
q · r ≥ 0, jinak −q
re´aln´y parametr 0 ≤ t ≤ 1
interpolovan´y kvaternion:
slerp(q, r, t) = q(q∗ r)t
jin´e vyj´adˇren´ı:
slerp(q, r, t) =
sin(ϕ(1 − t))
sin(ϕt)
·q+
·r
sinϕ
sinϕ
cosϕ = qx rx + qy ry + qz rz + qw rw
Josef Pelik´
an, Jan Hor´
aˇ
cek
Hardware pro poˇ
c´ıtaˇ
covou grafiku NPGR019
Homogenn´ı souˇradnice, maticov´
e transformace
Souˇradn´
e soustavy, projekˇ
cn´ı transformace, frustum
Reprezentace orientace
Perspektivnˇ
e korektn´ı interpolace
Eulerovy u
´hly, kvaterniony
interpolace orientac´ı
Otoˇcen´ı mezi dvˇema vektory
dva smˇerov´e vektory s a t
1
2
3
normalizace vektor˚
u s, t
jednotkov´a rotaˇcn´ı osa u =
vyj´adˇren´ı u
´hlu mezi s a t:
(s×t)
ks×tk
e = s · t = cos(2ϕ)
k s × t k= sin(2ϕ)
4
v´ysledn´y kvaternion:
q = (u · sinϕ, cosϕ)
q = (qv , qw ) =
Josef Pelik´
an, Jan Hor´
aˇ
cek
1
p
2(1 + e)
p
(s × t),
2(1 + e)
2
!
Hardware pro poˇ
c´ıtaˇ
covou grafiku NPGR019
Homogenn´ı souˇradnice, maticov´
e transformace
Souˇradn´
e soustavy, projekˇ
cn´ı transformace, frustum
Reprezentace orientace
Perspektivnˇ
e korektn´ı interpolace
Eulerovy u
´hly, kvaterniony
interpolace orientac´ı
Slerp rotaˇcn´ıch matic
vstup:
dvˇe rotaˇcn´ı matice Q a R
re´aln´y parametr 0 ≤ t ≤ 1
interpolovan´a matice:
slerp(Q, R, t) = Q(Q T R)t
technick´y probl´
em: obecn´a mocnina rotaˇcn´ı matice
nutnost v´ypoˇctu osy a u
´hlu otoˇcen´ı Q T R
v´ypoˇcetnˇe m´alo efektivn´ı
Josef Pelik´
an, Jan Hor´
aˇ
cek
Hardware pro poˇ
c´ıtaˇ
covou grafiku NPGR019
Homogenn´ı souˇradnice, maticov´
e transformace
Souˇradn´
e soustavy, projekˇ
cn´ı transformace, frustum
Reprezentace orientace
Perspektivnˇ
e korektn´ı interpolace
Eulerovy u
´hly, kvaterniony
interpolace orientac´ı
Vyj´adˇren´ı rotace - shrnut´ı
rotaˇcn´ı matice
+ HW podpora, efektivn´ı transformace vektoru
- pamˇet’ (9× float), neefektivn´ı ostatn´ı operace
osa a u
´hel otoˇcen´ı
+ pamˇet’ (4× float nebo 6× float), podobn´e kvaternionu
- neefektivn´ı kompozice, interpolace
kvaternion
+ pamˇet’ (4× float), kompozice, interpolace
- neefektivn´ı transformace vektoru
podrobnosti viz RotationIssues.pdf
Josef Pelik´
an, Jan Hor´
aˇ
cek
Hardware pro poˇ
c´ıtaˇ
covou grafiku NPGR019
Homogenn´ı souˇradnice, maticov´
e transformace
Souˇradn´
e soustavy, projekˇ
cn´ı transformace, frustum
Reprezentace orientace
Perspektivnˇ
e korektn´ı interpolace
Interpolace na obrazovce
t´yk´a se souˇradnic od oˇrez´
avac´ıch (vˇcetnˇe)
clip space: [x, y , z, w ]
NDS: [ wx , wy , wz ] (w nˇekdy z˚
ust´av´a)
window space (fragment): [xi , yi , zi , w ]
projekˇ
cn´ı perspektivn´ı transformace mapuje hloubku z do
NDS neline´
arnˇ
e
- nerovnomˇ
ern´
e vyuˇzit´ı pˇresnosti z-bufferu (m´enˇe pˇresn´e
vzd´alen´e partie - minimalizace pomˇeru nf )
+ interpolaci hloubky z lze dˇelat na obrazovce line´
arnˇ
e
W-buffer m´ısto z-bufferu (dnes se moc nepouˇz´ıv´a)
Josef Pelik´
an, Jan Hor´
aˇ
cek
Hardware pro poˇ
c´ıtaˇ
covou grafiku NPGR019
Homogenn´ı souˇradnice, maticov´
e transformace
Souˇradn´
e soustavy, projekˇ
cn´ı transformace, frustum
Reprezentace orientace
Perspektivnˇ
e korektn´ı interpolace
Perspektivnˇe korektn´ı interpolace
1
ve stranˇe troj´
uheln´ıka interpoluj
1 u v
[x, y , z, w , w , w ]
2
interpoluj v r´amci scanline
3
vypoˇc´ıtej spr´avn´e parametry
w = 1/ w1
u = wu · w
···
3.
1.
2.
snahou je pouˇz´ıvat co nejv´ıce line´
arn´ı interpolaci
hloubku z lze interpolovat line´arnˇe
pro texturov´
e souˇradnice nebo w se mus´ı implementovat
perspektivnˇe korektn´ı interpolace
line´
arnˇ
e interpoluji w1 , wu i wv , fin´aln´ı [u, v ] pak dopoˇc´ıt´am
dˇelen´ım (hyperbolick´a interpolace)
Josef Pelik´
an, Jan Hor´
aˇ
cek
Hardware pro poˇ
c´ıtaˇ
covou grafiku NPGR019
Homogenn´ı souˇradnice, maticov´
e transformace
Souˇradn´
e soustavy, projekˇ
cn´ı transformace, frustum
Reprezentace orientace
Perspektivnˇ
e korektn´ı interpolace
Perspektivnˇe korektn´ı interpolace - aplikace
historicky v´ypoˇcetnˇe v´yraznˇe n´
aroˇ
cnˇ
ejˇs´ı neˇz line´arn´ı
ˇreˇsen´ı - sn´ıˇzen´ı n´aroˇcnosti, perspektivnˇe korektn´ı interpolace
poˇc´ıt´ana jen v urˇ
cit´
ych bodech, zbytek interpolov´an
(bi)line´arnˇe
Quake - jednou za 16 pixel˚
u scanline
biline´arn´ı po bloc´ıch v souˇradnic´ıch obrazovky
pro konstantn´ı z
modern´ı karty maj´ı HW interpol´
atory
Josef Pelik´
an, Jan Hor´
aˇ
cek
Hardware pro poˇ
c´ıtaˇ
covou grafiku NPGR019
Homogenn´ı souˇradnice, maticov´
e transformace
Souˇradn´
e soustavy, projekˇ
cn´ı transformace, frustum
Reprezentace orientace
Perspektivnˇ
e korektn´ı interpolace
Perspektivnˇe korektn´ı interpolace - pˇr´ıklad
affinn´ı
Josef Pelik´
an, Jan Hor´
aˇ
cek
perspektivnˇe spr´avn´e
Hardware pro poˇ
c´ıtaˇ
covou grafiku NPGR019
Homogenn´ı souˇradnice, maticov´
e transformace
Souˇradn´
e soustavy, projekˇ
cn´ı transformace, frustum
Reprezentace orientace
Perspektivnˇ
e korektn´ı interpolace
Perspektivnˇe korektn´ı interpolace - pˇr´ıklad 2
affinn´ı
Josef Pelik´
an, Jan Hor´
aˇ
cek
perspektivnˇe spr´avn´e
Hardware pro poˇ
c´ıtaˇ
covou grafiku NPGR019
Homogenn´ı souˇradnice, maticov´
e transformace
Souˇradn´
e soustavy, projekˇ
cn´ı transformace, frustum
Reprezentace orientace
Perspektivnˇ
e korektn´ı interpolace
Literatura
Tomas Akenine-M¨
oler, Eric Haines: Real-time rendering,
2nd edition, A K Peters, 2002, ISBN:1568811829
OpenGL Architecture Review Board: OpenGL Programming
Guide: The Official Guide to Learning OpenGL,
Addison-Wesley, nejnovˇejˇs´ı vyd´an´ı (aktu´alnˇe 8. vyd´an´ı pro
OpenGL 4.1)
David Eberly: Rotation Representations and Performance
Issues, http://www.geometrictools.com/Documentati
on/RotationIssues.pdf, 2002-2008
Wikipedia:
http://en.wikipedia.org/wiki/Rotation matrix, . . .
Josef Pelik´
an, Jan Hor´
aˇ
cek
Hardware pro poˇ
c´ıtaˇ
covou grafiku NPGR019
Download

PDF prezentace