3D-renderöinti OpenGL-ohjelmointirajapinnalla
|
|
- Marika Hiltunen
- 8 vuotta sitten
- Katselukertoja:
Transkriptio
1 Mikko Kemppainen 3D-renderöinti OpenGL-ohjelmointirajapinnalla Tietotekniikan kandidaatintutkielma 28. huhtikuuta 2017 Jyväskylän yliopisto Tietotekniikka
2 Tekijä: Mikko Kemppainen Yhteystiedot: Ohjaaja: Marjaana Nokka Työn nimi: 3D-renderöinti OpenGL-ohjelmointirajapinnalla Title in English: 3D-rendering with OpenGL Työ: Kandidaatintutkielma Suuntautumisvaihtoehto: Tietotekniikka Sivumäärä: 23+0 Tiivistelmä: 3D-tietokonegrafiikalla on lukuisia käyttökohteita esimerkiksi mallintamisessa, animaatioissa ja peleissä. Vähänkään vaativampi 3D-renderöinti suoritetaan yleensä näytönohjaimen avulla. Tässä tutkielmassa selvitetään, miten 3D-renderöinti tapahtuu käyttäen Open Graphics Library -rajapintaa. Moderneissa OpenGL:n versioissa grafiikkaa ohjelmoidaan niin kutsuttujen varjostinohjelmien avulla. Tässä tutkielmassa esitellään varjostimien ohjelmoinnin periaatteet ja niiden ohjelmointiin käytettävän ohjelmointikielen OpenGL Shading Languagen käyttö. Tutkielma on toteutettu kirjallisuuskatsauksena ja lähteinä on käytetty pääasiassa konferenssijulkaisuja ja varsinkin OpenGL:n kotisivuilla suositeltuja kirjoja. Avainsanat: OpenGL, renderöinti, GLSL, tietokonegrafiikka Abstract: 3D-graphics have numerous uses, such as in modeling, animation and games. All demanding graphics prosessing is usually done with a dedicated graphics processing unit. In this thesis we will find out how 3D rendering works using Open Graphics Library. Modern OpenGL versions use programmable shaders for graphics programming. In this thesis we will introduce the fundamentals of shader programming and the use of OpenGL Shading Language that is used for programming them. This thesis is conducted as a literary review that mostly uses conference publications and particularly books recommended on the home page of OpenGL. Keywords: OpenGL, rendering, GLSL, computer graphics i
3 Mikko Kemppainen ii
4 Kuviot Kuvio 1. Kolmioviuhka (Shreiner ym. 2013)... 6 Kuvio 2. Piirtoliukuhihna... 9 iii
5 Sisältö 1 JOHDANTO OPENGL:N KEHITYS OPENGL-OHJELMOINTI Datapuskurit ja primitiivit GLSL-kieli Varjostimien kääntäminen Erityismuuttujat PIIRTOLIUKUHIHNA Verteksivarjostin ja koordinaatistot Tesselaatio- ja geometriavarjostin Primitiivien leikkaus, poisto ja rasterointi Fragmenttivarjostin ja pikselioperaatiot VARJOSTUS Phong-valaistusmalli Valonlähteiden tyypit Tekstuurit YHTEENVETO LÄHTEET iv
6 1 Johdanto Tämän tutkielman tavoitteena on selvittää, miten 3D-renderöinti modernin näytönohjaimen avulla tapahtuu käyttäen Open Graphics Library -rajapintaa. 3D-renderöinti eli kolmiulotteinen piirtäminen tarkoittaa prosessia, jossa kolmiulotteisesta virtuaalimaisemasta muodostetaan kaksiulotteinen kuva. Näyttö on pohjimmiltaan kaksiulotteinen, joten 3D-maisemalle pitää tehdä erinäisiä transformaatioita, jotta siitä saa muodostettua vakuuttavan kaksiulotteisen kuvan, jonka voi piirtää näytölle. Tapoja esittää ja piirtää 3D-maisemia on useita. Yleisimmin käytetty tapa on polygonipohjainen renderöinti, jota myös OpenGL käyttää. Polygonipohjaisessa renderöinnissä 3D-maisema mallinnetaan polygoniverkon avulla. Verkko sitten rasteroidaan, eli muutetaan pikseleiksi. Muita tapoja renderöidä ovat esimerkiksi säteenseuranta (ray tracing) ja vokselipohjainen renderöinti. Open Graphics Library eli OpenGL on Chronos Groupin hallinnoima avoin standardi ja alan eniten käytetty 2D- ja 3D-grafiikkaohjelmointirajapinta (Chronos Group 2017b). OpenGL toimii muun muassa Windows, Linux ja macos käyttöjärjestelmissä. OpenGL for Embedded Systems (OpenGL ES) on OpenGL:n versio, joka on suunniteltu sulautettuihin järjestelmiin ja sitä käytetään varsinkin älypuhelimissa. Web Graphics Library (WebGL), on javascriptrajapinta, joka on läheisesti yhdenmukainen OpenGL ES -rajapinnan kanssa ja toimii useimmissa verkkoselaimissa. Kaikki edellä mainitut rajapinnat poikkeavat toisistaan vain vähän, joten samankaltaisella rajapinnalla voidaan tuottaa grafiikkaa, joka toimii lukuisissa eri kohteissa. Muita grafiikkaohjelmointirajapintoja ovat esimerkiksi Windowsissa toimiva Direct3D ja Applen käyttöjärjestelmissä toimiva Metal. Näiden rajapintojen käyttö on sidottu käyttöjärjestelmään, joten niiden käyttö on rajattua sovelluksissa, jotka tähtäävät toimintaan useissa eri laitteissa. Chronos Groupin kehittämä Vulkan on myös laitteistoriippumaton rajapinta, jota pidetään OpenGL:n seuraajana. Se ei kuitenkaan soveltuisi erityisen hyvin kirjallisuuskatsauksen aiheeksi, koska se julkaistiin vasta 2016 helmikuussa, eikä siitä ole siten vielä kovin paljoa kirjallisuutta. Näistä syistä tämän tutkielman aiheena on OpenGL-rajapinta, eikä jokin edellä mainituista. 1
7 Grafiikkaa tuotetaan OpenGL:n avulla ohjelmoimalla varjostimia (shaders). Varjostimet ovat ohjelmia, joita ajetaan näytönohjaimessa. Yleensä kun puhutaan varjostamisesta, syntyy mielikuva siitä efektistä, joka syntyy, kun valonlähteen edessä on kappale ja pintaan osuu sen takia vähemmän valoa. Kun tässä tutkielmassa puhutaan varjostamisesta, sillä tarkoitetaan pikselien värien muuttamista valonlähteiden ja pinnan materiaalien ja muiden mahdollisten ominaisuuksien perusteella, eikä pelkästään värien tummentamista varjojen vaikutuksesta. Varjostimia ohjelmoidaan käyttämällä OpenGL:n varjostuskieltä nimeltä OpenGL Shading Language, josta käytetään lyhennettä GLSL. GLSL-kielestä kerrotaan tarkemmin luvussa 3.2. Grafiikan piirtämisessä on monia vaiheita ja niitä voidaan suorittaa samanaikaisesti. Tästä syystä piirtämiseen liittyviä peräkkäisiä vaiheita voidaankin kutsua yhdessä piirtoliukuhihnaksi. Sisääntulona OpenGL:lle on 3D-data, joka kuvaa geometriaa, jota halutaan piirtää ja ulostulona on kuva piirretystä maisemasta. Perustavaa grafiikkaprosessoinnissa on rinnakkaisuus. Primitiivit, verteksit ja pikselifragmentit ovat helposti rinnakkaistettavissa piirtoliukuhihnan jokaisessa vaiheessa. Esimerkiksi kolmion kukin verteksi voidaan prosessoida rinnakkain, kaksi kolmiota voidaan prosessoida rinnakkain ja kolmion jokainen pikselifragmentti voidaan prosessoida rinnakkain. (Blythe 2008) Tämän vuoksi näytönohjaimet ovatkin kehittyneet sellaisiksi kuin ne ovat eli erittäin tehokkaiksi rinnakkaislaskennassa. Seuraavassa luvussa kerrotaan, miten OpenGL ja näytönohjaimet ovat kehittyneet vuosien varrella. Luvussa 3 kerrotaan OpenGL-ohjelmoinnin tärkeimmät periaatteet ja varjostimien ohjelmointikielestä GLSL:stä. Luvussa 4 kuvaillaan tarkemmin piirtoliukuhihnassa olevia vaiheita ja mitä niillä voidaan tehdä. Luvussa 5 kerrotaan vielä jonkin verran varjostustekniikoista. Lopuksi esitetään johtopäätökset, joissa kerrotaan varsinkin OpenGL:n tulevaisuuden näkymistä. 2
8 2 OpenGL:n kehitys Näytönohjaimet ovat kehittyneet huimasti siitä, kun ne ensimmäisen kerran ilmaantuivat. Suorituskyvyn kehittymisen lisäksi näytönohjaimen arkkitehtuuri ja tapa piirtää ovat muuttuneet. OpenGL on myös luonnollisesti joutunut kehittymään ja muuttumaan sen mukaan, mitä ominaisuuksia näytönohjaimissa oli tarjolla. Ensimmäinen versio OpenGL:stä julkaistiin 1994 ja se implementoi kiinteän piirtoliukuhihnan (fixed-function pipeline). Kiinteässä piirtoliukuhihnassa kaikki mahdolliset operaatiot on määritelty etukäteen, joten ainoa tapa muuttaa ohjelman toimintaa on muuttaa syötteitä. Tämä liukuhihna on perusteena monille seuraaville OpenGL:n versiolle, jotka lisäsivät siihen toiminnallisuutta. (Angel ja Shreiner 2013). Kiinteä piirtoliukuhihna oli hyvin rajoitettu ja tuki vain pientä joukkoa varjostustekniikoita. Lisäksi kullekin varjostintekniikalle täytyi erikseen uhrata huomattava määrä transistoreita. Vastaus näihin ongelmiin oli ohjelmoitava piirtoliukuhihna. (Haines 2006). OpenGL 2.0 lisäsi tuen ohjelmoitaville varjostimille. Käytettävissä olevat varjostimet olivat verteksivarjostin, jonka avulla voi vaikuttaa 3D-geometriaan, ja fragmenttivarjostin, joka pystyy varjostamaan pikseleitä. (Angel ja Shreiner 2013). Ennen OpenGL:n versiota 3.0 ominaisuuksia oltiin vain lisätty, mutta ei koskaan poistettu. OpenGL 3.0 otti käyttöön ominaisuuksien vanhentamismallin, joka määrittelee, miten ominaisuuksia poistetaan OpenGL:stä. Syynä tälle oli, että jotkin vanhat ominaisuudet eivät ole enää yhtä tehokkaita kuin modernimmat metodit. Tämä myös mahdollisti näytönohjaimen paremman suorituskyvyn sekä yksinkertaistamisen. (Angel ja Shreiner 2013). OpenGL 3.1 poisti kiinteän piirtoliukuhihnan sekä muita vähäisempiä ominaisuuksia käytöstä. Poistetut ominaisuudet saa kuitenkin vielä takaisin käyttämällä laajennuksia. OpenGL 3.1 versiossa myös vaaditaan, että kaikki data laitetaan puskuriolioihin, jotka ladataan näytönohjaimen muistiin. Tämä muutos auttoi vähentämään erinäisten systeemiarkkitehtuurien rajoituksien vaikutuksia liittyen näytönohjaimiin. (Angel ja Shreiner 2013). OpenGL 3.2 lisäsi piirtoliukuhihnaan geometriavarjostimen, jonka avulla pystyy manipu- 3
9 loimaan geometrisia primitiivejä. OpenGL 3.2 lisäsi myös kontekstiprofiilit, joiden avulla pystyy helpommin valitsemaan, mitä OpenGL:n ominaisuuksia haluaa käyttää. OpenGL 4.1 lisäsi tuen tesselaatiovarjostimille. Tesselointivaihe koostuu kahdesta varjostimesta: tesselaation hallinta- ja laskentavarjostimesta. (Angel ja Shreiner 2013). Viimeisin OpenGL:n versio on OpenGL 4.5 ja se lisäsi muun muassa suoran pääsyn olioihin ilman, että niitä tarvitsisi sitoa kontekstiin. Tästä on hyötyä varsinkin väliohjelmistoille. OpenGL 4.5 myös paransi vakautta ja lisäsi ominaisuuksia DirectX 11 emulaatiolle. (Chronos Group 2014) 4
10 3 OpenGL-ohjelmointi OpenGL:ää käytetään aina jonkin isäntäkielen, kuten vaikka C++:n avulla. Isäntäkielellä täytyy muun muassa alustaa piirtokonteksti ja ladata 3D-data OpenGL:lle. Varjostimet täytyy myös kääntää ja linkittää. Tässä luvussa tehdään yleiskatsaus OpenGL-ohjelmointiin ja käydään läpi tärkeimmät konseptit. 3.1 Datapuskurit ja primitiivit Kaikki data OpenGL:ssa täytyy tallentaa puskuriolioihin. Niitä tarvitaan useimpiin asioihin, mitä OpenGL:ssä voidaan tehdä. Ensin täytyy luoda uusi puskuriolio, joka on aluksi oletuksena tyhjä. Puskureiden dataa voidaan manipuloida monin tavoin. Data voidaan muun muassa antaa suoraan, osa datasta voidaan korvata tai dataa voidaan generoida OpenGL:n avulla ja tallentaa toisiin puskureihin. (Shreiner ym. 2013). Kun verteksidata on tallennettuna puskuriin, ne voidaan sitten piirtää. Piirrettäessä OpenGL lukee puskurioliosta osan tai kaikki vertekseistä (Shreiner ym. 2013). Piirtämiskomennot käynnistävät sitten piirtoliukuhihnan ja tulos piirretään ruudulle. Kolmiulotteinen maisema mallinnetaan geometristen primitiivien avulla. Primitiivit OpenGL:n kontekstissa tarkoittavat osia, joista kaikki geometria rakentuu. Primitiivit taas koostuvat vertekseistä eli monikulmion kärjistä. Verteksit ovat pisteitä avaruudessa, joilla voi sijainnin lisäksi olla erinäisiä attribuutteja, kuten väri ja pinnan normaali. Verteksit tallennetaan aina datapuskureihin, joista näytönohjain saa ne käyttöönsä. Kun piirtäminen aloitetaan, samalla määritellään, mitä primitiivejä vertekseistä muodostetaan. Primitiivit voivat olla joko pisteitä, viivoja tai kolmioita. Lisäksi on vielä primitiivi nimeltä patch, jota käytetään tesseloinnissa. Tässä tutkielmassa käytetään patch-primitiivistä englanninkielistä nimitystä, koska sille ei löytynyt sopivaa suomenkielistä käännöstä. Tesseloinnista ja patch-primitiiveistä kerrotaan lisää luvussa 4.2. Pisteitä piirrettäessä jokainen verteksi puskurissa vastaa aina yhtä pistettä. Pisteet piirretään oletuksena yhden pikselin kokoisena, mutta niiden kokoa voi muuttaa. Pisteille voidaan käyt- 5
11 tää myös tekstuureja. Viivat voi piirtää joko siten, että kaksi peräkkäistä verteksiä muodostaa aina erillisen viivan tai vertekseistä muodostetaan yhtenäinen viivaketju tai rengas. Viivojen paksuutta voi myös muuttaa. (Shreiner ym. 2013) Kolmioiden piirtämiseen on myös useita vaihtoehtoja. Kolmioita voi piirtää yksinkertaisesti siten, että kolme peräkkäistä verteksiä muodostaa aina oman kolmionsa. Kolmioita voidaan piirtää myös siten, että samat verteksit kuuluvat useampiin kolmioihin. Kolmioketjussa kolme ensimmäistä verteksiä muodostavat kolmion ja jokainen uusi verteksi sen jälkeen muodostaa kolmion kahden edellisen verteksin kanssa. Kolmioviuhkassa ensimmäisen kolmion jälkeen jokainen verteksi yhdistetään ensimmäiseen sekä edelliseen verteksiin, mikä saa aikaan viuhkaa muistuttavan kuvion kolmioista, kuten kuviossa 1 näkyy. (Shreiner ym. 2013) Kuvio 1. Kolmioviuhka (Shreiner ym. 2013) Kolmioille voidaan määritellä etu- sekä takapuoli ja ne voidaan piirtää eri tavalla riippuen siitä, että kumman puolen katsoja näkee. Oletuksena molemmat puolet kuitenkin piirretään samalla tavalla. Ne kolmiot, joiden verteksien esiintymisjärjestys kulkee vastapäivään, osoittavat oletuksena eteenpäin ja myötäpäivään kulkevat taaksepäin. Tämän pystyy tarvittaessa vaihtamaan toisin päin. (Shreiner ym. 2013) Takapintojen poistovaiheessa voidaan takaperin olevat kolmiot valinnaisesti poistaa. Ne usein poistetaan, koska jos kappale on suljettu, taaksepäin osoittavien kolmioiden edessä on aina eteenpäin osoittavia kolmioita. (Sellers, Wright ja Haemel 2015) Suljetuissa kappaleissa takaperin olevia kolmioita ei siis koskaan 6
12 pääse näkemään ja ne poistamalla voidaan säästää prosessointiaikaa. 3.2 GLSL-kieli GLSL-kieltä (OpenGL Shading Language) käytetään varjostimien ohjelmointiin ja se muistuttaa C-ohjelmointikieltä. Käytettävissä ovat muun muassa samanlaiset ehtolauseet ja silmukkarakenteet. Kielessä on myös esiprosessori, joka muistuttaa C-kielen vastaavaa. GLSL määrittelee lisäksi useita uusia datatyyppejä vektoreille ja matriiseille. (Shreiner ym. 2013) Varjostimien kääntäminen Varjostimien tekeminen OpenGL-ohjelmaan muistuttaa käännettävien ohjelmointikielien, kuten C-ohjelmointikielen käyttämistä. Varjostimia varten täytyy luoda OpenGL-olioita ja liittää ne varjostinohjelmaan. Olioita luodaan useita, koska samoin kuin muissakin ohjelmointikielissä samoja funktioita voidaan käyttää useissa eri paikoissa. (Shreiner ym. 2013) Varjostimien yhteistä toiminnallisuutta ei siten tarvitse kirjoittaa jokaiseen varjostimeen erikseen. Kääntäjä analysoi koodin ja tarkistaa onko siinä virheitä ja kääntää sen sitten OpenGLolioksi. Oliot liitetään sitten varjostinohjelmaan. Lopuksi varjostinohjelma linkitetään ajettavaksi ohjelmaksi. Vielä täytyy tarkistaa, että onnistuiko linkitys, koska linkitysvaiheessa voi olla virheitä. Varjostinta voidaan sen jälkeen käyttää piirtoliukuhihnassa. (Shreiner ym. 2013) Erityismuuttujat Varjostimiin pitää saada jollain tavalla data sisään sekä ulos. Tähän tarkoitukseen on käytettävissä erityiset sisään- ja ulostulomuuttujat sekä uniform-muuttujat. Sisääntulomuuttujat sisältävät tiedon, joka tulee varjostimelle. Ne yhdistävät piirtoliukuhihnan eri vaiheet toisiinsa yhdessä ulostulomuuttujien kanssa. Kaikki varjostimet tekevät joitain asioita syötteillään ja tulokset kirjoitetaan aina ulostulomuuttujiin. Esimerkiksi verteksivarjostimen ulostulona on aina vähintään verteksin sijainti ja yleensä muitakin verteksiattribuutteja. (Rodríguez 2013) 7
13 Uniform-määreellä merkittyjen muuttujien arvo pysyy samana renderöintikerran aikana ja ne ovat käytettävissä piirtoliukuhihnan joka vaiheessa. Niiden avulla saadaan varjostimelle tieto muun muassa valonlähteistä. Ohjelmoitavissa varjostimissa kun ei ole sisäänrakennettua konseptia valonlähteille.(rodríguez 2013). Uniform-muuttujia voidaan muuttaa jokaisella erillisellä renderöintikerralla. Ne voidaan ladata siis uudelleen jokaisen piirtokutsun välissä. Niitä voi käyttää esimerkiksi ajan kulumisen esittämiseen. Esimerkiksi jonkin valonlähteen kirkkautta voidaan muuttaa ajan funktiona. Niitä on pakko käyttää joihinkin asioihin kuten tekstuurien tallentamiseen. 8
14 4 Piirtoliukuhihna 3D-kuvan piirtämisessä on monia vaiheita ja näytönohjaimet ovat kehittyneet piirtämään ne tietyllä tavalla. Nykyään useimpia vaiheita pystytään ohjelmoimaan. Ainoat ohjelmoitavat vaiheet, mitä on pakko määritellä ovat verteksivarjostin ja fragmenttivarjostin. Kuviossa 2 näkyy yksinkertaistettuna näytönohjaimen piirtoliukuhihna, niin kuin OpenGL sen ymmärtää. Tässä luvussa käydään ensin pinnallisesti läpi näytönohjaimen piirtoliukuhihna ja sen jälkeen aliluvuissa kerrotaan piirtoliukuhihnan vaiheista tarkemmin. Kuvio 2. Piirtoliukuhihna Piirtoliukuhihna voidaan jakaa karkeasti kahteen osaan: geometriavaiheeseen, jossa käsitellään 3D-dataa eli verteksejä ja primitiivejä, ja rasterointivaiheeseen, jossa käsitellään fragmentteja eli pikseleitä. Geometriavaiheessa voidaan manipuloida verteksejä ja primitiivejä eri tavoin. Tähän vaiheeseen kuuluvat verteksivarjostin, tesselaatiovarjostin ja geometriavarjostin. Geometriavaiheessa koordinaatit siirretään näytön koordinaatteihin ja geometriasta muodostetaan niin kutsuttu rautalankamalli. Rasterointivaiheessa rautalankamallin kolmioihin luodaan pinnat ja täytetään fragmenteilla. Sitten fragmenttivarjostin prosessoi jokaisen fragmentin ja suorittaa lopullisen varjostuksen. Prosessoidut fragmentit lähetetään sitten ruutupuskuriin, joka piirretään mahdollisesti näy- 9
15 tölle. 4.1 Verteksivarjostin ja koordinaatistot Tyypillisesti 3D-data on määritelty oliokeskisessä koordinaatistossa eli koordinaatiston origon on yleensä olion keskellä tai jossain muussa paikassa, josta sitä on loogista kiertää. Origo ei kuitenkaan yleensä ole kovin kaukana oliosta, koska muutoin transformaatiot aiheuttaisivat samalla turhia siirtymiä. Nämä koordinaatit täytyy muuntaa sellaisiksi, että maisemalla on yksi globaali origo, johon verrattuna kaikki oliot on määritelty. Näitä koordinaatteja kutsutaan maailmakoordinaatistoksi (world space) ja tässä koordinaatistossa tyypillisesti suoritetaan varjostusta.(shreiner ym. 2013; Sellers, Wright ja Haemel 2015) Maailmakoordinaatisto voidaan muuntaa vielä katsojan koordinaatistoon, jossa katsoja (tai kamera) on koordinaatiston origossa. Siitä on hyötyä joissain tilanteissa. Geometriavaiheen lopuksi koordinaattien täytyy olla aina kuvaruutukoordinaatistossa, jossa koordinaatit vastaavat sijainteja näytöllä. Koordinaattien muunnokset suoritetaan kertomalla koordinaatteja muunnosmatriiseilla. (Shreiner ym. 2013; Sellers, Wright ja Haemel 2015) Näistä muunnoksista ja siihen liittyvistä matriisilaskennasta ei tässä tutkielmassa kerrota tarkemmin, koska se on hieman tutkielman rajauksen ulkopuolella. Koordinaattien muutos kuvaruutukoordinaatteihin täytyy suorittaa geometriavaiheen aikana. Tämä ei ole minkään tietyn varjostimen tehtävä, koska tesselaatio- ja geometriavarjostin ovat vapaavalintaisia. Jos tesselaatio- ja geometriavarjostimia ei ole määritelty, se on verteksivarjostimen tehtävä. Verteksivarjostin käsittelee verteksejä yksi kerrallaan. Se ei pysty saamaan tietoa muista vertekseistä, eikä se tiedä primitiiveistä. Sen tehtävänä on ottaa syötteenä yksi verteksi ja antaa ulostulona yksi verteksi. Verteksivarjostin saa syötteeksi sisääntulomuuttujissa verteksiattributteja ja se pystyy käyttämään myös uniform-muuttujia. Yleisimpiä verteksiominaisuuksia ovat tekstuurikoordinaatit, normaalit sekä värit. Koska OpenGL on kehittynyt olemaan mahdollisimman joustava, verteksiattribuutteihin pystyy laittamaan periaatteessa mitä tahansa ominaisuuksia. (Rodríguez 2013) 10
16 4.2 Tesselaatio- ja geometriavarjostin Tesselaatiovarjostin on vapaavalintainen osa piirtoliukuhihnaa. Tesselointi on prosessi, jossa korkeamman tason primitiivi jaetaan pienempiin primitiiveihin, kuten kolmioihin. Tesselaatiota voidaan käyttää muun muassa yksityiskohtien tason (Level of detail) säätämiseen (Gomes ym. 2012). Tesselaatiovaihe on järjestyksessä verteksivarjostimen jälkeen ja se koostuu kahdesta ohjelmoitavasta osasta: tesselaation hallintavarjostimesta ja evaluointivarjostimesta. Niiden välissä on tesselaatiomoottori, joka on kiinteä osa tesselaatiovaihetta. (Sellers, Wright ja Haemel 2015) Tesselaatiovarjostin prosessoi ainoastaan patch-primitiivejä. Jos piirtoliukuhihnalla, jossa on määriteltynä tesselaatiovarjostin, yritetään prosessoida muita primitiivejä kuin patch-primitiivejä, se tuottaa virheen. Samoin syntyy virhe, jos patch-primitiivejä yritetään prosessoida liukuhihnalla, jossa ei ole määriteltynä tesselaatiovarjostinta. (Sellers, Wright ja Haemel 2015; Shreiner ym. 2013; Chronos Group 2017a) Patch-primitiivit ovat yksinkertaisesti listoja vertekseistä. Toisin kuin muista primitiiveistä patch-primitiiveistä ei voida suoraan tietää, että kuinka monta peräkkäistä verteksiä kuuluu samaan primitiiviin. Se täytyy eksplisiittisesti määrätä, kun niitä aletaan piirtämään. (Sellers, Wright ja Haemel 2015; Shreiner ym. 2013; Chronos Group 2017a) Tesselaation hallintavarjostin saa sisääntuloksi patch-primitiivin ja antaa patch-primitiivin myös ulostuloksi. Se pystyy muuttamaan ulostuloprimitiivin verteksien määrää, mutta määrä pitää olla määritetty ohjelman linkitysvaiheessa. Tesselaation hallintavarjostin päättää myös tesselaation määrän, eli moneenko osaan primitiivit jaetaan. Tämä suoritetaan asettamalla attribuutit, jotka määrittävät tesselointitasot. Varjostin ajetaan kerran jokaiselle ulostuloverteksille ja se generoi niille attribuutit ja sijainnit. (Sellers, Wright ja Haemel 2015; Shreiner ym. 2013; Chronos Group 2017a) Seuraavaksi tesselaatiomoottori jakaa tesselaation hallintavarjostimen tuottamat primitiivit pienempiin primitiiveihin määrättyjen tesselaatiotasojen perusteella. Tesselaation evaluointivarjostin ajetaan sitten jokaiselle tuotetulle verteksille ja se määrittää niiden sijainnit ja muut attribuutit. Evaluointivarjostimen tehtävänä on myös siirtää verteksikoordinaatit näytön koordinaatteihin, ellei geometriavarjostinta ole määritelty. (Sellers, Wright ja Haemel 11
17 2015; Shreiner ym. 2013; Chronos Group 2017a) Geometriavarjostin on järjestyksessä tesselaatiovaiheen jälkeen. Geometriavarjostin saa sisääntulona kokonaisia primitiivejä kokoelmana verteksejä. Geometriavarjostin pystyy tuottamaan vaihtelevan määrän verteksejä eli se pystyy poistamaan ja lisäämään verteksejä. Geometriavarjostin pystyy myös muuttamaan primitiivien tyyppejä. Esimerkiksi kolmiot voidaan muuttaa pisteiksi. Se pääsee käsiksi myös tarvittaessa primitiivin viereisiin primitiiveihin. Esimerkiksi geometriavarjostin voi nähdä kolmion sekä viereiset kolme kolmiota eli se näkee parhaimmillaan kuusi verteksiä. (Sellers, Wright ja Haemel 2015; Shreiner ym. 2013) 4.3 Primitiivien leikkaus, poisto ja rasterointi Kolmiulotteisesta maisemasta pystytään näkemään aina vain osa. Piirtämistä näytölle voidaankin verrata kuvan ottamiseen kameralla. Osa maisemasta, jonka kamera näkee on pyramidin muotoinen alue, jonka kärki on kameran linssissä ja laajenee kohti horisonttia. OpenGL leikkaa lisäksi näköalueesta pois liian kaukana ja liian lähellä olevat osat. Erittäin lähellä kameraa olevat kappaleet näyttävät kasvavan äärimmäisen suuriksi ja liian kaukana olevia kappaleita ei kannata piirtää muun muassa suorituskyvyn takia. Tätä leikatun pyramidin muotoista aluetta kutsutaan näköfrustrumiksi. (Shreiner ym. 2013; Sellers, Wright ja Haemel 2015) Kaikki näköfrustrumin ulkopuolelle jäävä geometria poistetaan, koska sitä ei pystytä näkemään ja sen prosessointi pidemmälle olisi turhaa. Osittain frustrumin sisälle jäävät kappaleet leikataan. OpenGL tuottaa uutta geometriaa primitiivien näköfrustrumin sisään jäävästä osasta ja primitiiviä leikkaavasta tasosta. (Shreiner ym. 2013; Sellers, Wright ja Haemel 2015). Rasterointivaiheessa rautalankamallin tasot päällystetään. Verteksien perusteella data muutetaan diskreetiksi 2D-dataksi eli fragmenteiksi. Rasteroija määrittelee, mitkä ruudun pikselit geometria peittää. Rasteroija interpoloi lineaarisesti datan jokaiselle muuttujalle ja lähettää nämä fragmentit fragmenttivarjostimelle. Interpolointi tarkoittaa sitä, että mitä lähempänä fragmentin sijainti on verteksiä, sitä lähempänä fragmentin attribuuttien arvot ovat sen verteksin attribuuttien arvoja. (Shreiner ym. 2013) 12
18 4.4 Fragmenttivarjostin ja pikselioperaatiot Fragmenttivarjostin saa rasteroijalta fragmentit. Se määrittelee fragmenttien lopullisen värin ennen kuin ne piirretään ruutuun (Sellers, Wright ja Haemel 2015). Fragmenttivarjostimessa suoritetaan hienostuneempi varjostus ja voidaan saada aikaan monenlaisia efektejä. Varjostus joka suoritetaan fragmenttivarjostimessa on kuitenkin prosessori-intensiivistä, koska fragmentteja voi syntyä kustakin osasta geometriaa potentiaalisesti miljoonia ja varjostin ajetaan jokaiselle fragmentille erikseen. Luvussa 5 mainitut varjostustekniikat suoritetaan kaikki fragmenttivarjostimessa, ellei toisin mainita. Ennen kuin fragmenttivarjostimen tuottamat fragmentit piirretään ruutupuskuriin, niille voidaan tehdä erinäisiä operaatioita. Fragmentit voidaan poistaa määrittämällä alue, jonka ulkopuolella olevia fragmentteja ei piirretä. Voidaan myös käyttää puskuria, jossa on kullekin pikselille määrätty arvo ja sen mukaan valitaan piirretäänkö fragmentti vai ei. Syvyystestissä fragmentin z-koordinaattia eli etäisyyttä kamerasta verrataan syvyyspuskurissa olevaan arvoon. Syvyyspuskuri sisältää jokaisen pikselin etäisyyden kameraan. Syvyystestissä verrataan fragmentin z-koordinaattia syvyyspuskurissa olevaan arvoon, ja jos fragmentin arvo on pienempi kuin syvyyspuskurissa oleva arvo, se piirretään ruutupuskuriin. Fragmentin väri voidaan myös yhdistää jo ruutupuskurissa olevaan väriin. Värin yhdistämistä voi säätää monin tavoin OpenGL:ssä. (Sellers, Wright ja Haemel 2015) 13
19 5 Varjostus Tapoja valaista on useita, mutta tässä tutkielmassa käsitellään tarkemmin vain Phong mallia. Aikaisemmin käytössä olleessa OpenGL:n kiinteässä piirtohihnassa käytettiin muokattua Phong-mallia. Toinen esimerkki valaistusmalleista on Gouraud-varjostus, joka suoritetaan verteksivarjostimessa. Phong-varjostus on tarkempaa kuin Gouraud, mutta myös prosessoriintensiivisempää, koska se ajetaan jokaiselle fragmentille, kun taas Gouraud-varjostus ajetaan jokaiselle verteksille. 5.1 Phong-valaistusmalli Phong-valaistusmallissa kokonaisvalaistus koostuu kolmesta eri komponentista: ympäristön valosta (ambient), hajaantuvasta valosta (diffuse) ja spekulaarisesta (specular) eli heijastuvasta valosta. Ympäristön valo ei tule erityisesti mistään suunnasta ja edustaa likimääräistä ympäristön valoa. Se voidaan laskea valonlähteiden yhteisvaikutuksena tai laskea etukäteen yhtenä globaalina efektinä. Koska ympäristön valo ei muutu eri primitiivien välillä se voidaan antaa varjostimelle uniform-muuttujalla. (Shreiner ym. 2013) Hajaantuva valo heijastuu pinnasta joka suuntaan (Shreiner ym. 2013). Tämä valaistus on sitä voimakkaampi, mitä suorempaan valo valaisee pintaa. Hajaantuvan valon laskemiseen tarvitaan pinnan normaalia sekä valolahteen sijaintia, mutta ei katsojan sijaintia. Se riippuu myös pinnan väristä. (Shreiner ym. 2013). Hajaantuva valaistus vastaa siis sitä, kun mattapintaista tasoa valaistaan. Spekulaarinen heijastus on valoa, joka heijastuu suoraan pinnasta. Tätä ominaisuutta heijastaa valoa kutsutaan kiiltävyydeksi. Spekulaaristen heijastusten laskemiseen täytyy tietää pinnan ja valonlahteen kulma suhteessa katsojaan. Siihen tarvitaan tieto pinnan normaalista, valonlahteen suunnasta ja katsojan sijainnista.(shreiner ym. 2013) Phong valaistusmallin tekee hyvin mitä se yrittää. Se mallintaa pintojen heijastukset ja hajaantuvan valon ja värit kohtalaisen realistisesti. Siinä on kuitenkin rajoituksensa. Tällä mallilla ei voida mallintaa varjoja, jotka syntyvät kun toinen kappale on valonlahteen edessä. 14
20 Ympäristön valoa ei voida myöskään mallintaa kovin tarkasti. (Shreiner ym. 2013) 5.2 Valonlähteiden tyypit Kaikkein yksinkertaisin tapa valaista on täysin ilman valonlähteitä. Kaikki ei ole kuitenkaan mustaa, vaan vertekseille annetaan värit ja ne interpoloidaan rasteroidessa. Väri voi tulla myös tekstuureista tai materiaalien ominaisuuksista verteksiattribuuttien sijaan. (Shreiner ym. 2013) Jos valonlähde on todella kaukana, siitä tuleva valo voidaan approksimoida olemaan samassa kulmassa jokaiseen tason pisteeseen nähden. Tällaisia valonlähteitä kutsutaan suuntavalonlähteiksi (directional light) ja niiden implementointi on helpompaa ja laskenta on nopeampaa kuin muun tyyppisten valonlähteiden. Tällaisella valonlähteellä voidaan mallintaa esimerkiksi aurinkoa. (Shreiner ym. 2013). Pistevalonlähteet ovat valonlähteitä, jotka ovat maiseman lähellä tai sisällä, kuten lamput tai katuvalot. Pistevalonlähteiden välinen kulma jokaiseen tason pisteeseen on eri, joten niitä ei voida esittää uniform-muuttujilla. Lisäksi valon voimakkuus vähenee siirryttäessä kauemmaksi valonlähteestä. Spottivalo (spotlight) muistuttaa pistevalonlähdettä, mutta sen valokeila on rajattu näkymään vain tietyssä kulmassa. (Shreiner ym. 2013). 5.3 Tekstuurit Tekstuurien voidaan ajatella olevan kuvia, joilla pinnat voidaan päällystää (Shreiner ym. 2013). Niillä voidaan saada helposti pinta näyttämään esimerkiksi puulta. Tekstuureita käytetään fragmenttivarjostimessa pikseleiden värien määrittelemisessä. On myös tekniikoita, joissa tekstuureihin on värien sijaan tallennettuna jotain muuta, kuten esimerkiksi tietoa pinnan normaaleista. (Haines 2006) Moniteksturointi on tekniikka, jossa samalla kertaa käytetään useampaa tekstuuria. Näytönohjain pystyy samalla kertaa laittamaan tasolle monta eri tekstuuria kerralla. On nopeampaa laittaa yhdellä renderöintikerralla monta tekstuuria pinnalle sen sijaan, että laitettaisiin yksittäisiä tekstuureja monessa vaiheessa. Moniteksturoinnilla on monia käyttökohteita: ob- 15
21 jekteihin voi liittää siirtokuvia (decals), ympäristöön saa lisää yksityiskohtia ja niin edelleen.(haines 2006). Epätasaisuuksien teksturointi (bump mapping) on tekniikka, jossa tekstuuriin on tallennettuna värin sijaan pinnan normaali kussakin pisteessä. Tekstuurissa normaalisti olevia RGBväriarvoja nollasta 255:teen vastaavat normaalivektorin koordinaatit -1:stä 1:teen. Esimerkiksi RGB-vektoria (58, 128, 235) vastaa normaalivektori (-0.65, 0.00, 0.84). (Haines 2006). 16
22 6 Yhteenveto Tässä tutkielmassa esiteltiin, mitä on 3D-renderöinti ja miten sitä OpenGL:n tapauksessa ohjelmoidaan. OpenGL:n ohjelmoinnista kerrottiin pääkohdat ja millainen näytönohjaimen piirtoliukuhihna on. Renderöinnin eri vaiheet käytiin läpi ja selvitettiin, mitä niissä voi tehdä. Grafiikkaohjelmoinnissa tarvitsee tietää kohtalaisen paljon lineaari- ja matriisialgebraa, mutta tässä tutkielmassa tämä sivuutettiin ja keskityttiin enemmän grafiikkaohjelmoinnin pääperiaatteisiin. OpenGL on kehittynyt ja muuttunut paljon siitä, kun se aluksi julkaistiin. Sen on täytynyt muuttua näytönohjaimien kehityksen myötä ja lisätä tuki uusille näytönohjaimen ohjelmoitaville osille. OpenGL on yli 20 vuotta vanha, joten sille on kertynyt ominaisuuksia, joita ei nykyaikana ole järkevää käyttää. Vulkanin myötä OpenGL ei ole enää ainoa vaihtoehto laitteistoriippumattomalle grafiikkaohjelmointirajapinnalle. Vulkan, kuten OpenGL:kin, on Khronos Groupin kehittämä ohjelmointirajapinta. Vulkania on jo alettu käyttämään joissain peleissä ja pelimoottoreissa. Tulevaisuudessa Vulkan tulee korvaamaan OpenGL:n osassa käyttökohteista, varsinkin peleissä ja muissa korkeaa suorituskykyä vaativissa kohteissa. Koska Vulkan on matalamman tason ohjelmointirajapinta, sillä pystytään saavuttamaan parempi suorituskyky ja siinä on enemmän mahdollisuuksia optimointiin. OpenGL ei ole kuitenkaan häviämässä minnekään, ainakaan lähiaikoina. Monet sovellukset eivät tarvitse Vulkanin parempaa suorituskykyä, joten niillä ei ole tarvetta luopua OpenGL:stä. Lisäksi OpenGL on korkeamman tason rajapinta, joten sitä on myös helpompi käyttää kuin Vulkania. Jatkotutkimuksen voisi vertailla OpenGL:n ja Vulkanin ja mahdollisesti muiden rajapintojen hyötyjä erilaisissa käyttökohteissa. 17
23 Lähteet Angel, Edward, ja Dave Shreiner An introduction to OpenGL programming. Teoksessa ACM SIGGRAPH 2013 Courses, 3. ACM. Blythe, D Rise of the Graphics Processor. ID: 1, Proceedings of the IEEE 96 (5): doi: /jproc Chronos Group Khronos Group Announces Key Advances in OpenGL Ecosystem. Elokuu. Viitattu 25. huhtikuuta khronos-group-announces-key-advances-in-opengl-ecosystem a. The OpenGL Graphics System: A Specification (Version 4.5 (Core Profile) - October 24, 2016). Maaliskuu. Viitattu 23. maaliskuuta s.org/registry/opengl/specs/gl/glspec45.core.pdf b. The OpenGL homepage. Maaliskuu. Viitattu 23. maaliskuuta htt ps:// Gomes, T., L. Estevo, R. de Toledo ja P. R. Cavalcanti A Survey of GLSL Examples. Teoksessa th SIBGRAPI Conference on Graphics, Patterns and Images Tutorials, ID: 1. doi: /sibgrapi-t Haines, E An introductory tour of interactive rendering. ID: 1, IEEE Computer Graphics and Applications 26 (1): doi: /mcg Rodríguez, Jacobo GLSL Essentials [kielellä English]. ID: Olton, GB: Packt Publishing. ISBN: Sellers, Graham, Richard S. Wright ja Nicholas Haemel OpenGL Superbible: Comprehensive Tutorial and Reference. 7th. Addison-Wesley Professional. ISBN: , Shreiner, Dave, Graham Sellers, John Kessenich ja Bill Licea-Kane OpenGL programming guide: The Official guide to learning OpenGL, version 4.3. Addison-Wesley. 18
Tilanhallintatekniikat
Tilanhallintatekniikat 3D grafiikkamoottoreissa Moottori on projektin osa joka vastaa tiettyjen toiminnallisuuksien hallinnasta hallitsee kaikki vastuualueen datat suorittaa kaikki tehtäväalueen toiminnot
Tietokonegrafiikka. Jyry Suvilehto T Johdatus tietoliikenteeseen ja multimediatekniikkaan kevät 2014
Tietokonegrafiikka Jyry Suvilehto T-110.1100 Johdatus tietoliikenteeseen ja multimediatekniikkaan kevät 2014 1. Sovellusalueita 2. Rasterigrafiikkaa 3. Vektorigrafiikkaa 4. 3D-grafiikkaa 1. Säteenheitto
Luku 6: Grafiikka. 2D-grafiikka 3D-liukuhihna Epäsuora valaistus Laskostuminen Mobiililaitteet Sisätilat Ulkotilat
2D-grafiikka 3D-liukuhihna Epäsuora valaistus Laskostuminen Mobiililaitteet Sisätilat Ulkotilat 2D-piirto 2-ulotteisen grafiikan piirto perustuu yleensä valmiiden kuvien kopioimiseen näyttömuistiin (blitting)
3D-Maailman tuottaminen
hyväksymispäivä arvosana arvostelija 3D-Maailman tuottaminen Eero Sääksvuori Helsinki 11.12.2017 Seminaari HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos HELSINGIN YLIOPISTO HELSINGFORS UNIVERSITET
Luento 7: Lokaalit valaistusmallit
Tietokonegrafiikan perusteet T-111.4300 3 op Luento 7: Lokaalit valaistusmallit Lauri Savioja 11/07 Lokaalit valaistusmallit / 1 Sävytys Interpolointi Sisältö Lokaalit valaistusmallit / 2 1 Varjostustekniikat
Sisällys. T-111.4300 Tietokonegrafiikan perusteet. OpenGL-ohjelmointi 11/2007. Mikä on OpenGL?
T-111.4300 Tietokonegrafiikan perusteet OpenGL-ohjelmointi 11/2007 Sisällys Mikä on OpenGL? historia nykytilanne OpenGL:n toiminta Piirtäminen ja matriisit Muuta hyödyllistä kameran sijoittaminen valaistus
TIES471 Reaaliaikainen renderöinti
TIES471 Reaaliaikainen renderöinti Kotitehtävä 2.3.3 Muistin kaistanleveys Koko kaistanleveyden kustannus: B = d * Zr + o(d) * (Z w + C w + T r ) Lisätään vielä tekstuuri välimuisti (texture cache) vaikutus
T-110.1100 Johdatus tietoliikenteeseen ja multimediatekniikkaan Tietokonegrafiikka
Johdatus tietoliikenteeseen ja multimediatekniikkaan Tietokonegrafiikka Timo Tossavainen Mediatekniikan laitos, Aalto-yliopiston perustieteiden korkeakoulu Timo.Tossavainen@tkk.fi 25.3.2011 Sisältö Historiaa
Tampereen yliopisto Tietokonegrafiikka 2013 Tietojenkäsittelytiede Harjoitus
Tampereen yliopisto Tietokonegrafiikka 201 Tietojenkäsittelytiede Harjoitus 6 1..201 1. Tarkastellaan Gouraudin sävytysmallia. Olkoon annettuna kolmio ABC, missä A = (0,0,0), B = (2,0,0) ja C = (1,2,0)
Luento 3: 3D katselu. Sisältö
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
T Tietokonegrafiikan perusteet. OpenGL-ohjelmointi
T-111.4300 Tietokonegrafiikan perusteet OpenGL-ohjelmointi Id Softwaren huhtikuussa 2004 julkaisema Doom 3 -peli käyttää OpenGL-kirjastoa. Sisällys Mikä on OpenGL? historia nykytilanne OpenGL:n toiminta
5. Grafiikkaliukuhihna: (1) geometriset operaatiot
5. Grafiikkaliukuhihna: () geometriset operaatiot Johdanto Grafiikkaliukuhihnan tarkoitus on kuvata kolmiulotteisen kohdeavaruuden kuva kaksiulotteiseen kuva eli nättöavaruuteen. aikka kolmiulotteisiakin
Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo
Concurrency - Rinnakkaisuus Group: 9 Joni Laine Juho Vähätalo Sisällysluettelo 1. Johdanto... 3 2. C++ thread... 4 3. Python multiprocessing... 6 4. Java ExecutorService... 8 5. Yhteenveto... 9 6. Lähteet...
Luento 6: Piilopinnat ja Näkyvyys
Tietokonegrafiikan perusteet T-111.4300 3 op Luento 6: Piilopinnat ja Näkyvyys Janne Kontkanen Geometrinen mallinnus / 1 Johdanto Piilopintojen poisto-ongelma Syntyy kuvattaessa 3-ulotteista maailmaa 2-ulotteisella
TIES471 Reaaliaikainen renderöinti
TIES471 Reaaliaikainen renderöinti 5.1 Valonlähteet Yksinkertaisin valolähde on pistemäinen valo (point light), joka säteilee joka suuntaan annetulla voimakkuudella ja värillä. Suunnattu valo (directional
ELM GROUP 04. Teemu Laakso Henrik Talarmo
ELM GROUP 04 Teemu Laakso Henrik Talarmo 23. marraskuuta 2017 Sisältö 1 Johdanto 1 2 Ominaisuuksia 2 2.1 Muuttujat ja tietorakenteet...................... 2 2.2 Funktiot................................
Visualisoinnin perusteet
1 / 12 Digitaalisen arkkitehtuurin yksikkö Aalto-yliopisto Visualisoinnin perusteet Mitä on renderöinti? 2 / 12 3D-mallista voidaan generoida näkymiä tietokoneen avulla. Yleensä perspektiivikuva Valon
Pong-peli, vaihe Koordinaatistosta. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 2/7. Tämän vaiheen aikana
Muilla kielillä: English Suomi Pong-peli, vaihe 2 Tämä on Pong-pelin tutoriaalin osa 2/7. Tämän vaiheen aikana Laitetaan pallo liikkeelle Tehdään kentälle reunat Vaihdetaan kentän taustaväri Zoomataan
T-111.4310 Vuorovaikutteinen tietokonegrafiikka Tentti 14.12.2011
T-111.4310 Vuorovaikutteinen tietokonegrafiikka Tentti 14.12.2011 Vastaa kolmeen tehtävistä 1-4 ja tehtävään 5. 1. Selitä lyhyesti mitä seuraavat termit tarkoittavat tai minkä ongelman algoritmi ratkaisee
Yksinkertaistaminen normaalitekstuureiksi
TEKNILLINEN KORKEAKOULU 30.4.2003 Tietoliikenneohjelmistojen ja multimedian laboratorio Tik-111.500 Tietokonegrafiikan seminaari Kevät 2003: Reaaliaikainen 3D grafiikka Yksinkertaistaminen normaalitekstuureiksi
Peilaus pisteen ja suoran suhteen Pythonin Turtle moduulilla
Peilaus pisteen ja suoran suhteen Pythonin Turtle moduulilla ALKUHARJOITUS Kynän ja paperin avulla peilaaminen koordinaatistossa a) Peilaa pisteen (0,0) suhteen koordinaatistossa sijaitseva - neliö, jonka
Esityksen sisältö. Peruskäsitteitä. 3D Grafiikka tietokonepeleissä. Piirto- ja taustapuskuri
Esityksen sisältö 3D Grafiikka tietokonepeleissä Peruskäsitteitä Korkean tason rakenne Piirron alkeisobjektit Tekstuurit Valotus Laitteistopiirtoliukuhihna Yhteenveto Peruskäsitteitä Piirto- ja taustapuskuri
Lauseen erikoistapaus on ollut kevään 2001 ylioppilaskirjoitusten pitkän matematiikan kokeessa seuraavassa muodossa:
Simo K. Kivelä, 13.7.004 Frégier'n lause Toisen asteen käyrillä ellipseillä, paraabeleilla, hyperbeleillä ja niiden erikoistapauksilla on melkoinen määrä yksinkertaisia säännöllisyysominaisuuksia. Eräs
Anssi Höykinpuro OPENGL ES VARJOSTIMET KAJAK3D PELIMOOTTORISSA
Anssi Höykinpuro OPENGL ES VARJOSTIMET KAJAK3D PELIMOOTTORISSA Opinnäytetyö Kajaanin ammattikorkeakoulu Luonnontieteet Tietojenkäsittely Syksy 2010 OPINNÄYTETYÖ TIIVISTELMÄ Koulutusala Luonnontieteet Koulutusohjelma
Reaaliaikainen karvapeitteen piirtäminen näytönohjaimella
Reaaliaikainen karvapeitteen piirtäminen näytönohjaimella Jussi Kekäläinen Pro gradu -tutkielma Tietojenkäsittelytieteen laitos Tietojenkäsittelytiede Tammikuu 2016 ITÄ-SUOMEN YLIOPISTO, Luonnontieteiden
Suorat ja tasot, L6. Suuntajana. Suora xy-tasossa. Suora xyzkoordinaatistossa. Taso xyzkoordinaatistossa. Tason koordinaattimuotoinen yhtälö.
Suorat ja tasot, L6 Suora xyz-koordinaatistossa Taso xyz-koordinaatistossa stä stä 1 Näillä kalvoilla käsittelemme kolmen laisia olioita. Suora xyz-avaruudessa. Taso xyz-avaruudessa. Emme nyt ryhdy pohtimaan,
Taso 1/5 Sisältö ESITIEDOT: vektori, koordinaatistot, piste, suora
Taso 1/5 Sisältö Taso geometrisena peruskäsitteenä Kolmiulotteisen alkeisgeometrian peruskäsitteisiin kuuluu taso pisteen ja suoran lisäksi. Intuitiivisesti sitä voidaan ajatella joka suunnassa äärettömyyteen
4.1 Kaksi pistettä määrää suoran
4.1 Kaksi pistettä määrää suoran Kerrataan aluksi kurssin MAA1 tietoja. Geometrisesti on selvää, että tason suora on täysin määrätty, kun tunnetaan sen kaksi pistettä. Joskus voi tulla vastaan tilanne,
Pong-peli, vaihe Aliohjelman tekeminen. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 3/7. Tämän vaiheen aikana
Muilla kielillä: English Suomi Pong-peli, vaihe 3 Tämä on Pong-pelin tutoriaalin osa 3/7. Tämän vaiheen aikana Jaetaan ohjelma pienempiin palasiin (aliohjelmiin) Lisätään peliin maila (jota ei voi vielä
9. Vektorit. 9.1 Skalaarit ja vektorit. 9.2 Vektorit tasossa
9. Vektorit 9.1 Skalaarit ja vektorit Skalaari on koon tai määrän mitta. Tyypillinen esimerkki skalaarista on massa. Lukumäärä on toinen hyvä esimerkki skalaarista. Vektorilla on taas suuruus ja suunta.
Luento 6: Geometrinen mallinnus
Tietokonegrafiikan perusteet T-111.4300 3 op Luento 6: Geometrinen mallinnus Lauri Savioja, Janne Kontkanen 11/2007 Geometrinen mallinnus / 1 Sisältö Mitä on geometrinen mallinnus tietokonegrafiikassa
3D-grafiikkamoottorin toteutus
Anssi Seppä 3D-grafiikkamoottorin toteutus Metropolia Ammattikorkeakoulu Insinööri (AMK) Tietotekniikka Insinöörityö 24.4.2018 Tiivistelmä Tekijä(t) Otsikko Sivumäärä Aika Anssi Seppä 3D-grafiikkamoottorin
BM20A5800 Funktiot, lineaarialgebra ja vektorit Harjoitus 4, Syksy 2016
BM20A5800 Funktiot, lineaarialgebra ja vektorit Harjoitus 4, Syksy 2016 1. Hahmottele karkeasti funktion f : R R 2 piirtämällä sen arvoja muutamilla eri muuttujan arvoilla kaksiulotteiseen koordinaatistoon
Paretoratkaisujen visualisointi. Optimointiopin seminaari / Kevät 2000 Esitelmä 11 Petteri Kekäläinen 45305L
Paretoratkaisujen visualisointi Optimointiopin seminaari / Kevät 2000 Esitelmä 11 Petteri Kekäläinen 45305L 1. Johdanto Monitavoiteoptimointitehtävät ovat usein laajuutensa takia vaikeasti hahmotettavia
Kenguru 2013 Cadet (8. ja 9. luokka)
sivu 1 / 7 NIMI LUOKKA Pisteet: Kenguruloikan pituus: Irrota tämä vastauslomake tehtävämonisteesta. Merkitse tehtävän numeron alle valitsemasi vastausvaihtoehto. Väärästä vastauksesta saat miinuspisteitä
Monikulmiot 1/5 Sisältö ESITIEDOT: kolmio
Monikulmiot 1/5 Sisältö Monikulmio Monikulmioksi kutsutaan tasokuviota, jota rajaa perättäisten janojen muodostama monikulmion piiri. Janat ovat monikulmion sivuja, niiden päätepisteet monikulmion kärkipisteitä.
TIE PRINCIPLES OF PROGRAMMING LANGUAGES Eiffel-ohjelmointikieli
TIE-20306 PRINCIPLES OF PROGRAMMING LANGUAGES Eiffel-ohjelmointikieli Seminaariesitelmä ryhmä 24 Markku Ahokas Jani Kuitti i SISÄLLYSLUETTELO 1. YLEISTÄ EIFFELISTÄ... 1 1.1 Historia ja tausta... 1 1.2
Renderöintimoottorin toteutus
Jarno Ruuskanen Renderöintimoottorin toteutus Metropolia Ammattikorkeakoulu Insinööri (AMK) Tietotekniikka Insinöörityö 9.5.2016 Tiivistelmä Tekijä(t) Otsikko Sivumäärä Aika Jarno Ruuskanen Renderöintimoottorin
Vektorien pistetulo on aina reaaliluku. Esimerkiksi vektorien v = (3, 2, 0) ja w = (1, 2, 3) pistetulo on
13 Pistetulo Avaruuksissa R 2 ja R 3 on totuttu puhumaan vektorien pituuksista ja vektoreiden välisistä kulmista. Kuten tavallista, näiden käsitteiden yleistäminen korkeampiulotteisiin avaruuksiin ei onnistu
VARJOSTINOHJELMIEN KÄYTTÖÖN PERUSTUVAN REAALIAIKAISEN GRAFIIKAN OHJELMOINTI
Sauli Korhonen VARJOSTINOHJELMIEN KÄYTTÖÖN PERUSTUVAN REAALIAIKAISEN GRAFIIKAN OHJELMOINTI JYVÄSKYLÄN YLIOPISTO TIETOJENKÄSITTELYTIETEIDEN LAITOS 2013 TIIVISTELMÄ Korhonen, Sauli Varjostinohjelmien käyttöön
Kenguru 2016 Student lukiosarja
sivu 1 / 9 NIMI LUOKKA Pisteet: Kenguruloikan pituus: Irrota tämä vastauslomake tehtävämonisteesta. Merkitse tehtävän numeron alle valitsemasi vastausvaihtoehto. Väärästä vastauksesta saat miinuspisteitä
Digitaalisen arkkitehtuurin alkeet
1 / 18 Digitaalisen arkkitehtuurin yksikkö Aalto-yliopisto Digitaalisen arkkitehtuurin alkeet Miten tehdä mallin loppuosat? 2 / 18 Patch on helppo tehdä sisäosille, mutta alueen rajan ja korkeuskäyrien
Luento 10: Näkyvyystarkastelut ja varjot. Sisältö
Tietokonegrafiikka / perusteet T-111.300/301 4 ov / 2 ov Luento 10: Näkyvyystarkastelut ja varjot Marko Myllymaa / Lauri Savioja 10/04 Näkyvyystarkastelut ja varjot / 1 Näkyvyystarkastelu Solurenderöinti
Tarvikkeet: A5-kokoisia papereita, valmiiksi piirrettyjä yksinkertaisia kuvioita, kyniä
LUMATE-tiedekerhokerta, suunnitelma AIHE: OHJELMOINTI 1. Alkupohdinta: Mitä ohjelmointi on? Keskustellaan siitä, mitä ohjelmointi on (käskyjen antamista tietokoneelle). Miten käskyjen antaminen tietokoneelle
Liikkuva-sovellusprojekti
Liikkuva-sovellusprojekti Joel Kivelä Erkki Koskenkorva Mika Lehtinen Oskari Leppäaho Petri Partanen Vaatimusmäärittely Julkinen Versio 010 1322014 Jyväskylän yliopisto Tietotekniikan laitos Jyväskylä
Riemannin pintojen visualisoinnista
Riemannin pintojen visualisoinnista eli Funktioiden R R kuvaajat Simo K. Kivelä 7.7.6 Tarkastelun kohteena olkoon kompleksimuuttujan kompleksiarvoinen funktio f : C C, f(z) = w eli f(x + iy) = u(x, y)
Tampereen yliopisto Tietokonegrafiikka 2013 Tietojenkäsittelytiede Harjoitus
Tampereen yliopisto Tietokonegrafiikka 2013 Tietojenkäsittelytiede Harjoitus 2 7.2.2013 1. Matematiikan lukiokurssissa on esitetty, että ylöspäin aukeavan paraabelin f(x) = ax 2 +bx+c,a > 0,minimikohtasaadaan,kunf
1. Otetaan perusjoukoksi X := {0, 1, 2, 3, 4, 5, 6, 7}. Piirrä seuraaville kolmelle joukolle Venn-diagrammi ja asettele alkiot siihen.
Joukko-oppia Matematiikan mestariluokka, syksy 2010 Harjoitus 1, vastaukset 20.2.2010 1. Otetaan perusjoukoksi X := {0, 1, 2, 3, 4, 5, 6, 7}. Piirrä seuraaville kolmelle joukolle Venn-diagrammi asettele
Kenguru 2012 Junior sivu 1 / 8 (lukion 1. vuosi)
Kenguru 2012 Junior sivu 1 / 8 Nimi Ryhmä Pisteet: Kenguruloikan pituus: Irrota tämä vastauslomake tehtävämonisteesta. Merkitse tehtävän numeron alle valitsemasi vastausvaihtoehto. Väärästä vastauksesta
Yhtälöryhmä matriisimuodossa. MS-A0007 Matriisilaskenta. Tarkastellaan esimerkkinä lineaarista yhtälöparia. 2x1 x 2 = 1 x 1 + x 2 = 5.
2. MS-A000 Matriisilaskenta 2. Nuutti Hyvönen, c Riikka Kangaslampi Matematiikan ja systeemianalyysin laitos Aalto-yliopisto 2..205 Tarkastellaan esimerkkinä lineaarista yhtälöparia { 2x x 2 = x x 2 =
11/20: Konepelti auki
Ohjelmointi 1 / syksy 2007 11/20: Konepelti auki Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007 p.1/11 Tämän luennon
Alkuraportti. LAPPEENRANNAN TEKNILLINEN YLIOPISTO TIETOJENKÄSITTELYN LAITOS CT10A4000 - Kandidaatintyö ja seminaari
LAPPEENRANNAN TEKNILLINEN YLIOPISTO TIETOJENKÄSITTELYN LAITOS CT10A4000 - Kandidaatintyö ja seminaari Alkuraportti Avoimen lähdekoodin käyttö WWW-sovelluspalvelujen toteutuksessa Lappeenranta, 30.3.2008,
Ohjelmointi 1. Kumppanit
Ohjelmointi 1 Kumppanit November 20, 2012 2 Contents 1 Mitä ohjelmointi on 7 2 Ensimmäinen C#-ohjelma 9 2.1 Ohjelman kirjoittaminen......................... 9 A Liite 11 3 4 CONTENTS Esipuhe Esipuhe 5
Graikka yleisesti tietokonepeleissä
Graikka yleisesti tietokonepeleissä Mikko Heilimo Helsinki 22.2.2006 Seminaaritutkielma HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos HELSINGIN YLIOPISTO HELSINGFORS UNIVERSITET UNIVERSITY OF HELSINKI
2.2. Kohteiden konstruktiivinen avaruusgeometrinen esitys
.. Kohteiden konstruktiivinen avaruusgeometrinen esitys Avaruusgeometrinen esitys on käyttäjäriippuvainen ja vaati erikoismenetelmiä tai lopuksi konversion monikulmiomalliksi. Se on korkean tason esitys
10.2. Säteenjäljitys ja radiositeettialgoritmi. Säteenjäljitys
10.2. Säteenjäljitys ja radiositeettialgoritmi Säteenjäljitys Säteenjäljityksessä (T. Whitted 1980) valonsäteiden kulkema reitti etsitään käänteisessä järjestyksessä katsojan silmästä takaisin kuvaan valolähteeseen
Luento 6: Tulostusprimitiivien toteutus
Tietokonegrafiikan perusteet T-111.4300 3 op Luento 6: Tulostusprimitiivien toteutus Lauri Savioja 11/07 Primitiivien toteutus / 1 ntialiasointi Fill-algoritmit Point-in-polygon Sisältö Primitiivien toteutus
Valokuvien matematiikkaa
Valokuvien matematiikkaa Avainsanat: valokuva, pikseli, päättely Luokkataso: 3.-5. luokka, 6.-9. luokka, lukio, yliopisto Välineet: Kynä, tehtävämonisteet (liitteenä), mahdollisiin jatkotutkimuksiin tietokone
Kenguru 2015 Ecolier (4. ja 5. luokka)
sivu 1 / 13 NIMI LUOKKA Pisteet: Kenguruloikan pituus: Irrota tämä vastauslomake tehtävämonisteesta. Merkitse tehtävän numeron alle valitsemasi vastausvaihtoehto. Väärästä vastauksesta saat miinuspisteitä
Rinnakkaisuuden hyväksikäyttö peleissä. Paula Kemppi
Rinnakkaisuuden hyväksikäyttö peleissä Paula Kemppi 24.4.2008 Esityksen rakenne Johdantoa Rinnakkaisuus Pelimoottorien rinnakkaisuuden mallit Funktionaalisen rinnakkaisuuden malli Rinnakkaisen tiedon malli
Scratch ohjeita. Perusteet
Perusteet Scratch ohjeita Scratch on graafinen ohjelmointiympäristö koodauksen opetteluun. Se soveltuu hyvin alakouluista yläkouluunkin asti, sillä Scratchin käyttömahdollisuudet ovat monipuoliset. Scratch
Dataorientoituneen renderöijän toteuttaminen OpenGL:llä
Meri Rekiranta Dataorientoituneen renderöijän toteuttaminen OpenGL:llä Metropolia Ammattikorkeakoulu Insinööri (AMK) Tietotekniikan koulutusohjelma Insinöörityö 24.4.2012 Tiivistelmä Tekijä(t) Otsikko
Tietotekniikan valintakoe
Jyväskylän yliopisto Tietotekniikan laitos Tietotekniikan valintakoe 2..22 Vastaa kahteen seuraavista kolmesta tehtävästä. Kukin tehtävä arvostellaan kokonaislukuasteikolla - 25. Jos vastaat useampaan
815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset
815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 3 vastaukset Harjoituksen aiheena ovat imperatiivisten kielten muuttujiin liittyvät kysymykset. Tehtävä 1. Määritä muuttujien max_num, lista,
Tässä osassa ei käytetä laskinta. Selitä päätelmäsi lyhyesti tai perustele ratkaisusi laskulausekkeella, kuviolla tms.
OSA 1 Ratkaisuaika 30 min Pistemäärä 20 Tässä osassa ei käytetä laskinta. Selitä päätelmäsi lyhyesti tai perustele ratkaisusi laskulausekkeella, kuviolla tms. 1. Mikä on suurin kokonaisluku, joka toteuttaa
Muuttujien määrittely
Tarja Heikkilä Muuttujien määrittely Määrittele muuttujat SPSS-ohjelmaan lomakkeen kysymyksistä. Harjoitusta varten lomakkeeseen on muokattu kysymyksiä kahdesta opiskelijoiden tekemästä Joupiskan rinneravintolaa
CUDA. Moniydinohjelmointi 17.4.2012 Mikko Honkonen
CUDA Moniydinohjelmointi 17.4.2012 Mikko Honkonen Yleisesti Compute Unified Device Architecture Ideana GPGPU eli grafiikkaprosessorin käyttö yleiseen laskentaan. Nvidian täysin suljetusti kehittämä. Vuoden
keskenään isomorfiset? (Perustele!) Ratkaisu. Ovat. Tämän näkee indeksoimalla kärjet kuvan osoittamalla tavalla: a 1 b 3 a 5
Johdatus diskreettiin matematiikkaan Harjoitus 6, 21.10.2015 1. Ovatko verkot keskenään isomorfiset? (Perustele!) Ratkaisu. Ovat. Tämän näkee indeksoimalla kärjet kuvan osoittamalla tavalla: a 2 b 4 a
MS-A0003/A0005 Matriisilaskenta Laskuharjoitus 1 / vko 44
MS-A0003/A0005 Matriisilaskenta Laskuharjoitus / vko Tehtävä (L): Käynnistä Matlab-ohjelma ja kokeile laskea sillä muutama peruslaskutoimitus: laske jokin yhteen-, vähennys-, kerto- ja jakolasku. Laske
4. Esittäminen ja visualisointi (renderöinti)
4. Esittäminen ja visualisointi (renderöinti) Tutkitaan erilaisia renderöintimenetelmiä, joita käytetään luvuissa 2 ja 3 esitettyjen kuvien esitysmuotojen visualisointiin. Seuraavassa selvitetään: (1)
Matriisilaskenta Laskuharjoitus 1 - Ratkaisut / vko 37
Matriisilaskenta Laskuharjoitus 1 - Ratkaisut / vko 37 Tehtävä 1: Käynnistä Matlab-ohjelma ja kokeile laskea sillä muutama peruslaskutoimitus: laske jokin yhteen-, vähennys-, kerto- ja jakolasku. Laske
Arkkitehtuurikuvaus. Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy. Ryhmä 14
Arkkitehtuurikuvaus Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy Ryhmä 14 Muutoshistoria Versio Pvm Päivittäjä Muutos 0.4 1.11.2007 Matti Eerola 0.3 18.10.2007 Matti Eerola 0.2
Alkuraportti. LAPPEENRANNAN TEKNILLINEN YLIOPISTO TIETOJENKÄSITTELYN LAITOS Ti Kandidaatintyö ja seminaari
LAPPEENRANNAN TEKNILLINEN YLIOPISTO TIETOJENKÄSITTELYN LAITOS Ti5004000 - Kandidaatintyö ja seminaari Alkuraportti Avoimen lähdekoodin käyttö WWW-sovelluspalvelujen toteutuksessa Lappeenranta, 4.6.2007,
Oppimistavoitematriisi
Oppimistavoitematriisi Lineaarialgebra ja matriisilaskenta I Esitiedot Arvosanaan 1 2 riittävät Arvosanaan 3 4 riittävät Arvosanaan 5 riittävät Yhtälöryhmät (YR) Osaan ratkaista ensimmäisen asteen yhtälöitä
MATEMATIIKKA 5 VIIKKOTUNTIA. PÄIVÄMÄÄRÄ: 8. kesäkuuta 2009
EB-TUTKINTO 2009 MATEMATIIKKA 5 VIIKKOTUNTIA PÄIVÄMÄÄRÄ: 8. kesäkuuta 2009 KOKEEN KESTO: 4 tuntia (240 minuuttia) SALLITUT APUVÄLINEET: Eurooppa-koulun antama taulukkovihkonen Funktiolaskin, joka ei saa
Solidity älysopimus ohjelmointi. Sopimus suuntautunut ohjelmointi
Solidity älysopimus ohjelmointi Sopimus suuntautunut ohjelmointi Merkle puu Kertausta eiliseltä Solidity on korkean tason älysopimus ohjelmointikieli Muistuttaa olio-ohjelmointia Javalla Sopimuskoodi on
Dart. Ryhmä 38. Ville Tahvanainen. Juha Häkli
Dart Ryhmä 38 Ville Tahvanainen Juha Häkli 1.LYHYESTI Dart on luokkapohjainen, yksiperintäinen, puhdas olio-ohjelmointikieli. Dart on dynaamisesti tyypitetty. Sovellukset on organisoitu modulaarisiksi
Tietokonearkkitehtuuri 2 TKT-3201 (5 op)
Tietokonearkkitehtuuri 2 (5 op) syksyllä 2012 periodit I & II (viikot 35-41 & 43-49) luennot tiistaisin klo 14-16 (periodi I: sali S4, periodi II: sali TB109) Kurssin tavoite Käydään läpi tietokoneen toimintaa
Kahden suoran leikkauspiste ja välinen kulma (suoraparvia)
Kahden suoran leikkauspiste ja välinen kulma (suoraparvia) Piste x 0, y 0 on suoralla, jos sen koordinaatit toteuttavat suoran yhtälön. Esimerkki Olkoon suora 2x + y + 8 = 0 y = 2x 8. Piste 5,2 ei ole
MAB3 - Harjoitustehtävien ratkaisut:
MAB - Harjoitustehtävien ratkaisut: Funktio. Piirretään koordinaatistoakselit ja sijoitetaan pisteet:. a) Funktioiden nollakohdat löydetään etsimällä kuvaajien ja - akselin leikkauspisteitä. Funktiolla
Tasogeometriaa GeoGebran piirtoalue ja työvälineet
Tasogeometriaa GeoGebran piirtoalue ja työvälineet Näissä harjoituksissa työskennellään näkymässä Näkymät->Geometria PIIRRÄ (ja MITTAA) a) jana toinen jana, jonka pituus on 3 b) kulma toinen kulma, jonka
Rajapinnasta ei voida muodostaa olioita. Voidaan käyttää tunnuksen tyyppinä. Rajapinta on kuitenkin abstraktia luokkaa selvästi abstraktimpi tyyppi.
11. Rajapinnat 11.1 Sisällys Johdanto. Abstrakti luokka vai rajapinta? Rajapintojen hyötyjä. Kuinka rajapinnat määritellään ja otetaan käyttöön? Eläin, nisäkäs, kissa ja rajapinta. Moniperiytyminen rajapintojen
Ympyrä 1/6 Sisältö ESITIEDOT: käyrä, kulma, piste, suora
Ympyrä 1/6 Sisältö Ympyrä ja sen yhtälö Tason pisteet, jotka ovat vakioetäisyydellä kiinteästä pisteestä, muodostavat ympyrän eli ympyräviivan. Kiinteä piste on ympyrän keskipiste ja vakioetäisyys sen
Matikkaa KA1-kurssilaisille, osa 3: suoran piirtäminen koordinaatistoon
Matikkaa KA1-kurssilaisille, osa 3: suoran piirtäminen koordinaatistoon KA1-kurssi on ehkä mahdollista läpäistä, vaikkei osaisikaan piirtää suoraa yhtälön perusteella. Mutta muut kansiksen kurssit, no
Vektoreita GeoGebrassa.
Vektoreita GeoGebrassa 1 Miten GeoGebralla piirretään vektoreita? Työvälineet ja syöttökentän komennot Vektoreiden esittäminen GeoGebrassa on luontevaa: vektorien piirtämiseen on kaksi työvälinettä vektoreita
4. Varastossa on 24, 23, 17 ja 16 kg:n säkkejä. Miten voidaan toimittaa täsmälleen 100 kg:n tilaus avaamatta yhtään säkkiä?
Peruskoulun matematiikkakilpailu Loppukilpailu perjantaina 3.2.2012 OSA 1 Ratkaisuaika 30 min Pistemäärä 20 Tässä osassa ei käytetä laskinta. Kaikkiin tehtäviin laskuja, kuvia tai muita perusteluja näkyviin.
Projektinhallintaa paikkatiedon avulla
Projektinhallintaa paikkatiedon avulla Tampereen Teknillinen Yliopisto / Porin laitos Teemu Kumpumäki teemu.kumpumaki@tut.fi 25.6.2015 1 Paikkatieto ja projektinhallinta Paikkatiedon käyttäminen projektinhallinnassa
Computing Curricula 2001 -raportin vertailu kolmeen suomalaiseen koulutusohjelmaan
Computing Curricula 2001 -raportin vertailu kolmeen suomalaiseen koulutusohjelmaan CC1991:n ja CC2001:n vertailu Tutkintovaatimukset (degree requirements) Kahden ensimmäisen vuoden opinnot Ohjelmistotekniikan
7/20: Paketti kasassa ensimmäistä kertaa
Ohjelmointi 1 / syksy 2007 7/20: Paketti kasassa ensimmäistä kertaa Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007
Oppimistavoitematriisi
Oppimistavoitematriisi Lineaarialgebra ja matriisilaskenta I Arvosanaan 1 2 riittävät Arvosanaan 5 riittävät Yhtälöryhmät (YR) Osaan ratkaista ensimmäisen asteen yhtälöitä ja yhtälöpareja Osaan muokata
RATKAISUT: 16. Peilit ja linssit
Physica 9 1 painos 1(6) : 161 a) Kupera linssi on linssi, jonka on keskeltä paksumpi kuin reunoilta b) Kupera peili on peili, jossa heijastava pinta on kaarevan pinnan ulkopinnalla c) Polttopiste on piste,
MATEMATIIKKA JA TAIDE II
1 MATEMATIIKKA JA TAIDE II Aihepiirejä: Hienomotoriikkaa harjoittavia kaksi- ja kolmiulotteisia väritys-, piirtämis- ja askartelutehtäviä, myös sellaisia, joissa kuvio jatkuu loputtomasti, ja sellaisia,
Yhtälöryhmä matriisimuodossa. MS-A0004/A0006 Matriisilaskenta. Tarkastellaan esimerkkinä lineaarista yhtälöparia. 2x1 x 2 = 1 x 1 + x 2 = 5.
2. MS-A4/A6 Matriisilaskenta 2. Nuutti Hyvönen, c Riikka Kangaslampi Matematiikan ja systeemianalyysin laitos Aalto-yliopisto 5.9.25 Tarkastellaan esimerkkinä lineaarista yhtälöparia { 2x x 2 = x + x 2
TYÖPAJA 1: Tasogeometriaa GeoGebran piirtoalue ja työvälineet
TYÖPAJA 1: Tasogeometriaa GeoGebran piirtoalue ja työvälineet Valitse Näkymät->Geometria PIIRRETÄÄN KOLMIOITA: suorakulmainen kolmio keksitkö, miten korostat suoraa kulmaa? tasakylkinen kolmio keksitkö,
4.12.2005. SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T
SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T SEPA: REFAKTOROINTI 2 (9) SEPA: REFAKTOROINTI 3 (9) VERSIOHISTORIA Version Date Author Description 0.1 2.12.2005 Erik Hakala Ensimmäinen
Tietokanta (database)
Tietokanta Tietokanta (database) jotakin käyttötarkoitusta varten laadittu kokoelma toisiinsa liittyviä säilytettäviä tietoja 1 Tiedosto Ohjelmointikielissä apumuistiin tallennettuja tietoja käsitellään
10. Globaali valaistus
10. Globaali valaistus Globaalilla eli kokonaisvalaistuksella tarkoitetaan tietokonegrafiikassa malleja, jotka renderöivät kuvaa laskien pisteestä x heijastuneen valon ottamalla huomioon kaiken tähän pisteeseen
Suorien ja tasojen geometriaa Suorien ja tasojen yhtälöt
6. Suorien tasojen geometriaa 6.1. Suorien tasojen yhtälöt 55. Osoita, että yhtälöt x = 3 + τ y = 1 3τ esittävät samaa tason suoraa. Yhteinen piste 1,5) suunta i 3j. x = 1 6τ y = 5 + 9τ 56. Määritä suoran