Tietokonegrafiikan perusteet T-.43 3 op Luento 3: 3D katselu Lauri Savioja Janne Kontkanen /27 3D katselu / Sisältö Kertaus: koordinaattimuunnokset ja homogeeniset koordinaatit Näkymänmuodostus Kameran koordinaattijärjestelmästä Projektioista 3D katselu / 2
2 3D katselu / 3 Koordinaattimuunnokset Vektorin v siirto muunnosmatriisin M määrittelemään avaruuteen: v M v Perusmuunnoksista tärkeimmät Kierto Siirto Skaalaus Projektio Homogeenisia koordinaatteja käytettäessä M voi kuvata mitä tahansa näistä 3D katselu / 4 Homogeeniset Koordinaatit Koordinaatti [, y, ] voidaan ilmaista homogeenisia koordinaatteja käyttäen vektorina [h yh h h] h voi olla mikä vain > Yhtä kolmiulotteista koordinaattia vastaa ääretön määrä homogeenisia koordinaattivektoreita Siirron (t t y t ) ja kierron (R) kuvaaminen ilman homogeenisia koordinaatteja: Vastaava homogeenisissa koordinaateissa: + y t t t y R y y t t R t y y
Näkymän muodostaminen Prosessia jossa tietokone tuottaa 3-ulotteisesta mallista 2- ulotteisen esityksen kutsutaan renderöinniksi Renderöintiprosessi sisältää useita erilaisia vaiheita, jotka riippuvat käytettävästä menetelmästä Seuraavassa käydään läpi näkymän muodostamiseksi tehtävät koordinaattimuunnokset, sillä tavoin kuin ne toimivat esimerkiksi OpenGL ohjelmointirajapinnassa (näin asia esitetään myös kurssin kirjassa) 3D katselu / 5 Näkymän muodostaminen Mallin koordinaatisto Maailman koordinaatisto Kameran koordinaatisto Projisoidut koordinaatit Aluksi jokainen malli on kuvattu omassa koordinaatistossaan (model/object-space) -tyyppillisesti origo keskellä k.o. objektia Malliin on assosioitu jokin muunnosmatriisi joka pitää sisällään mallin paikan, asennon ja skaalan Normalisoidut koordinaatit Ikkunan koordinaatisto 3D katselu / 6 3
Näkymän muodostaminen Mallin koordinaatisto Maailman koordinaatisto Maailmakoordinaatistossa (World-space) kaikki mallit tuodaan yhteiseen koordinaattijärjestelmään Kameran koordinaatisto Projisoidut koordinaatit Normalisoidut koordinaatit Ikkunan koordinaatisto 3D katselu / 7 Näkymän muodostaminen Mallin koordinaatisto Maailman koordinaatisto Kameran koordinaatisto Projisoidut koordinaatit Normalisoidut koordinaatit Kameran koordinaatistossa origo on katselupisteessä ja - akseli tyypillisesti suuntaan johon kamera katsoo Grafiikkalaitteiston suorittamia operaatioita (tyypillisesti): - valaistuksen laskenta polygonien kulmapisteisiin (ohjelmoitavalla laitteistolla ei välttämättä näin) - nurinpäin olevien pintojen poisto Kamerasta lisää hetken päästä Ikkunan koordinaatisto 3D katselu / 8 4
Näkymän muodostaminen Mallin koordinaatisto Maailman koordinaatisto Kameran koordinaatisto Projisoitu versio kamerakoordinaateista Esim. Perspektiiviprojektiossa kaukana olevat esineet (suuri koordinaatti) ovat pienempiä Projektiosta lisää hetken kuluttua Projisoidut koordinaatit Normalisoidut koordinaatit Ikkunan koordinaatisto 3D katselu / 9 Näkymän muodostaminen Mallin koordinaatisto Maailman koordinaatisto Kameran koordinaatisto Projisoidut koordinaatit Normalisoiduissa koordinaateissa kaikki näkyvä geometria on yksikkökuution - < < Λ - < y < Λ - < < sisällä Tyypillisiä operaatioita tässä vaiheessa Polygonien leikkaus (clipping) Normalisoidut koordinaatit Ikkunan koordinaatisto 3D katselu / 5
Näkymän muodostaminen Mallin koordinaatisto Maailman koordinaatisto Kameran koordinaatisto Projisoidut koordinaatit Esim. origo on näkyvän alueen vasemmassa alalaidassa ja, oikeassa ylälaidassa Homogeenisista koordinaateista luovutaan yleensä vasta tässä vaiheessa, koska tämä välttää perspektiiviprojektiossa muuten helposti sattuvan nollalla jakamisen Normalisoidut koordinaatit Ikkunan koordinaatisto 3D katselu / Kamerasta 3D katselu / 2 6
Kameran koordinaattijärjestelmän rakentaminen Kun tunnetaan kameran paikka (e), haluttu katselukohde (t) ja globaalisti määritelty suunta ylös (upv) Kantavektorit voidaan määrittää seuraavasti: w t e v upv + d, missä d (upv w) w D u v w upv V maailma O Z P (,y,) T P (u,v,w) W E kamera U Y X 3D katselu / 3 Kameran koordinaattijärjestelmästä Edellä mainittu on yksi tapa rakentaa kantavektorit Muita tilanteita: Kamera halutaan sitoa johonkin olemassa olevaan objektiin (jonka asentoa voi kontrolloida esimerkiksi fysiikkasimulaatio) Kameran asentoa kontrolloidaan käyttöliittymästä käsin esim. Euler-kulmina Kameran asento interpoloidaan jostain etukäteen määritellystä liikeradasta 3D katselu / 4 7
8 3D katselu / 5 Muuntaminen kameran koordinaatteihin Kameran koordinaateissa ilmaistu piste p (u,v,w) saadaan maailmankoordinaatistoon kertomalla koordinaatit kantavektoreilla ja lisäämällä kameran origo: Käänteismuunnos: [ ] e Mp e w v u e w v u p + + + + + w v u w v u [ ] e) (p w e) (p v e) (p u e p w v u e p M e p M p ( ) ( ) ( ) ( T 3D katselu / 6 Projektioista
Projektiokuvaus Mikä tahansa neliömatriisi P on projektio, jos pätee että P PP Voidaan esittää 44 muunnosmatriisina Projisointi homogeenisissa koordinaateissa tuttuun tapaan v Pv Tyypillisesti P kuvaa v:n johonkin aliavaruuteen siten, että käänteiskuvausta P - ei ole olemassa (poikkeuksena identiteettimatriisi) Grafiikassa projektiomatriisi kuvaa 3D maailman kaksiulotteiseksi 3D katselu / 7 Projektiotyyppejä Yhdensuuntais Perspektiivi Ortograafinen Ylä-, etu-, sivukuvat Vino, 2 tai 3 katoamispistettä Aksonometrinen 3D katselu / 8 9
Yhdensuuntaisprojektioista Saadaan tiputtamalla haluttu koordinaatti pois (esim. ). Projektiomatriisi on muuten yksikkömatriisi, mutta lävistäjällä on pois jätettävää koordinaattia vastaavalla paikalla nolla (vrt. skaalausmatriisi, jossa S S y S w, mutta S ). (Aksonometrisessa yhdensuuntaisprojektiossa tehdään ensin mielivaltainen rotaatio ja/tai translaatio) 3D katselu / 9 Perspektiiviprojektio Perspektiivi periaate: skaalataan koordinaatteja jakamalla ne katselusuuntaisella etäisyydellä projektiokeskuksesta Esim. jos katsellaan -akselin suuntaan ja projektiokeskuksena on origo, niin / ja y y / (ja / ). 3D katselu / 2
Perspektiiviprojektio Jos kuvataso on origossa (y-taso) ja projektiokeskus etäisyydellä d negatiivisella -akselilla: d* / (+d) /((/d)+), y d*y / (+d) y/((/d)+), ja d d Huomaa: kun [ y ] T kerrotaan yllä olevalla matriisilla ->, w /d+ 3D katselu / 2 Perspektiiviprojektio Perspektiiviprojektio voidaan määritellään usein Halutun näkökentän laajuuden avulla kulmina (field of view) Kuvatason ja projektiokeskipisteen koordinaatteina (myös epäsymmetrinen projektio mahdollinen) Projektiomatriisin rakentaminen em. Tapauksissa kuvattu kirjan kappaleessa 7 3D katselu / 22
Normalisoidut koordinaatit Esim. OpenGL:ssä perspektiiviprojektiota seuraa normalisointimuunnos eli skaalaus jossa kaikki näkyvä geometria viedään (-,-,-) (,,) kuution sisälle Normalisoidussa avaruudessa voidaan tehdä esimerkiksi polygonien leikkaus näkyvän alueen reunoihin (näin esim. OpenGL:ssä) Näkyvän alueen määrittelyyn kuuluu myös kuvatason suuntaiset leikkaustasot lähellä ja kaukana (near plane ja far plane) Normalisointimatriisi yhdistetään usein projektiomatriisiin 3D katselu / 23 2