Tietokonegrafiikka / perusteet Tik-.3/3 4 ov / 2 ov Luento 7: 3D katselu Lauri Savioja /4 3D katselu / Sisältö Koorinaattimuunnokset Kameran ja maailmankoorinaatiston yhteys Perspektiivi 3D katselu / 2
Koorinaattijärjestelmät Mitkä hyvänsä m lineaarisesti riippumatonta vektoria n- ulotteisessa avaruuessa (n m) määrittävät m-ulotteisen aliavaruuen. Jokainen aliavaruuen piste voiaan ilmaista vektorina, jonka komponentit ovat kertoimia aliavaruuen määrittäville kantavektoreille (so. kantavektoreien lineaarikombinaationa). Koorinaatiston vaihos toteutetaan kertomalla vektori muunnosmatriisilla, joka koostuu kantavektoreista 3D katselu / 3 Koorinaattijärjestelmät (jatkuu) Olettaen, että koorinaatiston kantavektorit on ilmaistu maailman koorinaattijärjestelmässä vektoreina (e, e 2,..., e m ), joista kukin on muotoa e = (x, y,..., w ), voiaan tässä kannassa esitetty vektori v = (v, v 2,..., v m ) siirtää maailmankoorinaatistoon kertomalla sen komponenteilla kantavektoreita ja laskemalla yhteen: v' = v e + v 2 e 2 +... + v m e m = [ e e 2... e m ] x [ v v 2 v 3... v m ] = M x v 3D katselu / 4 2
Koorinaattijärjestelmät (jatkuu) Jos m = n, ja kantavektorit lineaarisesti riippumattomia, on niistä muoostuva muunnosmatriisi M neliö ja sen käänteismatriisi M määritelty. Tällöin käänteismuunnos, eli siirtyminen maailmankoorinaatistosta paikalliskoorinaatistoon, on v = M v Erityisesti, jos kanta on ortonormaali (so. vektorit e, e 2,..., e m kohtisuorassa ja yksikön mittaisia), on M rotaatiomatriisi, jonka käänteismatriisi on sen transpoosi v = M v = M T v = [ e T e 2 T... e 3T ] v eli kukin v:n komponentti saaaan pistetulona v = e T v jne. 3D katselu / 5 Kannan muoostaminen, ortogonalisointi ja normeeraus vektorin projisointi aliavaruuteen -- pistetulo kohtisuoran vektorin muoostaminen -- ristitulo yleistys N-ulotteiseen avaruuteen Esimerkki: katselutransformaatio lähtötietoina katselusuunta ja pystyvektori vaakasuoran kantavektorin muoostaminen pystyvektorin projisointi kuvatasolle muunnosmatriisi 3D katselu / 6 3
Muunnos kameran koorinaattijärjestelmään Kameran koorinaatiston origo on kameran "silmäpiste" e ja kantavektorit saaaan katselukohteesta t sekä "pystyvektorista" upv, jonka tulee projisoitua kuvassa pystysuoraan. Kolmas kantavektori asetetaan ristitulolla kohtisuoraan eellisiä vastaan. Vektorit normeerataan. w = t e v = upv +, u = v w missä = (upv w) w Z "maailma" O upv P' = (u,v,w) P = (x,y,) T W D V kamera E U Y X 3D katselu / 7 Koorinaattijärjestelmät (jatkuu) Kameran koorinaateissa ilmaistu piste p' = (u,v,w) saaaan maailmankoorinaatistoon kertomalla koorinaatit kantavektoreilla ja lisäämällä kameran origo: p = uu + vv + ww + e u = w [ u v w] v + e = Mp + e Käänteismuunnos, joka siirtää objektit maailmasta katselukoorinaatistoon lopullista projisointia varten, saaaan tästä yhtälöstä. Koska matriisi M sisältää kohtisuorat normeeratut kantavektorit, on se rotaatio-matriisi, jonka käänteismatriisi saaaan transponoimalla: u T p = M ( p e) = M ( p e) = v ( p e) w = u (p e) v (p e) w (p e) [ ] 3D katselu / 8 4
Projektiot Perustyypit: yhensuuntais- ja keskusprojektio l.perspektiivi Yhensuuntais Perspektiivi Ortograafinen Ylä-, etu-, sivukuvat Vino, 2 tai 3 katoamispistettä Aksonometrinen 3D katselu / 9 Projektiot (jatkuu) Yhensuuntaisprojektio voi olla vino tai suora l. ortograafinen suora ortograafinen projektio toteutuu yksinkertaisesti tiputtamalla haluttu koorinaatti pois (asettamalla se vakioksi, esim. ' = ). projektiomatriisi on muuten yksikkömatriisi, mutta lävistäjällä on pois jätettävää koorinaattia vastaavalla paikalla nolla (vrt. skaalausmatriisi, jossa S x = S y = S w =, mutta S = ). projektiomatriisin eterminantti on nolla (singulaarinen, ts. projektiolle ei ole olemassa yksikäsitteistä käänteismuunnosta). 3D katselu / 5
Projektiot (jatkuu) mielivaltainen ortograafinen (aksonometrinen) projektio saaaan yhistämällä sopiva kierto- ja siirtomuunnos projektioon. Huom. tulos vastaa äärettömän kaukaa otettua perspektiivikuvaa. vino yhensuuntaisprojektio koostuu viistoutusmuunnoksesta (shear) ja suorasta projektiosta. Huom. tulos ei vastaa mitään kameralla aikaansaatavaa kuvaa, mutta on havainnollinen koska se säilyttää kuvatason suuntaisten kuvioien muoon ja mitat, ja antaa samalla (sopivalla skaalalla) mittatarkan syvyysvaikutelman. Lcosφ Lsinφ 3D katselu / Projektiot (jatkuu) Perspektiivi periaate: skaalataan koorinaatteja jakamalla ne katselusuuntaisella etäisyyellä projektiokeskuksesta Esim. jos katsellaan -akselin suuntaan ja projektiokeskuksena on origo, niin x' = x / ja y' = y / (ja ' = / = ). 3D katselu / 2 6
7 3D katselu / 3 Perspektiivi (jatkuu) Jos kuvataso on origossa (xy-taso) ja projektiokeskus etäisyyellä negatiivisella -akselilla: x' = *x / (+) = x/((/)+), y' = *y / (+) = y/((/)+), ja ' =. x x x' 3D katselu / 4 Perspektiivi (jatkuu) Yleisempi tapaus vp katselupiste prp katselupiste säilyy esim. näkyvyystarkasteluja varten p prp p p prp vp p vp ) (
Perspektiivi (jatkuu) Huom. jos halutaan säilyttää pisteien etäisyystieto (esim. piilopintatarkasteluja varten) niin, että suorat viivat säilyvät suorina ja näin ollen myös tasot tasoina, on -koorinaattia skaalattava: ' = a / ( - b), a,b mielivaltaisia. homogeenisia koorinaatteja käyttäen perspektiivin eellyttämä jakolasku voiaan siirtää toteutettavaksi myöhemmin, jolloin jakaja sijoitetaan skaalaustekijään w : x' = x, y' = y, ' =, w' = / +. homogeenisessa koorinaatistossa voiaan ns. ieaalipiste (so. äärettömän kaukana oleva piste, jossa yhensuuntaiset suorat yhtyvät) esittää äärellisillä luvuilla asettamalla w = ja ( x y ) = suorien suuntavektori. Helposti nähään, että tämä projisoituu perspektiivimuunnoksella kuvatasolle katoamispisteeksi. 3D katselu / 5 8