.. Kolmiulotteisten rakenteiden käsittel. Matemaattiset perusteet ietokonegrafiikka perustuu paljolti matemaattiseen laskentaan, jossa kätetään vektoreita ja matriiseja sekä näille lineaarialgebran peruskäsitteitä. Käsitteellisesti vastassa on jokseenkin kkertaisia menetelmiä. Muunnokset ovat tärkeitä kolmiulotteisten näkmien luomisessa. Niitä kätetään kohteiden siirtämiseen näkmässä ja kaksiulotteisen näkmän luomisessa lipäänsä. ässä luvussa esitetään perusmuunnoksia, muodon muuttamiseen kätettäviä muunnoksia ja kolmiulotteista geometriaa. Kohde esitetään monikulmioverkkona tarkemmin. luvussa Kohteen pinta esitetään hdistettjen tasomonikulmioiden joukkona. Jokainen monikulmio muodostuu hdistettjen pisteiden listasta. Esits on joko tarkka tai likimääräinen kohteesta riippuen. Esim. kuutio esitetään kuudella neliöllä. Slinteriä approksimoidaan monikulmiotasoilla, esim. karkeasti kuudella suorakulmiolla kaarevia sivuja ja kahdella kuusikulmiolla ala ja läpintaa.. luku 7. luku 8 Affiinit muunnokset Lisäämällä monikulmioita approksimaatiota saadaan parannettua, mutta tällöin vaaditaan tietsti enemmän laskentaa niiden käsittelssä ja muistitilaa. Monikulmioiden kättö on kkertaista ja nopeasti laskettavissa olevaa. ämän vuoksi niiden kättö on vallitsevaa. Monikulmioverkkomalli käsittää kolmiulotteia pisteinä kuvattuja kärkiä nk. maailmankoordinaatistossa. Kärkien väliset janat määräävät kohteen reunat. Affiinit muunnokset esitetään matriiseilla. Joukko näitä muunnoksia voidaan hdistää hdeksi hdistetksi muunnokseksi perättäisillä lineaarisilla muunnoksilla, joita seuraa siirto. Muunnokset ovat tpiltään kierto rotaatio, skaalaus, vääntö ja siirto translaatio. Kohteet määritellään tavallisesti oikeakätisessä maailmankoordinaatistossa. Kuvassa.. on oikea ja vasenkätinen koordinaatisto. Erona on akselin suunta. Kuva.. Oikea ja vasenkätinen koordinaatisto.. luku 9. luku
oiaan on mielekästä määritellä kohteet omassa lokaalissa koordinaatistossaan. Jopa kohteen osilla saattaa olla lokaalisia koordinaatistojaan. Muunnosten suorittaminen on silloin mmärrettävissä kunkin kohteen lokaalin koordinaatistonsa muunnoka suhteessa maailmankoordinaatistoon. Esim. tehtäessä kohteen kierto on helppoa suorittaa se smmetriaakselia vertailukohteena kättäen. Kohteen kärkien joukko, so. kolmiulotteiset pisteet, muunnetaan toiseksi pistejoukoksi lineaarisella muunnoksella. Molemmat pistejoukot ovat samassa koordinaatistossa. Muunnokset esitetään matriiseilla ja pisteet pst eli sarakevektoreina. Muunnosmatriisi edeltää vektoria. Piste V muunnetaan siirrossa, skaalauksessa ja kierrossa seuraavasti. V V + D V SV V RV ässä D on siirtovektori sekä S ja R ovat skaalaus ja kiertomatriiseja. Nämä ovat tietokonegrafiikassa tavallisimmin kätett muunnokset. Esim. animaatiossa kiinteää kappaletta voi käsitellä ainoastaan kierrolla ja siirrolla, kun taas skaalausta kätetään mallintamisessa.. luku. luku On kätevää kättää homogeenista koordinaatistoa, jossa ulottuvuutta on kasvatettu. ällöin mös siirto on suoritettavissa helposti matrii kertolaskulla hteenlaskun sijasta, kuten kaksi muuta muunnosta. Homogeenisessa koordinaatistossa kärki V,, esitetään muodossa VwX,wY,wZ,w mille tahansa kertoimelle w. Kolmiulotteinen karteeen koordinaatisto on nt muotoa: X/w, Y/w, Z/w Kun asetetaan w htä suureksi kuin, pisteen vektori tai matriisiesits on seuraavaa muotoa: Siirto tapahtuu tällöin matriisitulona muodossa: V' V ' ' '. luku 3. luku 4
Edellinen vastaa tunnetusti htälörhmää, jossa siirtoarvot on lisätt alkuperäisiin: ' + ' ' + + Seuraavaksi annetaan skaalaus, jossa on kätett matrii S skaalauskertoimia: V' SV S S S S ässä kätetään normaalisti arvoja S S S, muuten skaalaus ei olisi tasainen, hdenmukainen eri akselien suhteen. Jälleen voidaan kuvaus esittää mös htälörhmänä: ' S ' S ' S Kierron suorittamiseksi on määrättävä kiertoakseli. ämä voi olla mikä tahansa kolmiulotteisessa avaruudessa, mutta helpointa on tarkastella jotakin kolmesta koordinaattiakselista. Kierrot akselien, ja suhteen ovat: R. luku 5. luku 6 R R Viimeisen tilanteessa voidaan toimia jälleen htälörhmällä ks. mös kuva..: Kuva.. a Identiteetti, b kierto ja c skaalaus akselin suhteen ' ' + ' d siirto, e kierto ja siirto sekä f siirto ja kierto.. luku 7. luku 8
Monesti tarvitaan näiden käänteismuunnoksia. saadaan muuttamalla sen komponenttien, ja etumerkit, ts. asettamalla ne vastaluvuikseen. S saadaan muuttamalla S, S ja S käänteisluvuikseen. Asettamalla kierron kulma vastaluvukseen saadaan R. Mikä tahansa kiertojen, skaalausten ja siirtojen joukko on kerrottavissa tai hdistettävissä katenoitavissa, jolloin saadaan hdistett muunnosmatriisi. Jos on esim. " ' " ' ja M " ', niin muunnosmatriisi on hdistettävissä muotoon ja ' ' ' M M 3 MM " " M3 " On stä huomata matriisitulon järjests, siis en sovelletaan muunnosta M. Vaikka siirrot ovat vaihdannaisia eli kommutatiivisia, kierrot eivät ole, joten on RR RR, mikä on havainnollistettu kuvassa.. e ja f.. luku 9. luku Yleinen muunnosmatriisi on muotoa: A A A3 A A A3 A3 A3 A33 Kokoa 3 3 oleva alimatriisi A vastaa kierron ja skaalauksen kokonaisuutta sekä pstvektori siirtoa. Mahdollisuus katenoida muunnoksia hdistetn muunnoksen saamiseksi on hödllinen, sillä se antaa ksittäisen matrii mille tahansa lineaariselle muunnokselle. Pohditaan esim. kohdetta, joka on pisteessä,, ja jota halutaan kiertää akselin suuntaisen ja kohteen hden kärjen kautta kulkevan suoran suhteen. Kohde ei sijaitse origossa, ja halutaan tehdä kierto pisteen suhteen, joka on kohteessa itsessään. Halutaan siis kiertää kohdetta omassa lokaalissa koordinaatistossaan. Kiertomatriisia ei voi suoraan soveltaa, sillä se on määritelt origon suhteen eikä kohteen suhteen. Pitää siirtää kohde origoon, soveltaa haluttua kiertoa ja 3 siirtää kohde takai alkuperäiseen paikkaansa.. luku. luku
. luku 3 Yhdistett matriisi on seuraava: ästä on esimerkki kuvassa.3., jossa kulma on 3. + R. luku 4 Kuva.3. Aluksi kohde siirretään origoon, jossa kierretään akselin suhteen. Lopuksi kohde palautetaan siirrolla alkuperäiseen paikkaansa.. luku 5 Koordinaatiston muunnokset oiaan on tarpeellista tehdä koordinaatiston muunnos, kun esim. on useita käsiteltäviä kohteita, kukin omassa lokaalissa koordinaatistossaan. Esim. käsitellään slinteriä tämän keskiakselin suhteen. Sen sijaan, että käsiteltäisiin sitä lokaalissa koordinaatistossa, se voidaan siirtää ns. mallintamismuunnoksella sopivaan asentoon maailmankoordinaatistossa käsiteltäväksi. utkitaan kahta koordinaatistoa, joiden akselit ovat samansuuntaiset. Muunnettaessa koordinaatiston määrätt pisteet koordinaatistoon kätetään käänteismuunnosta, joka siirtää koordinaatiston origon koordinaatiston origoon. ällöin kuvataan edellisen piste,,, jälkimmäisen pisteeksi,,, : ' ' '. luku 6.. Muotoa muuttavat muunnokset Edeltävät lineaariset muunnokset joko siirtävät kohdetta siirto ja kierto tai skaalaavat sitä. asainen skaalaus säilttää muodon, mutta kättäen erisuuria arvoja S, S ja S kohdetta ventetään tai painetaan kasaan koordinaatistoakseleita pitkin. Seuraavassa pohditaan suipentamista, vääntöä ja taivuttamista. Määritellään leisesti muunnos missä,, on alkuperäisen kiinteän kohteen kärkipiste ja X, Y, Z muunnetun kärki. F Z F Y F X
Suipennus tuotetaan skaalauksella X r Y r Z missä r f on lineaarinen tai epälineaarinen suipentamisprofiili tai funktio. Muunnos on r:n funktio. Muunnosta muutetaan riippuen sen paikasta avaruudessa. Globaali akselin suuntainen vääntö toteutetaan vastaavasti kierrolla. Kohteen vääntämiseksi akselin suuntaan sovelletaan kiertoa X Y + Z missä f ja f määrittelee väännön suuruuden mittaksikköä kohti akselilla. Globaali lineaarinen taivutus akselin suhteen saadaan hdistämällä muunnos taivutusalueella ja tämän ulkopuolisella alueella. Muotoa muutetaan kierrolla ja siirrolla. aivutusalue Y akselin suhteen määritellään: aivutuksen kärs on /k ja taivutuksen keskipiste. aivutuskulma missä on: min ma k ' ' min ma min min < < ma ma. luku 7. luku 8 Muunnos käsittää: X + min ma k Y + + min < min k + + ma > ma k + min ma k Z + + min < min k k + + ma > ma k k Kuva.4. sisältää esimerkin kuution ja Utahin teekannun väännöstä. Kuvassa.5. on esimerkki monikulmioverkkokohteesta slinteri, jota on väännett ja suipennettu. Kuva.4. Ylhäältä lukien alkuperäiset kohteet, suipennetut, väännett ja taivutetut.. luku 9. luku 3
Monikulmioverkkoja ei voi leisesti muuttaa epälineaarisesti ja rajoitta. Esim. ongelmana on kärkien hdistettävden rajoitukset; kuutiota ei voi rajatta vääntää ja samalla säilttää sen käsiteltävttä tietokonegrafiikan mielessä. Mös kärjet saattavat siirtä erilleen, joka aiheuttaa epätarkkuutta monikulmioesitksessä. Kuva.5. Väännett ja suipennettu slinteri.. luku 3. luku 3.3. Vektorit tietokonegrafiikassa Vektoreita hödnnetään alati tietokonegrafiikassa. Niillä on suuruus ja suunta. Ykkertainen esimerkki on liikkuvan kappaleen nopeus avaruudessa. Se eroaa skalaarisuureesta, jolla on vain suuruus, kuten lämpötila. Kolmiulotteinen vektori esitetään kolmen skalaarikomponentin muodossa: V v, v, v3 Vektorien hteenlasku Kahden vektorin V ja W hteenlasku määritellään ks. kuva.6.: X V + W,, 3 v + w, v + w, v3 + w3 Kuva.6. Kaksi vaihtoehtoista, ekvivalenttia tapaa esittää vektorien hteenlasku. Vektorien pituus Vektorin pituus eli suuruus määritellään suureena V v / + v + v 3 ja tulkitaan geometrisesti vektorin alun ja lopun välisenä euklidisena etäistenä. Vektori normoidaan normalisoidaan muodostamalla ksikkövektori, jonka pituus on ksi. ämä saadaan jakamalla vektori pituudellaan: U V V. luku 33. luku 34
Vektorilla U on sama suunta kuin vektorilla V. Kirjoittaen V V U osoitetaan jokaisen vektorin olevan pituutensa ja suuntansa tulo. ietokonegrafiikassa pitää usein tällä keinolla laskea kohteiden asennot ja verrata näitä toisiinsa nähden. Normaalivektorit ja ristitulot Laskennassa tpillinen tehtävä on laskea pinnan normaalivektoreita. Esim. monikulmioverkolle normaalivektoria kätetään esittämään pinnan asento verrattaessa tätä valon suuntaan. Heijastusmallissa lasketaan pinnasta heijastuneen valon intensiteettiä. Mitä pienempi kulma on pinnan normaalin ja tulevan valon välillä, sitä suurempi intensiteetti on. Monikulmion normaalivektori lasketaan kolmesta ei samalla suoralla kärkipisteestään. Kolme kärkeä määrittelevät vektorit V ja V kuva.7.. Monikulmion normaali lasketaan edellisten ristitulolla: N p V V Yleisesti esittäen vektorien V ja W ristitulo on: X V W vw3 v3w i + v3w vw3 j + vw vw k ässä i, j ja k ovat akselien ksikkövektorit: i,, j,, k,, Nämä määräävät kseisen vektoriavaruuden. Kuvan.7. mukaan normaalivektori suuntineen saadaan oikean käden säännön mukaan.. luku 35. luku 36 Kuva.7. Monikulmion normaalivektorin laskeminen. Kun kseessä on sopiva parametrinen pinta, normaalivektorin suunta vaihtelee pinnan jokaisesta pisteestä toiseen. ällöin pisteessä u,v lasketaan tangenttivektorit osittaisderivaatat kahdessa toistensa suhteen kohtisuorassa suunnassa. Pinnalle Qu,v saadaan ristitulolla normaalivektori kuva.8.: Q u, v Q u, v Ns u v Kuva.8. Parametrisen pinnan normaalivektori. Normaalivektorit ja pistetulot Pistetulon tavanomai sovellus tietokonegrafiikassa on kahden vektorin välisen kulman laskeminen toisen vektorin ollessa jonkin pinnan normaali, esimerkkinä pinnan normaalin ja valon suuntavektorin välisen kulman laskeminen. Vektorien V ja W pistetulo on skalaari kuva.9.: X V W vw + vw + v3w3. luku 37. luku 38
Kuva.9. a Vektoreiden pistetulo riippuu niiden välisestä kulmasta. b X V W on vektorin W projektion V:lle pituus. Koisääntöä kättäen saadaan: Lisäksi on: V W V + W V W Kun on vektorien välinen kulma, saadaan näistä: V W V W V V W + W V W Edelleen tulee V W V W ts. kahden vektorin välisen kulman koi on niiden normivektorien pistetulo. Kuvan.9. b tapaan pistetuloa kätetään vektorin projektion laskemiseksi. Olkoon V ksikkövektori V, jolle W:n projektio X muodostetaan: X W V W W V W V W ietokonegrafiikan kannalta olennaista on pistetulon etumerkki. Pistetulon suhteesta koiin takia vektorien pituudesta riippumatta V ja W on: V W > V W V W < jos < 9 jos 9 jos > 9. luku 39. luku 4 Heijastukseen liittvät vektorit Pinnan normaalin hteteen sisält muutamia keskeisiä vektoreita. Ne ovat valon suuntavektori L, heijastus eli peilivektori R ja katselun suuntavektori V. Kuva.. esittää näiden riippuvuuden normaalivektorista N. Kuva.. Heijastusvektorin R muodostaminen. Kuvan..nojalla saadaan: R R + R R L + R äten on R R L ja s. 4 ensimmäisen kaavan perusteella R N L N Kuva.. a Valon suuntavektori L, b heijastusvektori R ja c katselun suuntavektori V. Huomaa optiikan lakien mukaiset smmetriset kulmat ja. ja saadaan lopuksi vektorigeometrisestikin selvä tulos: R N L N L. luku 4. luku 4