DirectX 11 -grafiikkamoottori ja BRDF-mallit
|
|
- Hilja Aro
- 7 vuotta sitten
- Katselukertoja:
Transkriptio
1 Teemu Niemi DirectX 11 -grafiikkamoottori ja BRDF-mallit Opinnäytetyö Kevät 2017 SeAMK Tekniikka Tietotekniikan koulutusohjelma
2 1(48) SEINÄJOEN AMMATTIKORKEAKOULU Opinnäytetyön tiivistelmä Koulutusyksikkö: Seinäjoen Ammattikorkeakoulu Tutkinto-ohjelma: Tietotekniikan koulutusohjelma Suuntautumisvaihtoehto: Ohjelmistotekniikka Tekijä: Teemu Niemi Työn nimi: DirectX 11 -grafiikkamoottori ja BRDF-mallit Ohjaaja: Petteri Mäkelä Vuosi: 2017 Sivumäärä: 48 Opinnäytetyön tavoitteena oli luoda grafiikkamoottori, jolla voidaan esitellä yleisempiä tietokonegrafiikassa käytettyjä BRDF-malleja. Työssä luotu grafiikkamoottori suunniteltiin niin, että sillä on helppo valita eri BRDF-malleja tarkastelua varten kevyen käyttöliittymän avulla. Toisena päätavoitteena työssä oli tutustua BRDF-mallien taustalla olevaan matematiikkaan sekä BRDF-mallien toteuttamiseen näytönohjaimessa suoritettavilla varjostinohjelmilla. Työn teoriaosassa kerrotaan BRDF-mallien teoriaa sekä niihin liittyvää matematiikkaa. Työn teoriaosassa on kerrottuna myös DirectX 11 - rajapintakokoelman teoriasta sekä sen sisältämien rajapintojen käyttötarkoituksista. Työn lopputuloksena saatiin toimiva grafiikkamoottori, jolla voidaan esitellä reaaliaikaisessa grafiikassa käytettyjä BRDF-malleja. Työssä luotua ohjelmakoodia voidaan käyttää uudelleen muissa projekteissa, jotka liittyvät grafiikkaohjelmointiin. Avainsanat: BRDF, tietokonegrafiikka, DirectX 11, HLSL, varjostin.
3 2(48) SEINÄJOKI UNIVERSITY OF APPLIED SCIENCES Thesis abstract Faculty: School of Technology Degree programme: Information Technology Specialisation: Software Engineering Author: Teemu Niemi Title of thesis: DirectX 11 graphics engine and BRDF-models Supervisor: Petteri Mäkelä Year: 2017 Number of pages: 48 The goal of this thesis was to create a graphics engine to demonstrate common BRDF-models used in real-time graphics. The design of the graphics engine was realized so that it allows user to easily switch from one BRDF-model to another. One of the main goals was also to study the mathematics behind BRDF-models and how the models can be implemented in shader programs using the High Level Shading Language developed by Microsoft. The theory part of this thesis consists of the theory behind BRDF-models that are demonstrated in this thesis. DirectX 11 is also described in the theory part of this thesis. The result of this thesis was a graphics engine that allows users to examine the BRDF-models that are used in this thesis. The code that was written for the graphics engine can also be used in future graphics programming projects. Keywords: BRDF, DirectX 11, HLSL, shader program, real-time graphics
4 3(48) SISÄLTÖ Opinnäytetyön tiivistelmä... 1 Thesis abstract... 2 SISÄLTÖ... 3 Kuvioluettelo... 5 Käytetyt termit ja lyhenteet Johdanto Työn tausta Työn tavoite Työn rakenne Microsoft DirectX Direct3D XAudio Xinput Direct2D DXGI DirectCompute DirectX Diagnostics DirectSetup BRDF-mallit BRDF-funktioiden määritelmiä BRDF-luokat ja ominaisuuksia BRDF-malleja Phongin BRDF Blinn-Phongin BRDF Cook-Torrancen BRDF Wardin BRDF Lambertianin BRDF Oren-Nayarin BRDF Varjostimet ja HLSL Ohjelman rakenne ja toiminta... 28
5 4(48) 5.1 Ohjelman vaiheet Viivästetty kuvan piirto D-mallien lataaminen Ohjelman käyttöliittymä BRDF-mallien toteutus Phongin mallin toteutus Blinn-Phongin mallin toteutus Cook-Torrancen mallin toteutus Wardin mallin toteutus Lambertianin mallin toteutus Oren-Nayarin mallin toteutus Yhteenveto LÄHTEET... 47
6 5(48) Kuvioluettelo Kuvio 1. Direct3D-rajapinnan kanssa käytettävät Kuvio 2. Direct2D-arkkitehtuuri (Direct2D, [Viitattu ]) Kuvio 3. Valon vuorovaikutukset (Wynn, [Viitattu ]) Kuvio 4. Puolivälivektorin havainnollistaminen (Shading2, 2016) Kuvio 5. Direct3D 11 -rajapinnan grafiikkakanava (Direct3D pipeline, [Viitattu ]) Kuvio 6. Geometriapuskurin sisältö Kuvio 7. Crytekin luoma 3D-malli Dubrovnikin Sponza-palatsista Kuvio 8. Ohjelman käyttöliittymä Kuvio 9. Phongin BRDF-mallin HLSL-koodi Kuvio 10. Phongin mallin toteutus ohjelmassa Kuvio 11. Blinn-Phongin HLSL-koodi Kuvio 12. Blinn-Phongin mallin toteutus ohjelmassa Kuvio 13. Cook-Torrancen BRDF-mallin HLSL-koodi Kuvio 14. Cook-Torrancen varjostimessa käytettyjä metodeja Kuvio 15. Fresnelin yhtälö HLSL-koodissa Kuvio 16. Cook-Torrancen toteutus ohjelmassa Kuvio 17. Wardin mallin HLSL-koodi Kuvio 18. Wardin BRDF-malli ohjelmassa Kuvio 19. Lambertianin mallin HLSL-koodi... 42
7 6(48) Kuvio 20. Lambertianin BRDF-mallin toteutus ohjelmassa Kuvio 21. Oren-Nayarin mallin HLSL-koodi Kuvio 22. Oren-Nayarin mallin toteutus ohjelmassa... 45
8 7(48) Käytetyt termit ja lyhenteet Anisotrooppinen Ominaisuus, joka muuttuu eri suunnista mitattaessa. BRDF Bidirectional Reflectance Distribution Function eli suomennettuna kaksisuuntaisheijastusominaisuusfunktio. BMP Geometriapuskuri Hajavalo Heijastuskartta HLSL Microsoftin kehittämä kuvaformaatti. Joukko tietoa 3D-mallien geometriasta. Valo, joka heijastuu pinnasta jokaiseen suuntaan. Kuva, joka kertoo 3D-mallin pinnan heijastuvuudesta. High Level Shading Language on Microsoftin kehittämä ohjelmointikieli näytönohjaimiin. Isotrooppinen Ominaisuus, joka pysyy muuttumattomana mittaussuunnasta riippumatta. JPEG Joint Photographic Experts Group. Häviöllinen kuvaformaatti. Käytetään myös lyhennettä JPG. Käyttöliittymä Metodi Ohjelmakirjasto Olio Peiliheijastus PNG Ohjelmassa olevat ikkunat, valikot ja valintaikkunat. Ohjelmoinnissa käytettävä termi, joka kuvaa toimintoa. Kokoelma ohjelmia, luokkia tai aliohjelmia, joita voidaan käyttää apuna ohjelmoinnissa. Sisältää loogisesti yhteenkuuluvaa ohjelman sisältämää tietoa ja toiminnallisuutta. Valo, joka heijastuu lähes kokonaan pinnasta tietystä kulmasta katsottaessa. Portable Network Graphics. Pakkaamista tukeva häviötön kuvaformaatti.
9 8(48) Rajapinta Renderöinti TGA Tekstuuri Ympäristövalo Mahdollistaa eri ohjelmien välisen kommunikoinnin. 3D- tai 2D-kuvan muodostaminen tietokoneella. Truevision Inc:in kehittämä kuvaformaatti, tunnetaan myös nimellä Targa. Kuva, joka sijoitetaan 3D-mallin päälle. Valoa, joka ei tule suoraan valonlähteestä, vaan heijastuu ympärillä olevista pinnoista. Varjostin Varjostimet ovat ohjelmakoodia, jota tietokoneen näytönohjain suorittaa. Englanniksi varjostinta kutsutaan shaderiksi. Varjostinmalli Kertoo Microsoftin kehittämän HLSL-ohjelmointikielen version..
10 9(48) 1 Johdanto 1.1 Työn tausta Vaatimukset realistisen tietokonegrafiikan esittämiseen ovat kasvaneet nopeasti kehittyvien teknologioiden myötä. Realistisen grafiikan esittelyyn tarvitaan kuvaavia matemaattisia malleja, jotka takaavat katsojille animaatioissa ja peleissä mahdollisimman realistisen vaikutelman. Kyseessä olevia matemaattisia malleja kutsutaan BRDF-malleiksi. BRDF tulee englanninkielisestä termistä bi-directional reflectance distribution function. Suomeksi termi käännetään kaksisuuntaisheijastusominaisuusfunktioksi. 1.2 Työn tavoite Opinnäytetyön tavoitteena on luoda grafiikkamoottori, jolla voidaan esitellä yleisempiä reaaliaikaisessa tietokonegrafiikassa käytettyjä BRDF-malleja. Työssä on myös tarkoitus perehtyä BRDF-mallien matematiikkaan. 1.3 Työn rakenne Luvussa kaksi on esiteltynä Microsoftin DirectX 11 -ohjelmistorajapintakokoelma, jota käytetään työssä grafiikkamoottorin rakentamiseen. Luvussa kolme kerrotaan BRDF-mallien teoriaa sekä esitellään työssä käsiteltyjen mallien matematiikkaa. Luvussa neljä esitellään eri varjostinohjelmia. Luvussa viisi kuvataan ohjelman rakennetta ja toimintaa sekä ohjelmassa käytettyjä ohjelmakirjastoja. Luvussa kuusi on esiteltynä BRDF-mallien toteutus grafiikkamoottorissa. Luvussa seitsemän on yhteenveto.
11 10(48) 2 Microsoft DirectX Tässä luvussa kerrotaan Microsoftin DirectX-rajapintakokoelmasta, sen historiasta, sekä rajapintakokoelman sisällöstä. Lisäksi kerrotaan DirectX-kokoelman versioista ja opinnäytetyössä käytettävästä versiosta. Vuonna 1995 ensimmäisen kerran Windows 95 -käyttöjärjestelmän ohella julkaistu DirectX on kokoelma Microsoftin kehittämiä kirjastoja, jotka mahdollistavat käskyjen lähettämisen suoraan audio- ja videolaitteisiin. DirectX sisältää useita eri kirjastoja, joiden avulla laitteistolle voidaan antaa käskyjä Windowsissa ja Xboxissa. (DirectX, [Viitattu ].) DirectX-versiot julkaistaan yleensä yhdessä uusien Windows-versioiden kanssa, esimerkiksi Microsoft Windows Vistan kanssa julkaistiin DirectX 10, ja myöhemmin Windows 7- ja 8-järjestelmien kanssa julkaistiin DirectX 11. Uusin versio DirectX 12 julkaistiin Windows 10 -version yhteydessä. Opinnäytetyössä käytetty DirectX-versio on DirectX 11, joka on edelleen laajasti käytössä, vaikka nykyään on mahdollista käyttää DirectX 12 -versiota. DirectX 11 eroaa DirectX 12 -versiosta siten, että DirectX 12 sisältämät rajapinnat vaativat ohjelmoijalta syvää tuntemusta laitteiston toiminnasta (Eimandar 2013). 2.1 Direct3D Direct3D on Microsoftin DirectX 11 mukana julkaistu natiivi ohjelmistorajapinta, joka lisää toiminnallisuuksia vanhojen Direct3D-versioiden päälle. Direct3D on käytettävissä Microsoft Vistassa sekä kaikissa Vistan jälkeen julkaistuissa Windows-versioissa. (Zink, Pettineo & Hoxley 2016.) Direct3D-rajapintaa käytetään antamaan käskyjä ja kommunikoimaan suoraan tietokoneen grafiikkasuorittimen kanssa. Rajapintaa käytetään yleensä C/C++ohjelmointikielillä, vaikka rajapintaa varten on luotu korkeamman tason kielille omia sovelluskehyksiä. (Zink, Pettineo & Hoxley 2016.)
12 11(48) Direct3D-rajapinnan alta löytyy useita sovelluspintoja, jotka eivät näy ohjelmalle. Nämä sovelluspinnat luovat Windowsin client-ympäristön grafiikka-arkkitehtuurin. (Zink, Pettineo & Hoxley 2016.) Kuvio 1. Direct3D-rajapinnan kanssa käytettävät järjestelmät (Zink, Pettineo & Hoxley 2016). Kuvion 1 määrittelemässä arkkitehtuurissa nähdään, että sovellus on kaikista korkeimmalla tasolla ja keskustelee pääasiassa Direct3D-rajapinnan kanssa. Alemmalla tasolla Direct3D keskustelee videolaitteiston user mode -ajurin kanssa, joka suorittaa sovelluksen antamia komentoja. Ajuri on tämän jälkeen vuorovaikutuksessa DXGI-sovelluskehyksen kanssa, joka on vastuussa matalan tason kommunikaatiosta kernel mode -ajurin ja saatavilla olevien laitteistoresurssien kanssa. (Zink, Pettineo & Hoxley 2016.)
13 12(48) 2.2 XAudio2 XAudio2 on Microsoftin kehittämä matalan tason rajapinta signaalinkäsittelyyn ja äänen miksaukseen pelejä varten. XAudio2 on samankaltainen kuin sen edeltäjät DirectSound ja XAudio. Se on kehitetty korvaamaan DirectSound. (XAudio2, [Viitattu ].) XAudio on tarkoitettu lähinnä pelejä varten. Microsoft kehoittaa dokumentaatiossaan käyttämään Media Foundation engineä, jos tarkoitus on tehdä tavallista musiikkia toistava sovellus. (XAudio2, [Viitattu ].) XAudio2 tarjoaa matalalla vasteajalla toimivat työkalut äänitteiden muokkaamiseen. XAudio2 tarjoaa tuen myös dynaamisiin puskureihin, synkronoituun näytetarkkaan toistoon ja lähdemuunnoksiin. XAudio2-rajapintaa on mahdollista käyttää mahdollisimman pienellä määrällä ohjelmakoodia monimutkaisemmissakin järjestelmissä. (XAudio2, [Viitattu ].) 2.3 Xinput Xinput on uusi standardirajapinta, jota käytetään vastaanottamaan komennot näppäimistöltä tai Xbox 360 -ohjaimesta. Xinput on kehitetty korvaamaan Microsoftin DirectInput, mutta se ei tue vanhempia laitteita, jotka on tarkoitettu käytettäväksi DirectInputin kanssa. Jos Xinputia käyttävän ohjelman on tarkoitus tukea näitä vanhempia laitteita, pitää ohjelman käyttää myös DirectInputia. (Xinput, [Viitattu ].) Xinput-rajapinnan avulla voidaan tunnistaa kaikki laitteeseen kytketyt Xbox ohjaimet. Xinput-rajapinnan avulla voidaan myös hallita Xbox 360 -ohjainten värinätoimintoja sekä vastaanottaa ja lähettää ääntä ohjaimiin yhdistetyistä kuulokemikrofoneista. (Xinput, [Viitattu ].)
14 13(48) 2.4 Direct2D Direct2D on Microsoftin kehittämä 2D-grafiikkaa varten luotu ohjelmistorajapinta. Direct2D-rajapinnan on tarkoitus auttaa luomaan tehokasta ja korkealaatuista 2Dgrafiikkaa, kuten bittikarttoja ja tekstiä. Rajapinnan tarkoitus on toimia hyvin GDI-, GDI+ tai Direct3D-rajapintojen kanssa. Direct2D on rakennettu alun perin käyttäen Direct3D rajapintaa, mutta Windows 8 julkaisun jälkeen Direct2D-rajapinta on rakennettu käyttämällä Direct3D rajapintaa. Direct2D-rajapinnan perustuminen Direct3D-rajapintaan tarkoittaa, että sovellukset, joissa käytetään Direct2D-rajapintaa hyötyvät myös Direct3Drajapinnan tarjoamasta laitteistokiihdytyksestä. (Direct2D, [Viitattu ].) Kuvio 2. Direct2D-arkkitehtuuri (Direct2D, [Viitattu ]). Kuvio 2 esittelee Direct2D-arkkitehtuuria, jossa Direct2D sijoittuu Direct3Drajapinnan päälle. Direct2D hyötyy Direct3D-rajapinnan kautta laitteistokiihdytyksestä. Tilanteissa, joissa laitteistokiihdytys ei ole mahdollinen, Direct2D hyötyy korkean suorituskyvyn ohjelmistorasteroijasta. (Direct2D, [Viitattu ].) 2.5 DXGI Microsoft DirectX Graphics Infrastructure on sovelluskehys joka ottaa huomioon hitaammin kehittyvät grafiikan osa-alueet. DXGI-sovelluskehyksen päätavoite on
15 14(48) hallita matalan tason tehtäviä, jotka ovat erillisiä DirectX-rajapintakokoelman tehtävistä. Ensimmäinen komponentti, joka hyötyi DXGI-sovelluskehyksestä oli Microsoftin Direct3D 10. (DXGI, [Viitattu ].) 2.6 DirectCompute Microsoftin DirectCompute mahdollistaa näytönohjaimen laskentatehon käyttämisen tavallisessa ohjelmoinnissa, mikä vaatii paljon rinnakkaislaskentatehoa. DirectComputea on tarkoitus hyödyntää silloin kun on paljon laskettavaa, jotta DirectComputella voidaan saavuttaa paras suorituskyky. (Thibieroz & Cebenoyan 2010.) DirectComputea eli laskentavarjostinta voidaan tietokonegrafiikassa käyttää kuvan jälkiprosessointia varten, mutta sitä voidaan hyödyntää myös esimerkiksi fysiikan laskemisessa (Thibieroz & Cebenoyan 2010). 2.7 DirectX Diagnostics DirectX Diagnostics on Microsoftin kehittämä työkalu vianmääritykseen. DirectX Diagnostics tunnistaa tietokoneeseen asennetut komponentit ja kertoo tietokoneeseen asennetun DirectX-version. (Heiskanen 2014.) DirectX Diagnostics löytyy ohjelmana Windows-käyttöjärjestelmästä dxdiag-nimellä, sen avulla käyttäjä voi seurata tietokoneen laitteistoa ja ajureita. Ohjelman avulla voidaan tehdä tekstitiedosto, johon dxdiag-ohjelma listaa tietoa asennetuista ajureista ja käyttöjärjestelmästä. (Heiskanen 2014.) 2.8 DirectSetup DirectSetup mahdollistaa DirectX-rajapintakokoelman asentamisen tietokoneelle. DirectSetup toimitetaan yleensä ohjelman mukana käyttäjille, jos ohjelma vaatii DirectX-rajapintakokoelmaan liittyviä tiedostoja. DirectSetupin uusimman version voi ladata Microsoftin verkkosivuilta. (Heiskanen 2014.)
16 15(48) 3 BRDF-mallit Tässä luvussa tutustutaan työssä käytettäviin erilaisiin BRDF-malleihin ja niiden matemaattisiin määritelmiin. Tietokonegrafiikassa mahdollisimman realistisien kuvien luonnissa on pystyttävä selittämään valon vuorovaikutukset erilaisilla pinnoilla mahdollisimman tarkasti. Tällöin valon vuorovaikutusta erilaisilla pinnoilla voidaan selittää BRDF-malleilla. BRDF tulee sanasta Bidirectional Reflectance Distribution Function eli suomennettuna kaksisuuntaisheijastusominaisuusfunktio. Viimeisen 35 vuoden aikana on esitelty monia analyyttisiä BRDF-malleja. Nämä mallit voidaan jakaa kahteen kategoriaan: empiiriset ja fyysisiin pohjautuvat mallit. Molempien kategorioiden mallit ovat vain arvioita erilaisten materiaalien heijastusominaisuuksista. Monet näistä malleista perustuvat materiaalien parametreihin, jotka ovat teoriassa mitattavissa, mutta käytännössä vaikeasti saatavilla. (Kurt & Edwards 2009.) Vaihtoehtoisesti parametrien suoran mittaamisen sijaan voidaan käyttää goniospektrofotometriä, jolla saadaan oikeita näytteitä BRDF-funktioista, jonka jälkeen saatu data sijoitetaan valittuun analyyttiseen malliin käyttämällä erilaisia optimointitekniikoita. (Kurt & Edwards 2009.) 3.1 BRDF-funktioiden määritelmiä Realistisien kuvien luonti perustuu numeeristen likiarvojen laskentaan kirkkausfunktiossa. Tämä merkitään kirjaimella L. Tietokonegrafiikan luonnissa L- funktion tärkeys perustuu faktaan, että sen avulla voidaan luoda yksinkertaisia ja tarkkoja malleja kuvan muodostumisesta ihmisen visuaalisessa järjestelmässä ja kameroissa. (Montes & Ureña 2012.)
17 16(48) Kirkkauteen vaikuttavat materiaalien eri ominaisuudet. Elektromagneettinen säteily on vuorovaikutuksessa hajautumisen, heijastumisen ja taittumisen kanssa. (Montes & Ureña 2012.). Kuvio 3. Valon vuorovaikutukset (Wynn, [Viitattu ]). Kuvio 3 esittelee valon vuorovaikutuksia valon ja aineen välillä. Aluksi valon osuessa aineeseen voi tapahtua kolme eri vuorovaikutusta: valon heijastuminen, valon imeytyminen ja valon lähettäminen. Osa valosta imeytyy väliaineessa. Koska valo on energiamuoto, energiaperiaatteen mukaan se on määritelty: valotapahtuma pinnalla = heijastunut valo + imeytynyt valo + lähetetty valo. (Wynn, [Viitattu ].) Tavallinen funktiomerkintä BRDF-funktiosta BRDF λ (θi, φi, θₒ, φₒ, u, v) (1) missä muuttuja λ määrittelee BRDF-funktion olemaan riippuvainen valon aallonpituudesta. Parametrit θi, φi, edustavat tulevan valon suuntaa pallokoordinaateissa. Parametrit u ja v edustavat pinnan paikkaa tekstuuriavaruudessa. (Wynn, [Viitattu ].)
18 17(48) 3.2 BRDF-luokat ja ominaisuuksia BRDF-funktiot voidaan jakaa kahteen eri luokkaan: suorat ja epäsuorat BRDFfunktiot. BRDF-funktioiden kaksi tärkeintä ominaisuutta ovat energian vastavuoroisuus ja säilyminen. (Wynn, [Viitattu ].) Isotrooppiset eli suorat BRDF-funktiot edustaa sellaisia heijastumisen ominaisuuksia, jotka ovat muuttumattomia suhteessa pinnan rotaatioon. Tämä tarkoittaa sitä, jos katsoja ja valon lähde pidetään paikallaan, ja pintaa pyöritetään suhteessa sen normaaliin, niin pinnasta heijastuva valaistus ei muutu. Esimerkkinä tämänlaisesta materiaalista voidaan antaa sileä muovi, jolla on isotrooppinen BRDF. (Wynn, [Viitattu ].) Anisotrooppiset eli epäsuorat BRDF-funktiot ovat funktioita, joissa pinnasta heijastuva valaistus muuttuu kun pintaa pyöritetään suhteessa sen normaaliin. Tämänlaisia materiaaleja ovat esimerkiksi hiottu metalli, satiini ja hiukset. Suurin osa oikean maailman BRDF-funktioista on jonkin verran anisotrooppisia. Isotrooppisuus määritelmänä on hyödyllinen kuitenkin, koska moni analyyttinen BRDF-malli sijoittuu isotrooppiseen luokkaan. (Wynn, [Viitattu ].) 3.3 BRDF-malleja BRDF-malleja on useita, kaikki niistä eivät sovellu tietokonegrafiikassa käytettäväksi. Seuraavassa esitellään muutamia yleisimpiä malleja, joita käytetään tietokonegrafiikassa.
19 18(48) Kuvio 4. Puolivälivektorin havainnollistaminen (Shading2, 2016). Kuviossa 4 havainnollistetaan monessa BRDF-mallissa käytettyä puolivälivektoria H tai h. Kuvasta nähdään, että puolivälivektori sijaitsee puolessa välissä vektoreita v ja l, jotka ovat pinnasta kameraan ja pinnasta valoon suuntautuvat vektorit. h = l + v l + v (2) Kaavassa (2) on esiteltynä kuviossa 4 havainnollistettu puolivälivektorin h laskukaava, missä v on kappaleesta kameraan menevä vektori ja l on kappaleesta valon lähteeseen kulkeva vektori Phongin BRDF Vuonna 1973, Bui Tuong Phong esitteli oman BRDF-mallinsa, mikä kuvaa hyvin valon heijastumista sileistä ja muovisista pinnoista. Phongin BRDF-malli on empiirinen BRDF-malli, sillä se ei seuraa tarkasti fysiikan lakeja. (Montes & Ureña 2012.) Phongin BRDF-malli saadaan yhtälöstä
20 19(48) k d f lambert + k s (V R) n (3) missä V on kameran ja kappaleen välinen vektori ja n on vapaasti määriteltävä parametri, joka vaikuttaa heijastukseen. Kaavassa (3) k s (V R) n kuvaa peiliheijastusta ja k d f lambert kuvaa Lambertian hajavalon kaavaa eli ρ, missä ρ on π pinnan heijastuvuus (Montes & Ureña 2012). R = 2(N L)N L (4) Kaava (4) kuvaa valon heijastumissuuntaa, jossa vektori L on valon suunta osumakohdassa ja N on pinnan normaalivektori (Montes & Ureña 2012) Blinn-Phongin BRDF Blinn-Phongin BRDF-malli on yleisin valaistuksen laskemisessa käytetty BRDFmalli. Blinnin malli esittää, että käyttämällä puolivälivektoria H Phongin kaavassa (3) korvaamalla kaavan (3) heijastusvektori R vähennetään laskutehtävien määrää. Tämä mahdollistuu sillä, että ei tarvitse enää löytää heijastusvektoria. (Montes & Ureña 2012.) Blinn-Phongin BRDF-malli määritellään kaavalla k d + k s (N H) n (5) missä N on pinnan normaali, H on puolivälivektori ja n on heijastuskerroin. (Montes & Ureña 2012.)
21 20(48) Cook-Torrancen BRDF Cook-Torrancen BRDF-mallissa oletetaan, että kappaleen pinnassa olevat mikrofaktit, jotka on suunnattu puolivälivektoriin h, muodostavat lopullisen heijastuksen. Puolivälivektori h on esitelty kaavassa (2). Cook-Torrancen BRDFmalli esittelee myös uuden tyyppisen materiaalin tietokonegrafiikassa. Se jakaa metalliset ja ei-metalliset materiaalit. (Montes & Ureña 2012). Cook-Torrancen BRDF-malli määritellään seuraavasti f r = k d f lambert + k s f cook torrance (6) k d f lambert määrittelee hajavalon ja k s f cook torrance määrittelee peiliheijastuksen. Yhtälön k s f cook torrance saadaan laskettua seuraavasti: f cook torrance = DFG 4(w 0 n)(w 1 n) (7) Kaavassa (7) muuttuja D on normaalin hajautuminen, mikä kertoo pinnan mikrofaktien suuntauksen puolivektorin H mukaan. Tähän vaikuttaa pinnan karheus. Yhtälössä D saadaan laskettua Trowbridge-Reitzin GGX-funktiolla: NDF GGXTR (n, h, α) = α 2 π(n h) 2 (α 2 1) + 1) 2 (8) kaavassa (8) parametreinä on pinnan normaalivektori n, puolivälivektori h ja vakio a, mikä on pinnan karheus. (Vries 2017.) Kaavassa (7) G kuvaa geometriafunktiota, joka kertoo mikrofaktien synnyttämien varjojen vaikutuksen pinnasta heijastuvaan valoon verrattaen karheilla pinnoilla. Yhtälön G saadaan laskettua Schlick-Beckmannin Schlick-GGX -funktiosta G SchlickGGX (n, v, k) = n v (n v)(1 k) + k (9)
22 21(48) missä (α + 1)2 k = 8 (10) Yhtälön F kuvaa Fresnelin yhtälöä, mikä taas kuvaa heijastuvan ja taittuvan valon suhdetta. Tämä muuttuu sen kulman mukaan, josta pintaa katsotaan. F saadaan laskettua seuraavanlaisesti F Schlick(n,v,F0 ) = F 0 + (1 F 0 )(1 (n v)) 5 (11) Yhtälön F 0 on yleensä joku ennalta määrätty vakio. (Vries 2017.) Wardin BRDF Wardin BRDF-malli on laskennallisesti kevyt BRDF-malli kuvaamaan anisotrooppista heijastusta. Wardin isotrooppisen BRDF-mallin matemaattinen määritelmä on F r,iso (w 0, w i ) = k s exp [ tan 2 (h n) ( ) ] cos(w 0 ) cos(w i ) 4πα 2 m α 2 m (12) Wardin anisotrooppisen BRDF-mallin määritelmä on F r,ani (w 0, w i ) = 2 ] α x [ (h x) k s 4πα x α y cos(w 0 ) cos(w i ) e [ 2 ] α y +[ (h y) (h n) 2 ] (13) missä (h x) = (h y) = sin(θwo ) cos(φwo ) + sin(θwi ) cos(θwi ) h sin(θwo ) sin(φwo ) + sin(θwi ) sin(φwi ) h (14) (15)
23 22(48) ja (h n) = cos(θwo ) + cos(θwi ) h (16) Wardin BRDF-malli kuuluu kokeellisiin BRDF-malleihin, joten se on mitattu luonnosta goniospektrofotometrillä. (Montes & Ureña 2012.) Lambertianin BRDF Lambertianin BRDF-malli kuvailee pintaa, joka heijastaa valoa joka suuntaan saman verran. Oikeassa maailmassa ei ole pintoja, jotka noudattavat tätä BRDFmallia, mutta mattapinta on lähin esimerkki tämänlaisesta pinnasta. (Montes & Ureña 2012.) Lambertianin BRDF-malli saadaan kaavasta ρ π (17) missä ρ on pinnan heijastuvuus. Tätä BRDF-mallia käytetään yleensä laskemaan kappaleen pinnasta heijastuvaa hajavaloa, joka yhdistetään erikseen peiliheijastusta kuvaavaan kaavaan. (Montes & Ureña 2012.) Oren-Nayarin BRDF Oren-Nayarin BRDF-malli on paranneltu versio klassisesta Lambertianin BRDFmallista. Oren-Nayarin BRDF-malli pystyy selittämään valon heijastumisen mattapinnoilta geometriaoptiikalla. Tästä syystä malli luetaan fyysisiin tai teoreettisiin BRDF-malleihin. (Montes & Ureña 2012.)
24 23(48) Oren-Nayarin mallilla mallinnetaan hajavalon osuutta valoyhtälössä. Oren-Nayarin BRDF-mallin matemaattinen määritelmä on fr(wo, wi) = ρ (A + B max(0, cos(φwi φwo ))sin(a)tan(b)) (16) π missä a = max(θwo, θwi ), b = min(θwo, θwi ) (17) ja α 2 m A = α 2 m (18) ja α 2 m B = 0.45 α 2 m (19) Oren-Nayarin BRDF-malli ottaa huomioon myös energian säilymislain. (Montes & Ureña 2012.)
25 24(48) 4 Varjostimet ja HLSL Tässä luvussa kerrotaan, mitä ovat varjostimet eli shaderit, sekä kuinka niitä luodaan käyttämällä HLSL-ohjelmointikieltä. Modernissa grafiikkaohjelmoinnissa on tapana hyödyntää uusien näytönohjaimien tarjoamaa grafiikkakiihdytystä. Grafiikkakiihdytystä käyttävät operaatiot ohjelmoidaan erityisillä varjostinohjelmilla, jotka suoritetaan näytönohjaimella. Vaikka varjostinohjelmia käyttämällä onkin mahdollista toteuttaa laajalti erilaisia tehosteita, on varjostinohjelmia käyttävässä ohjelmassa huolehdittava oikeellisesta varjostinten alustuksesta ja piirtoon käytettävän datan syöttämisestä. (Korhonen 2013.) HLSL High Level Shading Language on Microsoftin kehittämä ohjelmointikieli varjostimia varten. HLSL-kielellä voidaan kirjoittaa C-tyylisiä ohjelmia näytönohjaimen suoritettavaksi. HLSL-ohjelmointikieli julkaistiin ensimmäisen kerran DirectX 9 -rajapintakokoelman mukana. (Shader Models, [Viitattu ].) Vuosien saatossa HLSL-kielestä on julkaistu uusia varjostinmalleja, jotka tuovat uusia ominaisuuksia vanhojen lisäksi. Alussa varjostinmalli tuotiin DirectX 8 - rajapintakokoelmaan ja siinä oli Assembly-tason ja C-tyylisiä komentoja, mutta tällä mallilla oli paljon rajoituksia johtuen sen aikaisesta grafiikkalaitteistosta. Myöhemmin varjostinmallit 2 ja 3 lisäsivät huomattavasti komentojen määrää. Ne olivat alkuperäistä varjostinmallia 1 tehokkaampia. Varjostinmalleissa 2 ja 3 oli silti ensimmäisen varjostinmallin mukana tulleita rajoitteita. (Shader Models, [Viitattu ].) Windows Vistasta alkaen varjostinmalli 4 oli täysin uudelleen suunniteltu ja se mahdollisti lähes rajattoman määrän komentoja. Ainoana rajoitteena oli grafiikkalaitteiston kapasiteetti. (Shader Models, [Viitattu ].)
26 25(48) Kuvio 5. Direct3D 11 -rajapinnan grafiikkakanava (Direct3D pipeline, [Viitattu ]). Kuvio 5 kertoo Direct3D 11 -rajapinnan sisältämän ohjelmoitavan kanavan. Direct3D 11 -rajapinnan grafiikkakanavaa ohjelmoidaan varjostinohjelmilla. Kuvio 5 näyttää, missä järjestyksessä kukin varjostinohjelma suoritetaan. (Direct3D pipeline, [Viitattu ].)
27 26(48) Input-Assembler-vaiheessa input assembler käsittelee käyttäjän täyttämät puskurit ja kokoaa ne sitten muiden kanavan vaiheiden käsiteltäväksi. Data voi olla pisteitä, viivoja tai kolmioita. (Direct3D pipeline, [Viitattu ].) Verteksivarjostin-tasolla verteksivarjostin prosessoi kulmapistedatan, minkä se saa input assemblerista. Tämän jälkeen data lähetetään Tesselaatio-tasolle, missä vähän yksityiskohtia sisältävät osapinnat voidaan muuttaa laadukkaammiksi. Tesselaatio-taso on hyödyllinen kun käsitellään yksinkertaisia malleja ja niistä halutaan laadukkaamman näköisiä. (Direct3D pipeline, [Viitattu ].) Geometriavarjostin-tasolla käsitellään kokonaisia kolmioita, viivoja tai yksittäisiä kulmapisteitä. Geometriavarjostin siis mahdollistaa useamman kulmapisteen käsittelyn toisin kuin verteksivarjostin. (Direct3D pipeline, [Viitattu ].) Stream-Output-tasolla dataa lähetetään geometriavarjostintasolta yhteen tai useampaan muistipuskuriin. Geometriavarjostintason ollessa pois käytöstä, dataa lähetetään verteksivarjostintasolta. Tätä dataa voidaan sen jälkeen käsitellä prosessorilla. (Direct3D pipeline, [Viitattu ].) Rasterointi-tasolla kulmapistedata ja muodot muutetaan rasterikuvaksi, joka muodostuu pikseleistä. Rasterointitason tarkoitus on muuttaa 3D-data näkymään 2D-kuvana näytöllä. (Direct3D pipeline, [Viitattu ].) Pikselivarjostin-tasolla voidaan muokata yksittäisten pikselien dataa, se mahdollistaa kuvan jälkikäsittelyn sekä valaistuksen laskemisen. Pikselivarjostintaso on mahdollista ottaa pois käytöstä, jos sitä ei tarvita. (Direct3D pipeline, [Viitattu ].) Output-Merger-taso on viimeinen taso, joka määrittelee pikselin lopullisen värin. Output-Merger käsittelee usean eri grafiikkakanavan dataa. (Direct3D pipeline, [Viitattu ].) Verteksivarjostinohjelman tarkoitus on tehdä käyttäjän määrittelemiä laskutoimituksia jokaiselle monikulmion kärkipisteelle hyödyntämällä näytönohjaimen rinnakkaista laskentaa (Korhonen 2013).
28 27(48) Geometriavarjostimessa lasketaan primitiivikohtaisia laskutoimituksia. Geometriavarjostimella voidaan tehdä muutoksia valmiiksi luodun kappaleen muotoon. (Korhonen 2013.) Pikselivarjostin käsittelee pikselikohtaista dataa verteksivarjostimen ja geometriavarjostimen ulostulojen perusteella. Pikselivarjostimessa lasketaan pääosin kappaleiden valaistus ja kuvan jälkiprosessointi. Pikselivarjostin lasketaan jokaiselle ohjelmalle varatulle pikselille myös hyödyntämällä näytönohjaimen rinnakkaista laskentaa. (Korhonen 2013.) Laskentavarjostimet lasketaan täysin muiden varjostinohjelmien ulkopuolella. Eikä laskentavarjostin ole muista varjostinohjelmista riippuvainen, joten laskentavarjostimen toiminta on itsenäistä. Laskentavarjostimen avulla voidaan hyödyntää näytönohjaimen rinnakkaista laskentaa muutenkin kuin pelkästään graafisesti. Laskentavarjostinteknologia tunnetaan myös nimeltä DirectComputeteknologia. (Korhonen 2013.)
29 28(48) 5 Ohjelman rakenne ja toiminta Ohjelmassa esitellään yleisempiä reaaliaikaisessa grafiikassa käytettyjä BRDFmalleja. Ohjelmassa pystytään kätevästi vaihtamaan ajon aikana eri BRDF-mallien välillä graafisen käyttöliittymän avulla. Ohjelma noudattaa olio-ohjelmoinnin sääntöjä, eli ohjelman jokaisesta osasta on tehty oma luokkansa. Ohjelmassa käytetään 3D-malleissa pääasiassa wavefront formaattia, joka on yleinen 3Dmallien tallennusformaatti. Ohjelma pystyy lukemaan muitakin 3D-formaatteja, mutta niiden toimiminen oikein ei ole taattua. Ohjelmassa kuvien lataaminen ohjelman muistiin tapahtuu FreeImage-nimisen ohjelmakirjaston avulla. FreeImage tukee lähes kaikkia yleisimmin käytettyjä kuvaformaatteja, kuten PNG, JPEG, BMP ja TGA. Grafiikkamoottorissa kuvan muodostaminen on viivästetty eli kuva muodostetaan kahdessa osassa. Englanniksi tätä tapaa kutsutaan Deferred Rendering. Kuvan muodostaminen tapahtuu niin, että ensimmäisessä vaiheessa muodostetaan ohjelmasta riippuen noin 4 kuvaa, joihin tallennetaan nähdyn alueen kappaleiden paikat, värit, pintojen normaalit sekä yleensä heijastuskartat. Tämän vaiheen jälkeen nämä 4 kuvaa annetaan pikselivarjostimelle valaistuksen laskemista varten. Tämä tapa mahdollistaa huomattavan määrän enemmän valoja, sillä valaistus lasketaan vain nähdylle alueelle. 5.1 Ohjelman vaiheet Ohjelmassa on kolme vaihetta, jotka ovat aloitus, piirtämissilmukka ja lopetus. Ohjelman alussa valmistellaan ja luodaan ikkuna. Tämän jälkeen ladataan 3Dmalleja muistiin sekä ladataan ja käännetään kaikki varjostintiedostot. Ohjelman alussa valmistellaan myös Direct3D-olio, joka vastaa grafiikkalaitteiston käytöstä ja varjostimien kääntämisestä. Piirtämissilmukassa suoritetaan varsinainen 3D-grafiikan näyttäminen useassa eri vaiheessa. Piirtämissilmukan alussa päivitetään projektio- ja kameramatriisi käyttäjän toimintojen mukaan. Matriisien päivittämisen jälkeen kootaan geometriapuskuri, jossa kaikki kappaleet kamerasta nähden piirretään seitsemään
30 29(48) eri tekstuuriin. Geometriapuskurin sisältö on tämän vaiheen jälkeen seuraavanlainen: väri, pinnan normaalit, heijastukset, paikka, karheus, pinnan tangentit ja pinnan bitangentit. 5.2 Viivästetty kuvan piirto Viivästetyssä kuvan piirtämisessä hyödynnetään tekstuurien värikanavia tallentamalla niihin vektoreita. Tämä kuitenkin vaatii vähintään 16-bittisten värikanavien käyttöä, jotta tallennettujen vektoreiden tarkkuus säilyy. Näytölle piirrettäessä on kuitenkin mahdollista käyttää vain 8-bittisiä värikanavia. Kuvio 6. Geometriapuskurin sisältö Kuviossa 6 nähdään ruutukaappauksina otetut tekstuurit geometriapuskurissa. Näitä käytetään valaistuksen laskemisen apuna. Kuviossa on järjestyksessä vasemmalta oikealle: värit, pintojen normaalit, heijastuskartta, kappaleiden paikat XYZ-avaruudessa, karheus, tangentit ja bitangentit D-mallien lataaminen Ohjelmassa käytetään 3D-mallien lataamiseen ohjelmakirjastoa nimeltä Assimp. Assimp mahdollistaa monimutkaistenkin 3D-mallien käyttämisen helposti ja ohjelmakirjasto tukee monia eri 3D-mallien tallennusformaatteja. (Assimp, [Viitattu ].)
31 30(48) Assimp-ohjelmakirjasto on tarkoitettu käytettäväksi C/C++-ohjelmointikielien kanssa, mutta kirjastoa on mahdollista käyttää myös Pythonilla, D:llä ja Blitzmax ohjelmointikielillä. Ohjelmakirjaston verkkosivujen mukaan tulossa on tuki myös Javalle sekä C#-kielelle. (Assimp, [Viitattu ].) Kuvio 7. Crytekin luoma 3D-malli Dubrovnikin Sponza-palatsista Kuviossa 7 esitellään Crytekin luomaa 3D-mallia Sponza-nimisestä palatsista. Tämä 3D-malli on erittäin suosittu grafiikkaohjelmoijien kesken, kun testataan globaalia valaistusta tai varjojen luontia. Tämä 3D-malli ei kuitenkaan sovellu tämän opinnäytetyön aihepiiriin esittelemään BRDF-malleja, sillä mallissa on useita erilaisia materiaaleja, joihin on haastavaa valita yhtä sopivaa BRDF-mallia. Ohjelmassa käytetty Assimp-ohjelmakirjasto mahdollistaa helposti tämän kaltaisen monimutkaisen mallin käyttämisen ohjelmassa. 5.4 Ohjelman käyttöliittymä Käyttöliittymä on ohjelmassa toteutettu AntTweakBar-nimisen ohjelmakirjaston avulla. Käyttöliittymän on tarkoitus olla kevyt ja mahdollistaa vain muutama toiminto, mikä helpottaa BRDF-mallien tarkastelua ja 3D-mallien sekä valojen liikuttamista.
32 31(48) Kuvio 8. Ohjelman käyttöliittymä Kuviossa 8 on esitettynä ohjelman käyttöliittymä, jossa vasemmalla on valintaruudut BRDF-malleille, ja valon paikan sekä värin muuttamista varten olevat valintaruudut. Oikealla näkyvässä ikkunassa on kappaleiden paikan, koon ja kierron muuttamista varten olevat valintaruudut.
33 32(48) 6 BRDF-mallien toteutus Tässä kappaleessa kerrotaan BRDF-mallien toteutuksesta opinnäytetyötä varten tehdyssä grafiikkamoottorissa. Työhön valittiin sellaisia BRDF-malleja, joita käytetään yleisesti tietokonegrafiikassa, ja joihin löytyi tarpeeksi ohjeistusta toteutusta varten. Kaikissa BRDF-malleissa, jotka laskevat peiliheijastuksen, käytetään valoyhtälössä Lambertianin BRDF-mallia. Lambertianin mallin ja Oren-Nayarin mallin kohdalla lasketaan vain hajavalo eikä yhtälöön oteta mukaan peiliheijastusta. Kaikkiin yhtälöihin lisätään vielä vakio globalambient eli ympäristövalo. 6.1 Phongin mallin toteutus Phongin mallin toteutus grafiikkamoottorissa on yksinkertainen, eikä se vaadi montaa riviä varjostinkoodia. Phongin BRDF-malli on erittäin yleinen varsinkin netistä löydettävissä aloittelijan-oppaissa, joissa opetellaan käyttämään joko OpenGL-rajapintaa tai Direct3D-rajapintaa. Kuvio 9. Phongin BRDF-mallin HLSL-koodi
34 33(48) Kuvion 9 HLSL-koodissa Phongin BRDF-malli lasketaan niin, että hajavaloon käytetään Lambertianin BRDF-mallia ja peiliheijastusta kuvaa Phongin BRDF-malli. Tähän lisätään vielä vakio globalambient kuvaamaan ympäristön valoa. Täten kuviossa 9 esitelty metodi toteuttaa yhtälön (3). Kuvio 10. Phongin mallin toteutus ohjelmassa Kuviossa 10 esitelty Phongin heijastus on paras muovisille ja sileille pinnoille, se ei sovellu kuvassa olevalle osittain ruosteiselle ja karhealle materiaalille.
35 34(48) 6.2 Blinn-Phongin mallin toteutus Blinn-Phongin mallissa peiliheijastus lasketaan yhtälön (5) mukaan. Kuvio 11. Blinn-Phongin HLSL-koodi Kuviossa 11 esitellään Blinn-Phongin BRDF-mallin toteutus HLSLohjelmointikielellä. Blinn-Phongin BRDF-malli toteutetaan muuten samalla tavalla kuin Phongin malli, mutta Blinn-Phong käyttää puolivälivektoria H heijastusvektorin tilalla. Tämä on laskennallisesti kevyempi toteuttaa, koska ei tarvitse etsiä heijastusvektoria R.
36 35(48) Kuvio 12. Blinn-Phongin mallin toteutus ohjelmassa Kuviossa 12 nähdään, kuinka Blinn-Phongin mallissa kappaleesta heijastuva peiliheijastus on himmeämpi kuin Phongin mallissa. 6.3 Cook-Torrancen mallin toteutus Cook-Torrancen BRDF-malli on ehkä yleisin käytetty BRDF-malli laskemaan peiliheijastusta realistisuuteen tähtäävässä tietokonegrafiikassa. Cook-Torrancen malli on laskennallisesti jo hiukan vaativampi, mutta lopputulos on huomattavasti parempi kuin aiemmin esitellyissä Blinn-Phongin ja Phongin malleissa.
37 36(48) Kuvio 13. Cook-Torrancen BRDF-mallin HLSL-koodi Kuviossa 13 on esitettynä kokonaisuudessaan Cook-Torrancen BRDF-mallin HLSLkoodi ja se toteuttaa yhtälön (6). Metodissa haetaan normaalin hajautuminen NDF metodista nimeltä DistributionGGX, mikä toteuttaa yhtälön (8). Tässä käytetty yhtälö on nimeltään jo aiemmin mainittu Trowbridge-Reitz GGX. Geometriafunktio saadaan Smithin metodista. Fresnelin yhtälö lasketaan Fresnel-Schlickin
38 37(48) likiarvosta. Lopussa laskettuun Cook-Torrancen peiliheijastukseen lisätään Lambertianin mallista hajavalon osuus. Kuvio 14. Cook-Torrancen varjostimessa käytettyjä metodeja Kuviossa 14 on Cook-Torrancen mallin laskemiseen käytettyjä apumetodeja. DistributionGGX laskee normaalien hajautumisen pinnan normaalien,
39 38(48) puolivälivektorin ja karheuden avulla. GeometrySmith laskee GeometrySchlickGGX-metodin avulla geometriafunktion toteuttaen yhtälön (9). Kuvio 15. Fresnelin yhtälö HLSL-koodissa Kuviossa 15 nähdään Fresnelin yhtälö Schlickin likiarvolla. Kuviossa 15 esitellyn metodin parametreinä on HoV, joka on pistetulo kappaleesta kameraan kulkevasta vektorista V, ja puolivälivektorista H. Parametri F0 on kappaleen metallisuus. Tässä metodissa toteutetaan yhtälö (11).
40 39(48) Kuvio 16. Cook-Torrancen toteutus ohjelmassa Kuviossa 16 nähdään kuinka Cook-Torrancen BRDF-mallilla, joka on yhdistetty Lambertianin BRDF-mallin hajavaloon, saadaan aikaan hyvin realistisen näköinen lopputulos osittain sileästä metallista ja karheasta ruosteisesta metallista koostuvalla pinnalla. 6.4 Wardin mallin toteutus Wardin BRDF-malli on toteutettu yhtälön (13) mukaan varjostimessa.
41 40(48) Kuvio 17. Wardin mallin HLSL-koodi Kuvion 17 esittelemässä Wardin BRDF-mallin metodissa käytetään kahta uutta parametriä. Ne ovat kappaleen pinnan bitangentit ja binormaalit. Bitangentti on pinnalla normaalista katsoen oikealle lähtevä vektori ja binormaali on ylöspäin lähtevä vektori. Näiden vektorien avulla saadaan käyttäjän määrittelemien _AlphaXja _AlphaY-nimisten muuttujien kanssa muutettua peiliheijastusta niin, että se vaikuttaa enemmän elliptimäiseltä.
42 41(48) Kuvio 18. Wardin BRDF-malli ohjelmassa Kuviossa 18 Wardin BRDF-mallin toteutuksessa nähdään, että heijastuva valo on hieman ellipsimäinen, vaikka käyttäjän määrittelemät vakiot olivat molemmat 1. Käyttäjä pystyy halutessaan muuttamaan heijastuksen anisotrooppisuutta näitä vakioita muuttamalla.
43 42(48) 6.5 Lambertianin mallin toteutus Lambertianin mallia käytetään laskemaan vain hajavalon määrää. Sen mukaan valo heijastuu joka suuntaan yhtä paljon. Kuvio 19. Lambertianin mallin HLSL-koodi Kuviossa 19 Lambertianin malli toteutetaan yksinkertaisesti niin, että pinnan väri jaetaan piillä. Toteutuksessa tähän lisätään vain ympäristövalo. Metodista nähdään yhtälön (17) toteutus.
44 43(48) Kuvio 20. Lambertianin BRDF-mallin toteutus ohjelmassa Kuviossa 20 nähdään kuinka kappaleen väri pysyy tasaisena pallon pinnalla. Heijastuvaan valoon ei vaikuta katselukulma. 6.6 Oren-Nayarin mallin toteutus Oren-Nayarin totetuksessa käytetään yhtälöä (18).
45 44(48) Kuvio 21. Oren-Nayarin mallin HLSL-koodi Kuviossa 21 on metodi Oren-Nayarin BRDF-mallille, jota käytetään hajavalon esittämiseen. Metodin parametreinä on: pinnan väri, karheus, pistetulo vektoreista N ja V, pistetulo vektoreista N ja L, sekä pistetulo vektoreista V ja H.
46 45(48) Kuvio 22. Oren-Nayarin mallin toteutus ohjelmassa Kuviossa 22 Oren-Nayarin mallin toteutuksesta voidaan huomata, että vaikka malli kuvaa kappaleesta heijastuvaa hajavaloa, niin heijastuvan valon määrä lisääntyy kappaleen pinnan kaareuden kasvaessa. Tämä on selvä ero Lambertianin malliin, jossa valon heijastuminen pysyy tasaisena kulmasta riippumatta.
47 46(48) 7 Yhteenveto Opinnäytetyössä saavutettiin alkuperäinen tavoite ja saatiin tehtyä toimiva grafiikkamoottori käyttämällä DirectX 11 -rajapintakokoelmaa. Grafiikkamoottoriin ei tullut huomattavasti eri ominaisuuksia, vaan se on tehty pelkästään tätä opinnäytetyötä varten. Työssä päästään esittelemään kuutta eri BRDF-mallia. Vaikka malleja on todellisuudessa paljon enemmän, työssä tehdyt mallit ovat sellaisia, joita käytetään yleisimmin tietokonegrafiikassa. Työn laajuuden vuoksi kaikkia mahdollisia tietokonegrafiikassa käytettyjä BRDF-malleja ei päästy esittelemään. Työn tuloksena voidaan päätellä, että eri BRDF-mallit sopivat eri käyttötarkoituksiin. Wardin mallista voidaan päätellä, että se sopii paremmin esimerkiksi hiusten tai kankaan heijastuksen laskemiseen, sillä näiden materiaalien heijastukset ovat yleensä elliptisiä. Cook-Torrancen toteutuksen perusteella havaitaan, että se on kaikista realistisimman näköinen. Se johtuen siitä, että malli on kehitetty seuraamaan fysiikan lakeja tarkasti. Blinn-Phongin ja Phongin BRDF-mallit ovat taas hyviä opetuskäyttöön, sillä niiden matematiikka on helposti ymmärrettävissä. Lopuksi hajavaloa kuvaavat Lambertianin ja Oren-Nayarin BRDF-mallit ovat molemmat hyviä vaihtoehtoja lähes kaikkiin käyttötarkoituksiin. Jos valaistuksen on tarkoitus seurata tarkemmin fysiikan lakeja, voidaan tällöin käyttää Oren-Nayarin mallia, mutta jos halutaan käyttää yksinkertaisempaa hajavaloa, tällöin on Lambertianin BRDF-malli sopiva siihen tarkoitukseen.
48 47(48) LÄHTEET Assimp. Ei päiväystä. Open Asset Import Library. [Verkkosivu]. Assimp. [Viitattu ]. Saatavana: DirectX. Ei päiväystä. Microsoft DirectX. [Verkkosivu]. Computer Hope. [Viitattu ]. Saatavana: Direct3D pipeline. Ei päiväystä. Graphics Pipeline. [Verkkosivu]. Microsoft. [Viitattu ]. Saatavana: Direct2D. Ei päiväystä. About Direct2D. [Verkkosivu]. Microsoft. [Viitattu ]. Saatavana: DXGI. Ei päiväystä. DXGI Overview. [Verkkosivu]. Microsoft. [Viitattu ]. Saatavana: Eimandar, P DirectX 11.1 Game Programming. Packt Publishing Ltd Heiskanen, J DirectX-pelimoottori. [Verkkojulkaisu]. Helsinki: Metropolia Ammattikorkeakoulu. Tietotekniikka. Opinnäytetyö. [Viitattu ]. Saatavana: ence=1 Korhonen, S Varjostinohjelmien käyttöön perustuvan reaaliaikaisen grafiikan ohjelmointi. [Verkko-julkaisu]. Jyväskylä: Jyväskylän yliopisto. Tietojenkäsittelytieteiden laitos, Tietojärjestelmätiede. Kandidaatin tutkielma. [Viitattu ]. Saatavana: pdf?sequence=1 Kurt, M. & Edwards, D A Survey of BRDF Models for Computer Graphics. [Verkkojulkaisu]. Bornova: Ege University. International Computer Institute. [Viitattu ]. Saatavana: Montes, R. Ureña, C An Overview of BRDF Models. [Verkkojulkaisu]. Dept. Lenguajes y Sistemas Informáticos University of Granada, Spain. Saatavana:
49 48(48) Shader Models. Ei päiväystä. Shader Models vs Shader Profiles. [Verkkosivu]. Microsoft. [Viitattu ]. Saatavana: Shading More Shading and OpenGL. [Verkkosivu]. Opetussivusto. [Viitattu ]. Saatavana: Thibieroz, N. & Cebenoyan, C DirectCompute Performance on DX11 Hardware. [Verkkojulkaisu]. Game Developers Conference. [Viitattu ]. Saatavana: Compute_Performance.pdf Vries, J PBR Lighting. [Verkkosivu]. PBR Lighting. [Viitattu ]. Saatavana: Wynn, C. Ei päiväystä. An Introduction to BRDF-Based Lighting. [Verkko-julkaisu]. NVIDIA Corporation. [Viitattu ]. Saatavana: 8.pdf XAudio2. Ei päiväystä. XAudio Introduction. [Verkkosivu]. Microsoft. [Viitattu ]. Saatavana: XInput. Ei päiväystä. XInput and DirectInput. [Verkkosivu]. Microsoft. [Viitattu ]. Saatavana: Zink, J., Pettineo, M. & Hoxley, J Practical Rendering and Computation with Direct3D CRC Press.
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
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)
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
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................................
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
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...
Toinen harjoitustyö. ASCII-grafiikkaa
Toinen harjoitustyö ASCII-grafiikkaa Yleistä Tehtävä: tee Javalla ASCII-merkkeinä esitettyä grafiikkaa käsittelevä ASCIIArt-ohjelma omia operaatioita ja taulukoita käyttäen. Työ tehdään pääosin itse. Ideoita
1.3 Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä
OULUN YLIOPISTO Tietojenkäsittelytieteiden laitos Johdatus ohjelmointiin 811122P (5 op.) 12.12.2005 Ohjelmointikieli on Java. Tentissä saa olla materiaali mukana. Tenttitulokset julkaistaan aikaisintaan
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
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
Selainpelien pelimoottorit
Selainpelien pelimoottorit Teemu Salminen Helsinki 28.10.2017 Seminaaritutkielma Helsingin yliopisto Tietojenkäsittelytiede ! 1 HELSINGIN YLIOPISTO HELSINGFORS UNIVERSITET UNIVERSITY OF HELSINKI Tiedekunta
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)
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
Julkaisun laji Opinnäytetyö. Sivumäärä 43
OPINNÄYTETYÖN KUVAILULEHTI Tekijä(t) SUKUNIMI, Etunimi ISOVIITA, Ilari LEHTONEN, Joni PELTOKANGAS, Johanna Työn nimi Julkaisun laji Opinnäytetyö Sivumäärä 43 Luottamuksellisuus ( ) saakka Päivämäärä 12.08.2010
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
Tilanhallintatekniikat
Tilanhallintatekniikat 3D grafiikkamoottoreissa Moottori on projektin osa joka vastaa tiettyjen toiminnallisuuksien hallinnasta hallitsee kaikki vastuualueen datat suorittaa kaikki tehtäväalueen toiminnot
1.3Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä
OULUN YLIOPISTO Tietojenkäsittelytieteiden laitos Johdatus ohjelmointiin 81122P (4 ov.) 30.5.2005 Ohjelmointikieli on Java. Tentissä saa olla materiaali mukana. Tenttitulokset julkaistaan aikaisintaan
Sisällys. JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta. Abstraktin luokan idea. Abstrakti luokka ja metodi. Esimerkki
Sisällys JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta Abstrakti luokka ja metodi Rajapintamäärittely (interface) Eero Hyvönen Tietojenkäsittelytieteen laitos Helsingin yliopisto 13.10.2000 E.
Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset
Tekninen määrittely: Editori Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset Sisällysluettelo 1. Johdanto...4 1.1. Tarkoitus ja kattavuus...4 1.2. Tuote ja ympäristö...4 1.3. Määritelmät,
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,
7.6. Fysikaalinen peiliheijastus. Pinnan mikrogeometrian mallintaminen. Varjostus ja peittämisvaikutukset
7.6. Fysikaalinen peiliheijastus Tässä mallissa otetaan huomioon fysikaalispohjainen peilikomponentti (Blinn 1977. Sittemmin mallia laajennettiin käsittämään kirkkaan valaistuksen spektrin ja tämän riippuvuuden
DXL Library ja DXL-kielen olemus. Pekka Mäkinen Pekka.Makinen@softqa.fi SoftQA Oy http/www.softqa.fi/
DXL Library ja DXL-kielen olemus Pekka Mäkinen Pekka.Makinen@softqa.fi SoftQA Oy http/www.softqa.fi/ DOORS extension Language DXL on DOORSin laajennuskieli, jolla voidaan kehittää lisätoiminnallisuutta.
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
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.
TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. FT Ari Viinikainen
TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op FT Ari Viinikainen Tietokoneen rakenne Keskusyksikkö, CPU Keskusmuisti Aritmeettislooginen yksikkö I/O-laitteet Kontrolliyksikkö Tyypillinen Von Neumann
Rekursiolause. Laskennan teorian opintopiiri. Sebastian Björkqvist. 23. helmikuuta Tiivistelmä
Rekursiolause Laskennan teorian opintopiiri Sebastian Björkqvist 23. helmikuuta 2014 Tiivistelmä Työssä käydään läpi itsereplikoituvien ohjelmien toimintaa sekä esitetään ja todistetaan rekursiolause,
3D-renderöinti OpenGL-ohjelmointirajapinnalla
Mikko Kemppainen 3D-renderöinti OpenGL-ohjelmointirajapinnalla Tietotekniikan kandidaatintutkielma 28. huhtikuuta 2017 Jyväskylän yliopisto Tietotekniikka Tekijä: Mikko Kemppainen Yhteystiedot: mikko.t.a.kemppainen@student.jyu.fi
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,
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
4. Lausekielinen ohjelmointi 4.1
4. Lausekielinen ohjelmointi 4.1 Sisällys Konekieli, symbolinen konekieli ja lausekieli. Lausekielestä konekieleksi: - Lähdekoodi, tekstitiedosto ja tekstieditorit. - Kääntäminen ja tulkinta. - Kääntäminen,
TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli
TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op Assembly ja konekieli Tietokoneen ja ohjelmiston rakenne Loogisilla piireillä ja komponenteilla rakennetaan prosessori ja muistit Prosessorin rakenne
tään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla
2.5. YDIN-HASKELL 19 tään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla kirjaimilla. Jos Γ ja ovat tyyppilausekkeita, niin Γ on tyyppilauseke. Nuoli kirjoitetaan koneella
S11-09 Control System for an. Autonomous Household Robot Platform
S11-09 Control System for an Autonomous Household Robot Platform Projektisuunnitelma AS-0.3200 Automaatio- ja systeemitekniikan projektityöt Quang Doan Lauri T. Mäkelä 1 Kuvaus Projektin tavoitteena on
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
Kuvankäsittely. DigiReWork Annamari Mäenhovi Kati Nieminen
Kuvankäsittely DigiReWork 14.11.2017 Annamari Mäenhovi Kati Nieminen Työpajan sisältö Valokuvaamisen karkeat perusteet Kuvien ottamisen ja käyttämisen laillisuus Digitaalinen kuva Erityisvaatimukset alustoille
Android ohjelmointi. Mobiiliohjelmointi 2-3T5245
Android ohjelmointi Mobiiliohjelmointi 2-3T5245 Mikä on Android? Linux kernelin päälle rakennettu, Googlen kehittämä sovelluspino mobiilisovelluksiin Erillinen versio puhelimelle ja taulutietokoneille
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
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
Muita kuvankäsittelyohjelmia on mm. Paint Shop Pro, Photoshop Elements, Microsoft Office Picture Manager
Missio: 1. Asentaminen 2. Valokuvien tarkastelu, tallennus/formaatit, koko, tarkkuus, korjaukset/suotimet, rajaus 3. Kuvan luonti/työkalut (grafiikka kuvat) 4. Tekstin/grafiikan lisääminen kuviin, kuvien/grafiikan
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
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
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
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
mlvektori 1. Muista, että Jacobin matriisi koostuu vektori- tai skalaariarvoisen funktion F ensimmäisistä
Aalto-yliopisto, Matematiikan ja Systeemianalyysin laitos mlvektori 1. Muista, että Jacobin matriisi koostuu vektori- tai skalaariarvoisen funktion F ensimmäisistä osittaisderivaatoista: y 1... J F =.
Laskuharjoitus 9, tehtävä 6
Aalto-yliopiston perustieteiden korkeakoulu Jouni Pousi Systeemianalyysin laboratorio Mat-2.4129 Systeemien identifiointi Laskuharjoitus 9, tehtävä 6 Tämä ohje sisältää vaihtoehtoisen tavan laskuharjoituksen
Toinen harjoitustyö. ASCII-grafiikkaa 2017
Toinen harjoitustyö ASCII-grafiikkaa 2017 Yleistä Tehtävä: tee Javalla ASCII-merkkeinä esitettyä grafiikkaa käsittelevä ASCIIArt17-ohjelma omia operaatioita ja taulukoita käyttäen. Työ tehdään pääosin
8/20: Luokat, oliot ja APIt
Ohjelmointi 1 / syksy 2007 8/20: Luokat, oliot ja APIt Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007 p.1/8 Kohti
GIS-automatisointi ja ohjelmointi/skriptaus. Harri Antikainen
GIS-automatisointi ja ohjelmointi/skriptaus Harri Antikainen Mistä nyt puhutaan? Automatisointi: Mikä tahansa tapa teettää tietokoneella asioita ilman että käyttäjän tarvitsee tehdä muuta kuin laittaa
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
Raspberry Pi. Yhden piirilevyn tietokone. Tässä dokumentissa kerrotaan yleistä tietoa Rasberry Pi- tietokoneesta ja. sen toiminnoista.
Yhden piirilevyn tietokone Tässä dokumentissa kerrotaan yleistä tietoa Rasberry Pi- tietokoneesta ja sen toiminnoista. Sisällys Raspberry Pi Yleistä... 2 Teknistä... 2 Käyttöjärjestelmät... 4 Pelaaminen
PRINTER DRIVER PÄÄKÄYTTÄJÄN OPAS
PÄÄKÄYTTÄJÄN OPAS OpusCapita pidättää oikeuden muuttaa tuotteen ominaisuuksia ja tätä tuotekuvausta. Uusimmat versiot julkaistaan osoitteessa www.opuscapita.com/terms. 1. TEHTÄVÄKUVAUS Pääkäyttäjällä on
Suora 1/5 Sisältö ESITIEDOT: vektori, koordinaatistot, piste
Suora 1/5 Sisältö KATSO MYÖS:, vektorialgebra, geometriset probleemat, taso Suora geometrisena peruskäsitteenä Pisteen ohella suora on geometrinen peruskäsite, jota varsinaisesti ei määritellä. Alkeisgeometriassa
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
HELIA 1 (14) Outi Virkki Käyttöliittymät ja ohjlmiston suunnittelu
HELIA 1 (14) Luento 7 Käyttöliittymäolio... 2 Olioajattelun perusteet... 3 Tavoitteet... 3 Peruskäsitteet... 4 Olio / Olioinstanssi / Olion esiintymä... 4 Ominaisuudet... 4 Toiminnot... 4 Olioluokka /
Jussi Klemola 3D- KEITTIÖSUUNNITTELUOHJELMAN KÄYTTÖÖNOTTO
Jussi Klemola 3D- KEITTIÖSUUNNITTELUOHJELMAN KÄYTTÖÖNOTTO Opinnäytetyö KESKI-POHJANMAAN AMMATTIKORKEAKOULU Puutekniikan koulutusohjelma Toukokuu 2009 TIIVISTELMÄ OPINNÄYTETYÖSTÄ Yksikkö Aika Ylivieska
TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli
TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op Assembly ja konekieli Tietokoneen ja ohjelmiston rakenne Loogisilla piireillä ja komponenteilla rakennetaan prosessori ja muistit Prosessorin rakenne
Office 2013 - ohjelmiston asennusohje
Office 2013 - ohjelmiston asennusohje Tämän ohjeen kuvakaappaukset on otettu asentaessa ohjelmistoa Windows 7 käyttöjärjestelmää käyttävään koneeseen. Näkymät voivat hieman poiketa, jos sinulla on Windows
JWT 2016 luento 11. to 21.4.2016 klo 14-15. Aulikki Hyrskykari. PinniB 1097. Aulikki Hyrskykari
JWT 2016 luento 11 to 21.4.2016 klo 14-15 Aulikki Hyrskykari PinniB 1097 1 Viime luennolla o AJAX ja JSON, harjoitustyön tehtävänanto, vierailuluento avoimesta datasta Tänään o APIt rajapinnoista yleisesti
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ä
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
Matriiseista. Emmi Koljonen
Matriiseista Emmi Koljonen 3. lokakuuta 22 Usein meillä on monta systeemiä kuvaavaa muuttujaa ja voimme kirjoittaa niiden välille riippuvaisuuksia, esim. piirin silmukoihin voidaan soveltaa silmukkavirtayhtälöitä.
PERUSLASKUJA. Kirjoita muuten sama, mutta ota KAKSI välilyöntiä (SEURAA ALUEMERKINTÄÄ) 4:n jälkeen 3/4 +5^2
PERUSLASKUJA Matemaattisten lausekkeiden syöttäminen: Kirjoita ilman välilyöntejä 3/4+^2 3 4+ 2 Kirjoita muuten sama, mutta ota KAKSI välilyöntiä (SEURAA ALUEMERKINTÄÄ) 4:n jälkeen 3/4 +^2 3 + 4 2 Kopioi
Projektisuunnitelma. Projektin tavoitteet
Projektisuunnitelma Projektin tavoitteet Projektin tarkoituksena on tunnistaa erilaisia esineitä Kinect-kameran avulla. Kinect-kamera on kytkettynä tietokoneeseen, johon projektissa tehdään tunnistuksen
Mitä on konvoluutio? Tutustu kuvankäsittelyyn
Mitä on konvoluutio? Tutustu kuvankäsittelyyn Tieteenpäivät 2015, Työohje Sami Varjo Johdanto Digitaalinen signaalienkäsittely on tullut osaksi arkipäiväämme niin, ettemme yleensä edes huomaa sen olemassa
Yhteensopiva ja stabiili. Käsitteellistää suunnittelun. Parempi kuin koskaan aiemmin. Yksityiskohtien tarkka kuvaus. Saumaton kommunikaatio
ZWCAD 2012 ESITTELY Yhteensopiva ja stabiili Parempi kuin koskaan aiemmin Käsitteellistää suunnittelun Yksityiskohtien tarkka kuvaus Saumaton kommunikaatio ZWCAD -ohjelmointi Yhteensopiva ja stabiili Ylivertainen
13/20: Kierrätys kannattaa koodaamisessakin
Ohjelmointi 1 / syksy 2007 13/20: Kierrätys kannattaa koodaamisessakin Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy
Skedulerisimulaattorin implementointi fysiikkatöille ja sen matemaattinen validointi
Skedulerisimulaattorin implementointi fysiikkatöille ja sen matemaattinen validointi 24.01.2011 Ohjaaja: Tapio Niemi Valvoja: Harri Ehtamo Tausta ja työn tavoite Työ tehtiin Helsinki Institute of Physics:ille,
S11-04 Kompaktikamerat stereokamerajärjestelmässä. Projektisuunnitelma
AS-0.3200 Automaatio- ja systeemitekniikan projektityöt S11-04 Kompaktikamerat stereokamerajärjestelmässä Projektisuunnitelma Ari-Matti Reinsalo Anssi Niemi 28.1.2011 Projektityön tavoite Projektityössä
S09 04 Kohteiden tunnistaminen 3D datasta
AS 0.3200 Automaatio ja systeemitekniikan projektityöt S09 04 Kohteiden tunnistaminen 3D datasta Loppuraportti 22.5.2009 Akseli Korhonen 1. Projektin esittely Projektin tavoitteena oli algoritmin kehittäminen
Kuvailulehti. Korkotuki, kannattavuus. Päivämäärä 03.08.2015. Tekijä(t) Rautiainen, Joonas. Julkaisun laji Opinnäytetyö. Julkaisun kieli Suomi
Kuvailulehti Tekijä(t) Rautiainen, Joonas Työn nimi Korkotuetun vuokratalon kannattavuus Ammattilaisten mietteitä Julkaisun laji Opinnäytetyö Sivumäärä 52 Päivämäärä 03.08.2015 Julkaisun kieli Suomi Verkkojulkaisulupa
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,
Matematiikan tukikurssi
Matematiikan tukikurssi Kurssikerta 12 1 Eksponenttifuntio Palautetaan mieliin, että Neperin luvulle e pätee: e ) n n n ) n n n n n ) n. Tästä määritelmästä seuraa, että eksponenttifunktio e x voidaan
Moottorin kierrosnopeus Tämän harjoituksen jälkeen:
Moottorin kierrosnopeus Tämän harjoituksen jälkeen: osaat määrittää moottorin kierrosnopeuden pulssianturin ja Counter-sisääntulon avulla, osaat siirtää manuaalisesti mittaustiedoston LabVIEW:sta MATLABiin,
Mainosankkuri.fi-palvelun käyttöohjeita
Mainosankkuri.fi-palvelun käyttöohjeita Sisällys 1. Johdanto... 1 2. Sisäänkirjautuminen... 1 3. Palvelussa navigointi... 2 4. Laitteet... 2 5. Sisällönhallinta... 4 6. Soittolistat... 7 7. Aikataulut...
Hannu Mäkiö. kertolasku * jakolasku / potenssiin korotus ^ Syöte Geogebran vastaus
Perusohjeita, symbolista laskentaa Geogebralla Kielen vaihtaminen. Jos Geogebrasi kieli on vielä englanti, niin muuta se Options välilehdestä kohdasta Language suomeksi (finnish). Esittelen tässä muutaman
Videon tallentaminen Virtual Mapista
Videon tallentaminen Virtual Mapista Kamera-ajon tekeminen Karkean kamera ajon teko onnistuu nopeammin Katseluohjelmassa (Navigointi > Näkymät > Tallenna polku). Liikeradan ja nopeuden tarkka hallinta
Laskennallisen fysiikan esimerkkejä avoimesta tutkimuksesta Esa Räsänen Fysiikan laitos, Tampereen teknillinen yliopisto
Laskennallisen fysiikan esimerkkejä avoimesta tutkimuksesta Esa Räsänen Fysiikan laitos, Tampereen teknillinen yliopisto Julian Voss, Quantum man, 2006 (City of Moses Lake, Washington, USA) Kolme näkökulmaa
Kieliversiointityökalu Java-ohjelmistoon. Ohje
Kieliversiointityökalu Java-ohjelmistoon Ohje 2/6 SISÄLLYSLUETTELO 1 YLEISTÄ OHJELMASTA... 3 2 PÄÄ-IKKUNA...4 3 YLÄVALIKKO... 4 3.1 TIEDOSTO... 4 3.2 TOIMINTO... 4 3.3 ASETUKSET... 5 3.4 OHJE... 5 4 VÄLILEHDET...5
JAVA on ohjelmointikieli, mikä on kieliopiltaan hyvin samankaltainen, jopa identtinen mm. C++
JAVA alkeet JAVA on ohjelmointikieli, mikä on kieliopiltaan hyvin samankaltainen, jopa identtinen mm. C++ ja Javascriptin kanssa. Huom! JAVA ja JavaScript eivät silti ole sama asia, eivätkä edes sukulaiskieliä.
2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4)
2. Lisää Java-ohjelmoinnin alkeita Muuttuja ja viittausmuuttuja Vakio ja literaalivakio Sijoituslause Syötteen lukeminen ja Scanner-luokka 1 Muuttuja ja viittausmuuttuja (1/4) Edellä mainittiin, että String-tietotyyppi
Pedacode Pikaopas. Java-kehitysympäristön pystyttäminen
Pedacode Pikaopas Java-kehitysympäristön pystyttäminen Pikaoppaan sisältö Pikaoppaassa kuvataan, miten Windowstyöasemalle asennetaan Java-ohjelmoinnissa tarvittavat työkalut, minkälaisia konfigurointeja
LightWorks. 1 Renderoijan perussäädöt. 1.1 Sisältö. 1.2 LightWorksin käytön aloitus
1.9.2009 ArchiCAD 13 VI. - 1 LightWorks 1 Renderoijan perussäädöt 1.1 Sisältö Tässä luvussa käsitellään LightWorks-renderoijan käyttöönottoa ja säätöjä erilaisissa renderointitilanteissa. Lightworks-renderoija
PERUSLASKUJA. Kirjoita muuten sama, mutta ota välilyönti 4:n jälkeen 3/4 +5^2
PERUSLASKUJA Matemaattisten lausekkeiden syöttäminen: Kirjoita ilman välilyöntejä /+^2 Kirjoita muuten sama, mutta ota välilyönti :n jälkeen / +^2 Kopioi molemmat matematiikka-alueet ja liiku alueen sisällä
Tietorakenteet ja algoritmit
Tietorakenteet ja algoritmit Kurssin sisältö pääpiirteittäin Tarvittavat pohjatiedot Avainsanat Abstraktio Esimerkkiohjelman tehtäväkuvaus Abstraktion käyttö tehtävässä Abstrakti tietotyyppi Hyötyjä ADT:n
Matopeli C#:lla. Aram Abdulla Hassan. Ammattiopisto Tavastia. Opinnäytetyö
Matopeli C#:lla Aram Abdulla Hassan Ammattiopisto Tavastia Opinnäytetyö Syksy 2014 1 Sisällysluettelo 1. Johdanto... 3 2. Projektin aihe: Matopeli C#:lla... 3 3. Projektissa käytetyt menetelmät ja työkalut
812347A Olio-ohjelmointi, 2015 syksy 2. vsk. IX Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton
2015 syksy 2. vsk IX Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton Sisältö 1. Johdanto luontimalleihin 2. Proxy 3. Factory Method 4. Prototype 5. Singleton Suunnittelumallit Proxy et.
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
sivu 1 SURFCAM V5 JÄRJESTELMÄN VAATIMUKSET
sivu 1 Minimi: Käyttöjärjestelmä: Windows XP Service Pack 3 Prosessori: Duo Core II tai nopeampi Muisti: 2 GB RAM Kovalevytila: 1 GB vapaana DVD asema Näytönohjain: 512 MB näyttömuistia. DirectX 9.0c tai
Yleistä vektoreista GeoGebralla
Vektoreita GeoGebralla Vektoreilla voi laskea joko komentopohjaisesti esim. CAS-ikkunassa tai piirtämällä piirtoikkunassa. Ensimmäisen tavan etuna on, että laskujen tueksi muodostuu kuva. Tästä on varmasti
KADA (Drupal 7) migraatio uuteen (versioon) webiin
KADA (Drupal 7) migraatio uuteen (versioon) webiin Hallittu elinkaaren siirto suoran migraation sijaan Mikko Malmgren & Antti Tuppurainen Mikko Malmgren / Kuntaliitto Antti Tuppurainen / Industry62 @mikko_malmgren
1 Kannat ja kannanvaihto
1 Kannat ja kannanvaihto 1.1 Koordinaattivektori Oletetaan, että V on K-vektoriavaruus, jolla on kanta S = (v 1, v 2,..., v n ). Avaruuden V vektori v voidaan kirjoittaa kannan vektorien lineaarikombinaationa:
Järjestelmäarkkitehtuuri (TK081702) Avoimet web-rajapinnat
Järjestelmäarkkitehtuuri (TK081702) SOA yleistyvät verkkopalveluissa Youtube Google... Avaavat pääsyn verkkopalvelun sisältöön. Rajapintojen tarjoamia tietolähteitä yhdistelemällä luodaan uusia palveluja,
Javan asennus ja ohjeita ongelmatilanteisiin
Javan asennus ja ohjeita ongelmatilanteisiin Javaa tarvitaan Fivaldin Sovellusikkunan alaisiin sovelluksiin, jotka käyttävät Oracle Forms -tekniikkaa. Visma Fivaldin osalta suosittelemme aina käyttämään
UCOT-Sovellusprojekti. Asennusohje
UCOT-Sovellusprojekti Asennusohje Ilari Liukko Tuomo Pieniluoma Vesa Pikki Panu Suominen Versio: 1.00 Julkinen 15. joulukuuta 2006 Jyväskylän yliopisto Tietotekniikan laitos Jyväskylä Hyväksyjä Päivämäärä
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
Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit
Ohjelmiston testaus ja laatu Ohjelmistotekniikka elinkaarimallit Vesiputousmalli - 1 Esitutkimus Määrittely mikä on ongelma, onko valmista ratkaisua, kustannukset, reunaehdot millainen järjestelmä täyttää
http://info.edu.turku.fi/mato/
Matemaattisia VALOja Vapaita avoimen lähdekoodin ohjelmia matematiikan opettamiseen ja muuhun matemaattiseen käyttöön. http://info.edu.turku.fi/mato/ LaTeX ja Texmaker LaTeX on ladontaohjelmisto, joka
AUTOCAD-TULOSTUSOHJE. Tällä ohjeella selitetään Autocadin mittakaavatulostuksen perusasiat (mallin mittayksikkönä millimetrit)
AUTOCAD-TULOSTUSOHJE Tällä ohjeella selitetään Autocadin mittakaavatulostuksen perusasiat (mallin mittayksikkönä millimetrit) 1. MODEL VS. LAYOUT Autocadista löytyy vasemmasta alakulmasta automaattisesti
Action Request System
Action Request System Manu Karjalainen Ohjelmistotuotantovälineet seminaari HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos 25.10.2000 Action Request System (ARS) Manu Karjalainen Ohjelmistotuotantovälineet
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