5.5 3D-grafiikkaa

Kuvattaessa kolmiulotteista maailmaa tasoon, tauluun tai valokuvaan suoritetaan edellä esitetty projektio. Kolmiulotteisessa avaruudessa oleva esineen kuva voidaan piste pisteeltä projisoida tason pinnalle. R : alkuperäinen koordinaatisto on luonnollisen kannan muodostama: e ,e ,e (xyz-koordinaatisto).

Kuva. 5.3. Kolmiulotteinen koordinaatisto e ,e ,e , huvimaja, taso jonka virittävät vektorit u ,u , ja katsoja.

Kun piirtää jokaisesta majan nurkasta säteen katsojan silmään ja yhdistää säteiden leikkauspisteet tasossa saadaan kappaleen eräs projektio tasossa. Periaatteessa tarvitaan siis kolme asiaa:

1. Projisoitava kappale. Se voidaan antaa nurkkapisteiden x ,x ,....,x avulla. Kappaletta ei tarvitse piirtää R :ssa, sillä kukapa sitä siellä katselisi.

2. Taso R :ssa. Se annetaan vektoreiden u ,u avulla.Vektorilla u annetaan projektion suunta.

3. Katsojan asema, joka määrää projektion suunnan.

1. Projisoitava kappale voidaan kuvata matemaattisesti R :ssa helposti suorien, pisteiden yms. avulla . Tyydytään tässä vain luurankomalleihin ja jätetään pintojen ja taustaan jäävien viivojen tutkiminen tuonnemmaksi.

2. Taso R :ssa voidaan määritellä aliavaruutena, mikäli koordinaatisto on valittu siten, että origo kuuluu tasoon. Aliavaruudelle voidaan valita kanta, jonka jälkeen periaatteessa ollaan valmiit projisioimaan. Huomaa, että tason ei tarvitse olla kohtisuorassa säteiden kanssa, vaan se voi olla vinossa.

3. Katsojan asema määrää projektion laadun. Jos katsoja on äärettömän kaukana, ovat eri nurkista lähtevät säteet samansuuntaisia ja puhutaan yhdensuuntaisprojektiosta, jos taas katsoja ei ole äärettömyydessä, eri nurkista tulevat säteet eri suunnissa, (kuten kuvassa 5.3 ) ja tällöin jokainen säde on eri projektio (projektio tasolle pitkin sädettä) ja saadaan perspektiiviprojektio. Rakennuspiirustukset ovat usein yhdensuuntaisprojektioita kun taas naturalistinen maalaustaide ja tietokonepelit käyttävät perspektiiviprojektiota.

Yhdensuuntaisprojektio on joko ortogonaalinen tai vino sen mukaan, onko taso vinossa projektiosuuntaa vastaan vai ei. Vinoja yhdensuuntaisprojektioita ovat mm. Cabinetin ja Cavalierinprojektiot.

Yhdensuuntaisprojektiot (parallel projections)

Tarkastellaan yhdensuuntaisprojektion matemaattista suorittamista. Määritellään projektiotaso

S=span{u ,u }

Vektorit u ,u ovat valitun tason kantavektorit, josta syystä ne kannattaa valita, niin että kuvaa katsellaan normaalin xy-koordinaatiston tapaan. Tästä syystä u ja u kannattaa valita ortonormaaleiksi. Täydennetään kanta R :n kannaksi {u ,u ,u } , missä yksikkövektori u antaa projektion suunnan ja muodostetaan matriisi

X=[u ,u ,u ].

Tämä matriisi ei välttämättä ole ortogonaalinen, sillä u :n suunnan ei tarvitse olla kohtisuorassa S tasoa vastaan. X:n inverssiä merkitään

X = Y* =[y ,y ,y ]*

Projektion tasolle S pitkin vektoria u antaa projektorimatriisi

Pisteen z = [z ,z ,z ] projisiointi tasoon S antaa tulokseksi

Pisteen koordinaatit S-tasossa ovat siis <y ,z> ja <y ,z> ja ne piirretään tason S xy-koordinaateiksi.

Perspektiiviprojektiot (perspective projections)

Perspektiiviprojektio muodostetaan matemaattisesti kuten yhdensuuntaisprojektiokin, mutta suuntavektori u määritetään jokaisen pisteen suhteen erikseen. Projektiotaso

S=span {u , u }

määritellään edelleen valitun tason kantavektoreilla u ja u , jotka kannattaa valita ortonormaaleiksi kuvan katselua helpottamaan. Kanta täydennetään R :n kannaksi {u , u , u }, jossa u kuitenkin vaihtuu aina, kun kuvattavaa pistettä vaihdetaan. Siis jokainen piste projisioidaan omassa (u :n) suunnassa. Yhdensuuntaisprojektiossa suuntavektori u (ja koko kanta) pysyy samana mitä tahansa pistettä kuvattaessa. Jokaisesta kannasta muodostetaan matriisi

=[u , u , u ]

ja edetään sitten edellisen kappaleen osoittamalla tavalla kunnes saadaan projisioidut koordinaatit tasolla S.

Alkeismuunnoksia

Seuraavat alkeismuunnokset helpottavat projisioinnin suorittamista ja niillä voi käännellä kappalöeita eri asentoihin.

Alkeismuunnokset tehdään alkuperäisessä e , e , e (xyz)- koordinaatistossa.

Siirto. Piste x siirtyy origoon muuttujanvaihdoksella x-x .

Kierto. Kappaleen pyörähtäminen voidaan suorittaa liikuttamalla tasoa sopivasti sen ympäri, tai pyörittämällä kappaletta. Kappaleen pyörittäminen on helpompi toteuttaa, sillä silloin kappaleen projektio pysyy tasossa kutakuinkin paikallaan.

a) kierto kulman verran e (x)-akselin ympäri

b) kierto kulman verran e (y)-akselin ympäri

c) kierto kulman verran e (z)-akselin ympäri

.

3-ulotteisen kappaleen pyöritys pisteen x ympäri käy seuraavasti:

1. muuttujanvaihto z=x-x siirtää pisteen x origoksi.

2. vaihe. Kerrotaan pisteet z ,z ,...,z ortogonaalisella kiertomatriiseilla a), b) c) tarpeen mukaan.