Tietokonegrafiikka : Kirjan sisältö
Sisältö Alkusanat 1 Johdanto 1.1 3D-grafiikka ja sen sovellukset 1.2 Tietokonegrafiikan historiaa 2 Geometriaa 2.1 Pisteetja karteesinen koordinaatisto 2.2 Pisteiden erotus ja vektorit 2.3 Vektorioperaatioita 2.3.1 Pistetulo 2.3.2 Ristitulo 2.3.3 Kaksiulotteinen ristitulo 2.4 Suora, säde, viivasegmentti ja murtoviiva 2.5 Taso 2.5.1 Taso ja normaali 2.5.2 Vaihtoehtoinen esitystapa tasolle 2.5.3 Pisteen etäisyys tasosta 2.5.4 Sovellus: valon heijastuminen tasosta 2.6 Monikulmiot 2.6.1 Yksinkertaiset monikulmiot 2.6.2 Ei-yksinkertaiset monikulmiot 3 Lisää geometrisia kappaleita 3.1 Monikulmioverkko 3.1.1 Monikulmioverkon esitystapoja 3.1.2 Kolmioketjut ja-viuhkat 3.1.3 Kulmapistetaulukot ja oheistieto 3.1.4 Kolmioketjun etsiminen 3.2 Monitahokkaat 3.3 Neliölliset pinnat 3.4 Tasa-arvopinnat 3.5 Tekniikoita kappaleiden muodostamiseen 3.5.1 Pyyhkäisykappaleet 3.5.2 CSG-tekniikka 3.6 Parametroidut käyrät ja pinnat 3.6.1 Bezier-käyrä 3.6.2 Spline-funktiot ja -käyrät 3.6.3 Uniformi B-spline-käyrä 3.6.4 Ei-uniformi B-spline-käyrä 3.6.5 Rationaaliset käyrät ja NURBS-käyrä 3.6.6 Lisää käyriä 3.6.7 Käyrät pinnalla 4 Geometriset muunnokset 4.1 Geometrinen muunnos funktiona 4.2 Lineaariset kuvaukset 4.3 Matriisit 4.3.1 Matriisi tulo 4.3.2 Matriisien operaatioita 4.3.3 Yksikkömatriisi ja käänteismatriisi 4.3.4 Matriisin determinantti 4.3.5 Lineaariset yhtälöryhmät 4.4 2D-avaruuden muunnokset 4.4.1 Perusmuunnokset 4.4.2 Affiinimuunnokset 4.4.3 Koordinaatistomuunnos 4.5 Homogeeniset koordinaatit 4.5.1 Homogeenisten koordinaattien periaate 4.5.2 Homogeeniset koordinaatit 2D-avaruudessa 4.5.3 Homogeeniset koordinaatit 3D-avaruudessa 4.5.4 Laskeminen homogeenisissa koordinaateissa 4.5.5 2D-perusmuunnokset homogeenisissa koordinaateissa 4.6 Muunnosten yhdistäminen 4.7 3D-muunnoksia 4.8 Eulerin kulmat 4.9 Kvaterniot 4.9.1 Kompleksiluvut 4.9.2 Kvaternioalgebra 4.9.3 Kvaterniot ja vektorit 4.9.4 Kierrot kvaternioilla 4.9.5 Kvaternioiden sovellukset 5 2D-geometrian ongelmia 5.1 Säteiden, suorien ja viivasegmenttien leikkaus 5.1.1 Analyyttinen ratkaisu 5.1.2 Viivasegmenttien leikkaus 2D-ristitulon avulla 5.2 Piste monikulmiossa 5.2.1 Piste ei-konveksissa monikulmiossa 5.2.2 Piste konveksissa monikulmiossa 5.3 Viivasegmentin ja suorakulmion leikkaus 5.4 Viivasegmentin ja konveksin monikulmion leikkaus 5.5 Monikulmioiden leikkaus 5.6 Pistejoukon konveksi peite 5.6.1 Naiivi ääripistealgoritmi 5.6.2 Grahamin algoritmi 5.6.3 Jarvisin matriisi 5.6.4 Muita algoritmeja konveksin peitteen etsimiseen 5.7 Laskennallista geometriaa 5.7.1 Voronoin diagrammi 5.7.2 Pyyhkäisymenetelmä 6 3D-geometrian ongelmia 6.1 Suoran ja tason leikkas 6.2 Suoran ja avaruuden monikulmion leikkaus 6.3 Avaruuden monikulmioiden leikkaus 6.4 Leikkaustestejä pääakseleiden suuntaiselle laatikolle ja pallolle 6.5 Näköfrustumin leikkaustestejä 6.6 Leikkaustestien toteuttamisesta . „ . „ . . „ . . „ . . . . . . 7 2D-piirto 7.1 2D-piirron vaiheet 7.2 Viivasegmentin piirto 7.3 Pehmeät ja paksut viivat 7.4 Ympyrän piirto 7.5 Tulvatäyttö 7.6 Monikulmion vaakarivitäyttö 7.7 Lisähuomioita 2D-piirrosta 8 3D-piirron liukuhihna 8.1 Piirtoliukuhihnan merkitys 8.2 Sovellusvaihe 8.3 Geometriavaihe 8.4 Rasterointivaihe 9 3D-piirron geometriavaihe 9.1 Muunnos katsojan koordinaatistoon 9.2 Valaistuksen laskenta kulmapisteille 9.3 Projektiot 9.3.1 Paralleeliprojektio 9.3.2 Perspektiiviprojektio 9.3.3 Projektioyhtälöt 9.3.4 Näköfrustumi 9.3.5 Perspektiiviprojektio 3D-muunnoksena 9.4 Näkövolyymin normalisointi 9.5 Mallin leikkaus 9.6 Muunnos ikkunakoordinaatistoon 10 Rasterointi 10.1 Monikulmioiden rasterointi 10.2. Sävytys 10.3 Teksturointi 10.3.1 Lineaarinen tekstuurikuvaus tasolle 10.3.2 Perspektiivikorjattu tekstuurikuvaus 10.3.3 Tekstuurikuvan suodatus 10.3.4 MIP-kartta 10.3.5 Tekstuurin yhdistäminen monikulmion väriin 10.3.6 Multiteksturointi 10.3.7 Muita tekstuurien käyttötapoja 10.3.8 Mainostaulut 10.3.9 Kolmiulotteiset tekstuurit ja proseduraaliset tekstuurit 10.3.10 Ympäristökuvaus ja kuutiokartta 10.3.11 Muita ympäristökuvaustekniikoita „ . . . . . . . . . 10.4 Sumu 10.5 Siluetti- ja alfa-testi 10.6 Z-puskuri 10.7 Ylinäytteistys, akkumulaatiopuskuri ja A-puskuri 10.8 Kirjoitus videopuskuriin ja jälkikäsittely 11 Valaistus 11.1 Diffuusi heijastuminen 11.2 Ambinetti valo 11.3 Pistemäiset valonlähteet 11.4 Spekulaarit heijastukset 11.5 Valaistus monikulmiomallissa 11.6 Muita valaistusmalleja 11.7 Pinnan valaistusyhtälö ja BRDF 11.8 Pinnan kuhmutus 11.8.1 Kuhmutuksen laskeminen korkeuskartasta 11.8.2 Pinnan tangenttikoordinaatisto 11.8.3 Lisähuomioita kuhmutuksesta 12 Näkyvyys 12.1 Näkyvyyde ongelma 12.2 Takapintojen poisto 12.3 Geometrinen näkyvyysleikkaus 12.4 Syvyyslajittelu, BSP ja octree 12.5 Sisätilojen piirtotekniikat 12.5.1 Konveksit solut, portaalit ja naapuruusgraafi 12.5.2 Portaalikarsinta 12.5.3 Staattinen solusta-soluun -näkyvyys 12.5.4 Solusta-soluun -näkyvyyslaskennan toteutuksesta 12.6 Z-puskuritekniikka 12.7 Lisää tekniikoita näkyvyyskarsintaan 12.7.1 Varjofrustumit 12.7.2 Z-karsintaa 12.7.3 Z-pyramiditekniikka 12.7.4 Hierarchical Occlusion Maps (HOM) 12.7.5 Vielä lisää tekniikoita 13 Varjot, läpikuultavuus ja heijastukset 13.1 Varjot 13.1.1 Varjot tasolle 13.1.2 Varjoärmiöt 13.1.3 Varjokartta 13.1.4 Lisää varjoista 13.2 Läpikuultavat pinnat 13.3 Heijastukset 14 Avaruudellisia tietorakenteita 14.1 Rajauslaatikot ja rajauslaatikkohierarkiat 14.2 Avaruuden tasajakoinen laatikointi 14.3 PR-quadtree 14.4 Haut quadtreestä . „ . . . . 14.5 PR-octree 14.6 Point quadtree 14.7 K-d-puu 14.8 BSP-puu 14.8.1 Jaon toteutus BSP-puussa 14.8.2 BSP-puun sovelluksia 14.8.3 Huomioita BSP-puusta 14.8.4 Leafy-BSP 14.9 Muita avaruudellisia tietorakenteita 15 Tarkkuustaso ja maastomallit 15.1 Monikulmioverkon yksinkertaistaminen 15.2 Maastomallit 15.2.1 Maastonpiirron ongelmia ja ratkaisuja 15.2.2 Geomimap 15.2.3 PR-quadtree-pohjainen verkko 15.2.4 ROAM 16 Valo, värit ja kuvien esitysmuodot . 16.1 Valon voimakkuus ja gamma-korjaus 16.2 Aallonpituudet ja värit 16.3 Värit perusvärien summana 16.4 CIE-väristandardi 16.5 CIE-kromaattisuusdiagrammi 16.6 Värimallit 16.7 Kuvien tiedostomuodot 17 Piirtorajapinnat OpenGL ja DirectX 17.1 OpenGL 17.1.1 OpenGL:n tehtävät 17.1.2 OpenGL-piirtämisen periaatteet 17.1.3 OpenGL:n alustaminen 17.1.4 Geometriset muunnokset 17.1.5 Primitiivien piirtäminen 17.1.6 Kappaleiden muunnokset 17.1.7 Valaistus 17.1.8 Teksturointi 17.1.9 GLUT-apukirjasto 17.1.10 Verteksitaulukot 17.1.11 OpenGL-versiot ja laajennokset 17.1.12 OpenGL-ongelmia 17.1.13 OpenGL/GLUT-esimerkkiohjelma 17.2 DirectX 17.2.1 Windows-ohjelmointi 17.2.2 DirectX:n alustaminen 17.2.3 DirectX-piirto 18 Ohjelmoitavat sävyttimet 18.1 Ei-reaaliaikaiset sävytinkielet 18.2 Reaaliaikaiset ohjelmoitavat sävyttimet 18.3 Rekisterikombinoijat 18.4 Konekielinen sävytinohjelmointi 18.5 Korkean tason sävytinohjelmointikielet 18.6 Attribuuttitieto 18.7 Uniformi tieto 18.8 Tietotyypit ja operaatiot . „ . . . . . . 18.9 Esimerkejä 19 Säteenjäljitys ja globaali valaistus 19.1 Säteenjäljitys 19.2 Kappaleet säteenjäljityksessä 19.3 Säteenjäljityksen etuja ja ongelmia 19.4 Satunnaistettu säteenjäljitys 19.5 Säteenjäljityksen nopeuttaminen 19.6 Radiositeettimenetelmä 19.6.1 Pintojen radiositeetin ratkaiseminen 19.6.2 Muototekijän laskeminen 19.6.3 Lisähuomioita radiositeettimenetelmästä 19.7 Fotonikartoitus 20 Mallinnus, animaatio, reaaliaika 20.1 3D-mallit 20.1.1 Hierarkiset mallit 20.1.2 3D-mallien tuottaminen 20.1.3 3D-mallien tiedostomuodot 20.2 Animaatio 20.2.1 Kulmapiste-interpolointi ja luurankomallit 20.2.2 Käänteinen kinematiikka 20.3 Interaktiiviset ja reaaliaikaiset 3D-sovellukset