Luihin perustuva 3D-animointi tietokonepeleissä
|
|
- Eero Halonen
- 8 vuotta sitten
- Katselukertoja:
Transkriptio
1 Luihin perustuva 3D-animointi tietokonepeleissä Tiina-Kaisa Oikarinen Helsinki Seminaarikirjoitelma HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos
2 HELSINGIN YLIOPISTO HELSINGFORS UNIVERSITET UNIVERSITY OF HELSINKI Tiedekunta/Osasto Fakultet/Sektion Faculty Laitos Institution Department Matemaattis-luonnontieteellinen Tekijä Författare Author Tiina-Kaisa Oikarinen Työn nimi Arbetets titel Title Tietojenkäsittelytieteen laitos Luihin perustuva 3D-animointi tietokonepeleissä Oppiaine Läroämne Subject Työn laji Arbetets art Level Aika Datum Month and year Sivumäärä Sidoantal Number of pages Seminaarikirjoitelma sivua Tiivistelmä Referat Abstract Tämä seminaarikirjoitus käsittelee hahmojen kolmiulotteista animointia tietokonepeleissä. Kirjoitelmassa tarkastellaan, miten animaatioita voidaan tallentaa, animoida ja piirtää ruudulle. Esitelty tekniikka perustuu luihin, jotka muodostavat luurankoja. Luurangon asentoa on mahdollista muuttaa kohdistamalla sen luihin erilaisia muunnoksia. Luuranko kiinnitetään olemassa olevan mallin objektiverkkoon, ja sen avulla malli saadaan liikutettua eri asentoihin. Tietokonepelillä on käytössään rajallisesti resursseja, joten animaatioiden tulee viedä mahdollisimman vähän tilaa ja suoritustehoja. ACM Computing Classication System (CCS): I.3.7 [Three-Dimensional Graphics and Realism] Avainsanat Nyckelord Keywords Tietokonepelit, 3D-animointi, luut Säilytyspaikka Förvaringsställe Where deposited Muita tietoja övriga uppgifter Additional information
3 ii Sisältö 1 Johdanto 1 2 Animaatioihin liittyviä käsitteitä Luurankohierarkia Transformaatio Suunnan esittäminen 3D-avaruudessa Mallit ja instanssit Animaatioiden tallentaminen x3-matriisin purku ja vakioiden käyttö Avainkuvat ja lineaarinen interpolointi Animointi Animaatioiden peräkkäistoisto Animaatioiden toistaminen Animaatioiden sulauttaminen Deformaatio Luiden siirto maailma-avaruuteen Mallin perusasennon poisto Verteksien ja niiden normaalien muuntaminen Yhteenveto 12 Lähteet 13
4 1 1 Johdanto Perinteinen piirretyistä elokuvista tuttu animaatio koostuu erillisistä kuvista, joita näytetään tarpeeksi nopeasti peräkkäin ja näin saadaan aikaan liikettä. Samalla periaatteella toimivat myös elokuvat, jotka koostuvat oikeasti vain pysäytyskuvista, joita näytetään nopeasti peräkkäin. Kun siirrytään 3D-maailmaan ja tietokonepeleihin perusperiaate säilyy samana. Oman lisänsä ja haasteen toteutukseen tuo kolmas ulottuvuus ja pelien käytössä olevat rajatut resurssit. Meillä on aluksi 3D-malli hahmosta, jonka mallintaja on luonut. Jotta saataisiin aikaan animoitu hahmo, tulee luoda jonkinlainen kontrollirakenne, jota muuntamalla saadaan aikaan erilaisia mallin asentoja. Useimmiten käytetään luurankoa, joka koostuu luista. Malli tulee kiinnittää jotenkin tähän luurankoon, niin että luurangon luiden vaihtaessa paikkaa myös malli seuraa mukana. Nyt meillä on keino liikuttaa mallia eri asentoihin. Luihin perustuvissa animaatiojärjestelmissä animaatio saadaan aikaan muuntamalla luurangon luita paikasta toiseen. Eri luihin kohdistuvat muunnokset saavat yhdessä aikaan mallin uuden asennon. Kun asentoja on tarpeeksi monta, malli liikkuu kolmiulotteisessa maailmassa eteenpäin. Tietokonepeleissä animoidaan usein paljon asioita. Animoitavista kohteista tärkein on yleensä pelaajan hahmo, jonka jälkeen oleellisimpia ovat muut keskeiset henkilöhahmot. Hahmojen lisäksi pelit sisältävät huomattavan paljon muita animoituja kohteita. Mitä todentuntuisempi peli pyrkii olemaan, sitä enemmän se sisältää animaatioita, sillä oikeassa maailmassa erityisesti luonnossa, kaikki on liikkeessä. Ongelmaksi muodostuu muistin vähyys. Animaatiot vievät paljon tilaa ja niitä joudutaan optimoimaan, jotta ne mahtuisivat niillä käytössä olevaan muistiin. Tietokonepelien tapauksessa joudutaankin tekemään kompromissi animaatioiden näyttävyyden ja kulutettujen resurssien välillä. Luvussa 2 käydään läpi 3D-animointiin liittyviä peruskäsitteitä. Luvussa 3 selvitetään, miten animaatiot saadaan tallennettua mahdollisimman pieneen tilaan. Luvussa 4 käsitellään animaatioiden toistamista ja sulauttamista toisiinsa. Luvussa 5 selitetään, kuinka objektiverkko deformoidaan, jotta malli voitaisiin piirtää näytölle. Luku 6 on yhteenveto. Kaikki luvut perustuvat lähteeseen [Rab05], erityisesti lukuun 5.2 Character Animation (sivut ).
5 2 2 Animaatioihin liittyviä käsitteitä Tässä kappaleessa käydään lyhyesti läpi animointiin liittyviä keskeisiä käsitteitä, joiden ymmärtäminen on tarpeen, jos haluaa ohjelmoida animaatiojärjestelmän. 2.1 Luurankohierarkia Luuranko koostuu luista. Luurangon luut muodostavat yleensä puuhierarkian, jossa jokainen luu roikkuu vanhemmastaan. Jokaisella luulla voi olla monta lapsiluuta. Hierarkia vastaa pitkälti tosimaailman ihmisluurangon rakennetta. Jokaiseen luuhun liittyy transformaatio, joka määrittää, kuinka luun liike eroaa sen vanhemman liikkeestä. Jos luulla ei ole vanhempaa, transformaatio määrittää sen liikkeen suhteessa johonkin muuhun määriteltyyn tilaan avaruudessa. Puuhierarkian ylin luu on juuriluu (root bone), ja sillä ei ole vanhempaa. Useimmilla luurangoilla on vain yksi juuriluu, joka on yleensä lantiolla, olkapäissä tai selän puolivälissä. Animaatiot muuttavat luiden transformaatiota ajan kuluessa ja saavat aikaan liikkeen. Luiden transformaation tallentaminen suhteessa niiden vanhempaan on tehokasta. Suurin osan ihmisen liikkeestä on etenemiskinematiikkaa (forward kinematics), jossa liike siirtyy luurankohierarkiassa vanhemmilta lapsille. Toisin sanoen isoin osa liikkeestä tehdään ensin suurten luiden siirroilla ja liikkeen hienomotorisemmista osista huolehtivat pienemmät luut. Tämä on helppo toteuttaa, kun luun liike on määritelty suhteessa vanhemman liikkeeseen. Tälle vastakkainen liikerata on käänteiskinematiikka, missä viimeisen luun paikka on kiinnitetty ja hierarkiassa ylemmät luut muuttavat paikkaansa, jotta viimeinen luu pysyisi paikallaan. Esimerkiksi sormenpään pitäminen samassa kohdassa, vaikka muu keho liikkuisi eri kohtaan. Käänteiskinematiikkaa käytetään animaatioiden korjaamiseen, kun halutaan varmistaa, että kosketus maailman muihin esineisiin säilyy vaikka animaatioita sulautetaan ja vääristetään. Luiden organisaatio ja niiden liitostavat toisiinsa mallissa muodostavat kokonaisuuden, jota kutsutaan kehikoksi (rig). Kehikko ei määrittele animaatiota, sillä se ei muutu ajan myötä, mutta se vaikuttaa siihen, mitkä liikkeet ovat mahdollisia ja miten ne voidaan saada aikaan. Hahmolla voi olla useita eri kehikoita erilaisia liikekokonaisuuksia varten, esimerkiksi eri kehikko kävelyyn, akrobatiaan ja naamanilmeisiin. Animaatiojärjestelmän olisi hyvä sallia luurankojen ja kehikoiden vaihtaminen, sillä tällöin ei rajoiteta animaattorin mahdollisuuksia animoida hahmoja monipuolisesti.
6 3 2.2 Transformaatio Animoinnissa puhutaan usein luun suunnasta (orientation), siirrosta (translation), skaalauksesta (scale) ja vääristymästä (shear). Tämä kokoelma ominaisuuksia muodostaa luun transformaation. Transformaatio on useimmiten lineaarinen muunnos, eli viiva, joka on suora, on myös suora muunnoksen jälkeen. Transformaatio voidaan esittää 4x3-matriisina ja se kirjoitetaan usein leveyssuunnassa, eli siinä on 4 saraketta ja 3 riviä. Vasemmalla sijaitseva 3x3-osion kolme saraketta sisältävät kierron, skaalauksen ja vääristymän. Matriisin neljäs sarake sisältää siirron. Kuvassa 1 on esimerkkimatriisi, josta käy ilmi transformaation eri osien sijainti matriisissa. kierto skaalaus vaaristyma siirto R 11 R 12 R 13 T x R 21 R 22 R 23 T y R 31 R 32 R 33 T z Kuva 1: Transformaatio 4x3-matriisina Animaatioita manipuloitaessa matriisi jaetaan usein neljään osaan. Kukin sarake muodostaa yhden osan ja näin saadaan erotettua tieto luun kierrosta, skaalauksesta, vääristymästä ja siirrosta. Tämä tehdään, koska kullakin muunnoksella on oma merkityksensä, eikä kaikkia muunnoksia tarvita normaalisti kaikille luille. Esimerkiksi ihmistä muistuttavan luurangon luut ovat kiinni vanhempiluussa nivelellä, joka sallii niiden pyörimisen. Niiden siirto on siis kiinnitetty (vanhempiluun nivelen kohta avaruudessa), mutta niitä voidaan kiertää. Koska luut ovat kovaa ainesta, ne eivät voi skaalautua tai vääristyä. Luun sijainti voidaan siis tallentaa kehikkoon vakiona, skaalaus on aina yksi ja vääristymää ei ole. Ainoastaan luun suunta pitää tallentaa, sillä vain se muuttuu ajan myötä, kun hahmoa animoidaan. Animaatiojärjestelmän muistin käyttö ja suoritusnopeus kannattaa optimoida tilanteeseen, jossa luuta kierretään tai sekä kierretään että siirretään.
7 4 2.3 Suunnan esittäminen 3D-avaruudessa Suunta 3D-avaruudessa voidaan esittää ainakin kolmella eri tavalla: Eulerin kulmilla, 3x3-matriisilla tai nelikolla. Eulerin kulmat (Euler Angles) ovat kolme kulmaa, joiden avulla voidaan kuvata mikä tahansa orientaatio 3-ulotteisessa avaruudessa. Kukin kulma kuvaa kierron tietyn avaruuden akselin ympäri. Kierrot suoritetaan peräkkäin ja näin saadaan aikaan haluttu suunnan muutos. Eulerin kulmille pitää kiinnittää akselien järjestys, jotta tiedetään, minkä akselin ympäri kulmat kierretään. Myös kierron suunta pitää kiinnittää. Koska pysyvää konventiota ei ole, eri järjestelmät käyttävät eri järjestystä ja eivät ole siksi yhteensopivia. Suurempi ongelma on, että monet näennäisesti erilaiset kolmen kulman yhdistelmät kuvaavat saman kierron. Tämä aiheuttaa ongelmia, kun animoinnissa interpoloidaan avainasentojen välillä. 3x3-matriisit ovat yksinkertainen tapa kuvata kiertoja. Matriiseja voi käyttää suoraan laskutoimituksissa. Kaksi matriisia, jotka kuvaavat lähekkäisiä orientaatioita, sisältävät myös samankaltaisia numeroita. Tästä johtuen kahden matriisin välinen interpolointi tuottaa hyvän lopputuloksen. Matriisin puutteena on sen viemä muistitila, joka on kolminkertainen Eulerin kulmiin verrattuna. Toinen ongelma tulee siitä, että 3x3-matriisilla voi esittää myös kierron, skaalauksen ja vääristyksen yhdistelmiä, kuten nähtiin aiemmin. Interpoloitaessa kahden matriisin välillä ei saada aikaan puhdasta kiertoa vaan mukaan tulee skaalausta ja vääristymistä, joiden poistaminen on suhteellisen kallis operaatio. Paras tapa esittää kierto on nelikot (quaternions). Nelikot koostuvat neljästä komponentista (x,y,z,w). Näistä (x,y,z) määrittää kierron akselin ja vektorin (x,y,z) pituus määrittää sinin puolikkaasta kierrettävästä kulmasta. Arvo w määrittää cosinin puolikkaasta kierrettävästä kulmasta. Näin saadaan erotettua keskenään sellaiset kulmat, joiden puolitetun kulman sini on sama, mutta puolitetun kulman cosini eri. Käytännössä käytetään vain yksikköpituisia nelikoita. Jos kaksi nelikkoa sisältää lähekkäisiä numeroita, kuvaavat ne samankaltaisen suunnan. Tästä johtuen niiden interpolointi toimii hyvin. Nelikoita käytetäänkin melkein aina, kun halutaan esittää suuntaa animoitaessa, sillä ne vievät vähän tilaa ja niillä interpolointi on tehokasta. 2.4 Mallit ja instanssit Malli on kuvaus tietystä pelimaailman objektista ja se koostuu objektiverkosta, joka on kokoelma nurkkapisteitä, kolmioita ja tekstuureita. Olennaisin osa hahmoa ani-
8 5 maatiojärjestelmän näkökulmasta on mallin sisältämä luuranko. Yhtä mallia voidaan käyttää useita kertoja samassa kohtauksessa. Esimerkiksi lokkiparven linnut käyttävät kaikki samaa mallia. Kustakin lokista tallennetaan kuitenkin lokkikohtaista tietoa kuten sen sijainti ja suunta, animaatioiden tila ja sen luiden tämänhetkinen asento. Tämän lisäksi kuhunkin lokkiin liittyy pelimekaanista tietoa, kuten miten nälkä sillä on. Lokkikohtainen tieto tallennetaan sen instanssiin, joka sisältää viittauksen instanssin käyttämään malliin. Animoitaessa tiettya instanssia täytyy tallentaa tieto siitä, mikä animaatio on kyseessä, sen alkamisaika, sen nopeus ynnä muuta sellaista. Animaatio saatetaan haluta myös pysäyttää tai sen nopeutta muuttaa. Näitä tietoja ei voida tallentaa itse animaatioon, sillä se on kaikille lokeille yhteinen. Animaatioita ei myöskään haluta kopioida, sillä ne vievät paljon tilaa. Tarvitaan jonkinlainen animaatiokonrollirakenne, joka yhdistää kohtauksen instansseihin tietyn animaation ja tallentaa tietoja animaatiosta, kuten sen nopeuden ja alkamisajan, ja joka voidaan käskeä pysähtymään (stop tai pause) tai muuttamaan suoritusnopeuttaan. Tietorakenteena käytetään kahta linkitettyä listaa, toisessa listassa ovat instanssit ja toisessa animaatiot. 3 Animaatioiden tallentaminen Animaatioiden tallentamisen suurin haaste on saada ne mahtumaan mahdollisimman pieneen tilaan. Esimerkiksi animaatiojärjestelmälle annettu muistitila on Playstation 2:ssa noin 8 megatavun luokkaa. Esimerkkinä luvussa toimii animaatiojärjestelmä, jossa jokaisesta luusta tallennetaan aluksi 4x3-matriisi, kutakin animaation kuvaa kohden kertaalleen. Näin animaation suorittaminen on helppoa. Oletetaan, että pelin animaatioissa on 30 kuvaa per sekunti, 5 päähahmoa, joilla kullakin 100 animaatiota, 15 sivuhahmoa, joilla kullakin 20 animaatiota, ja jokainen animaatio kestää keskimäärin 4 sekuntia. Kaikissa hahmoissa on 50 luuta. Kaiken kaikkiaan animaatiot veisivät tilaa 220 megatavua. Tämä on mahdoton tilavaatimus, sillä se ei ole lähelläkään sitä muistimäärää mitä animaatioille on tarjolla nykyisissä pelikonsoleissa. Animaatiojärjestelmän ohjelmoijalla ei ole valtaa vähentää hahmoja, animaatioita tai luiden määrää. Siksi ainut keino onkin pyrkiä optimoimaan tallennettavien animaatioiden viemä tila mahdollisimman pieneksi.
9 x3-matriisin purku ja vakioiden käyttö Jokaisesta luusta tulisi tallentaa vain oleellinen tieto. Tavallinen 4x3-matriisi kuvaa neljä toisistaan erillistä muunnosta: siirron, orientaation, skaalauksen ja vääristymän. Kuten aiemmin huomattiin, useimmat luut voivat vain vaihtaa orientaatiota. Poikkeuksena ovat luut, jotka kuvaavat lihaksia, ne osaavat myös vääristyä. On myös joitain animaatioita, jotka eivät liikuta kaikkia luita, esimerkiksi istuallaan oleva hahmo liikuttaa yleensä vain yläruumiinsa luita. Paikallaan pysyvät luut voidaan tallentaa vakioina, eli niiden sijainti tallennetaan vain kerran, koska se on kaikissa animaation kuvissa sama. Optimoidaan animaation viemä tila jakamalla jokaisen luun 4x3-matriisi neljään osaan ja selvittämällä, mitkä osat pysyvät samana tai ovat vastaavat kuin vanhempiluulla. Vakiot tallennetaan kerran animaatiota kohti ja osat, joiden tieto on sama kuin vanhempiluulla, jätetään tallentamatta. Nyt siirto, skaalaus ja vääristymä saadaan tallennettua kukin kolmella arvolla ja orientaatio tallennetaan nelikkona, eli se vie neljä arvoa. Tämä säästää huomattavasti muistia. Kääntöpuolena prosessorille tulee enemmän laskettavaa, kun se etsii animaation, lukee sen sisältämän datan, täydentää animaation sisältämän datan vakioilla ja vanhempiluun osista saatavilla tiedoilla ja koostaa sitten näistä kaikista kutakin luuta kohden 4x3-matriisin. Nähty vaiva on kuitenkin kannattavaa, sillä yhden kuvan yhden luun tallentamiseen käytetty muistitila saadaan noin puolitettua, kun tarpeettomat muunnokset jäävät pois. Yhden luun viemä tila per kuva on nyt 24 bittiä, kun se aiemmin oli 48 bittiä. Pelin animaatiot vievät nyt 110 megatavua tilaa. 3.2 Avainkuvat ja lineaarinen interpolointi Seuraava tapa rajoittaa animaation viemää tilaa on vähentää käytettäviä kuvia per sekunti. Tällöin yksi animaatio vie vähemmän tilaa, sillä siinä on vähemmän tallennettavia kuvia ja siten vähemmän yhden luun eri asentoja. Otetaan käyttöön tekniikka, jotka kutsutaan avainkuviksi ja joka on lähtöisin käsinpiirretyistä animaatioista. Ideana on, että pääartisti piirtää vain tärkeimmät avainkuvat hahmon animaatioista. Yleensä kustakin hahmon liikkeestä piirretään staattiset asennot alusta, keskikohdasta ja lopusta. Vaikeammissa tai epätavallisissa liikkeissä käytetään useampia avainkuvia, jotta päästäisiin haluttuun lopputulokseen. Avainkuvien väliin tarvittavat vähemmän tärkeät kuvat piirtää useampi eri ihminen. Koska avainkuvat määräävät pitkälti liikkeen päälinjat, on välikuvien piirto suhteellisen helppoa.
10 7 Tietokonepeleissä sen sijaan, että tallentaisimme animaatiosta esimerkiksi 30 kuvaa, eli asentoa per sekunti, tallennamme vähemmän asentoja ja interpoloimme näiden ennalta luotujen avainasentojen väliset asennot. Animaattorit luovat nämä avainasennot valmiiksi, ja loput interpoloidaan pelin ollessa käynnissä. Koska orientaatio tallennettiin nelikkona, on sen interpolointi helppoa. Väliasennot saadaan nyt lineaarisella interpoloinnilla. Kahden peräkkäisen avainkuvan välissä oleva kuva, joka on ajassa 25 prosenttia ensimmäisestä avainkuvasta, saadaan seuraavasti. Ensimmäisen avainkuvan arvot kerrotaan luvulla 0,75 ja toisen avainkuvan arvot luvulla 0,25; sitten näistä saadut arvot lasketaan yhteen. Nyt meillä on tiedossa välikuvan arvot eli uusi asento, joka saatiin laskemalla. Siirto, skaalaus ja vääristys interpoloituvat suoraan hyvin. Orientaation interpoloinnissa tulee nelikot ensin normalisoida eli niiden pituudeksi pitää saada käytetyn yksikön pituus, useimmiten 1. Interpoloinnin jälkeen nelikot pitää uudelleennormalisoida, sillä muuten niihin jää skaalaja vääristymävirheitä. Tämä onnistuu jakamalla nelikon jokainen luku nelikon pituudella. Avainkuvien käytössä on myös omat haasteensa. Jos kyseessä on tarkka animaatio, sen yksityiskohtia menetetään. Ei ole myöskään yhtä sopivaa avainkuvien tiheyttä, vaan niiden määrä on animaatiokohtainen. Esimerkiksi helikopterin roottorin liike vaatii huomattavasti enemmän avainkuvia kuin nukkuvan ihmisen animointi, missä muutama avainkuva riittää, sillä pääasiallinen liike on ihmisen rintakehän kohoilu. Avainkuvien tiheyden määrittämisen lisäksi tulee olla tarkkana, kun valitsee itse avainkuvia. Jos nukkuvan ihmisen rintakehän animaatiosta valitaan sellaiset kuvat, joissa rintakehä on juuri laskeutumisen puolivälissä ja toisessa kohoamisen puolivälissä, ei saada aikaan mitään liikettä, sillä kuvat ovat käytännössä samat. Avainkuvia käyttämällä ei siis voida loputtomasti vähentää animaation käyttämää tilaa, sillä vastaan tulee raja, jonka jälkeen animaatio ei enää näytä siltä, mikä oli tarkoitus. Avainkuvien määrä per animaatio onkin animaatiokohtaista. Jotkut animaatiot tarvitsevat monia avainkuvia eivätkä siedä interpolointia, siinä missä toisissa pystytään hyödyntämään paljon interpolointia ja näin selvitään paljon vähemmällä määrällä avainkuvia. Keskiarvo tietokonepelien animaatioissa käytettäville avainkuville on noin 10 per sekunti. Muistia kuluu siis kolmannes siitä mitä ennen avainkuvien käyttöönottoa meni, kun jokaista animaatiota varten tallennettiin 30 kuvaa per sekunti (110 KB/3 = 36,7 KB). Animaatiot vievät nyt noin 37 megatavua tilaa. Lineaarinen interpolointi ei sovellu kaarevia liikeratoja sisältävien animaatioiden välikuvien luomiseen, sillä se olettaa, että muutos tapahtuu suoraa linjaa pitkin. Näin
11 8 ei kuitenkaan ole esimerkiksi pomppivan pallon kohdalla. Ongelma korjaantuu, kun interpoloidaan käyrää pitkin; suorat voidaan korvata esimerkiksi Bezierin käyrillä. Tämä saa useimmiten aikaan luonnollisemman lopputuloksen, sillä useimmat liikeradat muodostavat käyriä. Kustakin Bezierin käyrästä pitää tallentaa kaksi tai kolme kontrollipistettä siinä missä suoran yhteen osaan riitti yksi, sen päätepiste. Käyrästä tallennetaan myös pieni tietorakenne. Käyriä kannattaa kuitenkin käyttää, sillä niitä tarvitaan noin kymmenesosa verrattuna siihen, kuinka monta erillistä suoraa lineaarisessa interpoloinnissa tarvittaisiin saman liikkeen aikaansaamiseen. Käyriä käytettäessä osioita tarvitaan vähemmän, sillä kaarevaliikerata voidaan arvioida kaarevilla osilla paremmin kuin suorilla osilla. Suorien osioiden tulee olla melko lyhyitä, jotta ne yhdistettyinä toisiinsa näyttäisivät muodostavan kaaren. Käyrät osat kaartuvat jo valmiiksi ja ne saadaan liittymään toisiinsa sulavasti, jolloin vähempi määrä osioita riittää saamaan aikaan hyvännäköisen kaaren. Koska käyriä käyttämällä selvitään huomattavasti vähemmillä osioilla, animaation käyttämä muistitila vähenee nyt 37 megatavusta 10 megatavuun. 4 Animointi Animaatioita voidaan toistaa peräkkäin, toistaa tiettyinä ajanhetkinä ja luoda niistä sulauttamalla uusia animaatioita. Tässä kappaleessa käsitellään lyhyesti, miten animointi tapahtuu animaatiojärjestelmässä. 4.1 Animaatioiden peräkkäistoisto Monet animaatiot toistetaan useita kertoja peräkkäin (looping). Animaation toistokertojen vaihtumiskohdassa ei saa tulla äkillisiä muutoksia hahmon sijainnissa tai liikkeen nopeudessa. Animaattorit osaavat huolehtia tästä tehdessään animaatioita, mutta jatkuvuus tulee ottaa myös huomioon, kun ohjelmoidaan animaatiojärjestelmää. Käytettäesssä transformaatioita muuntamaan luurangon asentoa tulee varmistua siitä, ettei muunnos riko jatkuvuutta. Jatkuvuus tulee ottaa huomioon myös silloin, kun toistetaan peräkkäin useita eri animaatioita. Erillisten animaatioiden toistonopeuden tulisi olla sama, sillä se helpottaa liikkeen nopeuden säilyttämistä samana.
12 9 4.2 Animaatioiden toistaminen Kun halutaan toistaa (sample) animaatio, valitaan animaatiolle lokaaliaika (local time). Se alkaa tyypillisesti nollasta, kun animaation toisto alkaa, ja loppuu, kun alkuperäisellä nopeudella toistettu animaatio loppuu. Esimerkiksi viiden sekunnin pituisen animaation lokaaliaika alkaa nollasta (0.0) ja kuluu, kunnes saavuttaa 5 sekuntia (5.0). Yksikkönä käytetään yleensä sekuntia. Toinen pelien käyttämä aika on globaaliaika (global time), mikä kuvaa pelimaailman sisäistä kuluvaa aikaa. Animaation lokaaliaika voi kulkea eri tahtiin globaalin kanssa, jos sitä toistetaan nopeampaa tai hitaampaa kuin alkuperäisellä nopeudelle, joka on kiinnitetty animaation tekovaiheessa. Se voi myös kulkea taaksepäin, jos animaatio halutaan toistaa vastakkaisessa järjestyksessä. Yleensä pelin sisäiset luonnonvoimat kuten painovoima kulkevat globaaliajan kanssa samaa tahtia, eikä niiden nopeuteen voi vaikuttaa. Lisäksi on vielä olemassa tosimaailman aika (real-world time), jonka käyttäjä näkee. Globaaliaika ja tosimaailman aika kulkevat samaa vauhtia, kun peli on käynnissä, paitsi silloin kun pelaaja pysäyttää (pause) pelin tai katsoo jotain pelin tapahtumaa hidastuksena. Animaatiojärjestelmien ei tarvitse välittää tosimaailman ajasta, mutta on hyvä muistaa, ettei pelin globaaliaika ole sama asia todellisen ajan kanssa. Animaation nopeus on kuluneen globaalin ajan suhde kuluneeseen lokaaliaikaan. Jos nopeus on yksi, kulkevat ajat samaa tahtia ja animaatio toistuu alkuperäisellä nopeudella. Jos nopeus on 0,5 animaatio toistetaan puolella globaalin ajan nopeudesta, eli animaatiosta toistetaan puoli sekuntia globaalin ajan kulkiessa yhden sekunnin ja näin ollen näytöllä näkyvä animaatio hidastuu. Pelissä on vain yksi globaaliaika, joka vastaa pelissä tähän hetkeen mennessä kulunutta aikaa. Yleensä animaatioita toistetaan pelin globaaliajassa, joka normaalisti vastaa piirrettävänä olevaa ajanhetkeä. Joskus on kuitenkin tarpeen pystyä toistamaan animaatioita menneisyydessä tai tulevaisuudessa ilman, että pelin globaaliaika muuttuu minnekään. Animaatiojärjestelmän pitäisi siis pystyä käsittelemään useaa globaaliaikaa samanaikaisesti (scrubbing). Animaatioita toistetaan etukäteen, jotta pystyttäisiin ennustamaan animaation liikkeen suuntaa. Esimerkiksi minne hahmon askeleet johtavat, mihin sen aloittama hyppy suuntautuu tai mihin kohtaan hahmo kurkottaa ottamaan jotain esinettä. Oleellista on varmistaa, että animaation toistamiseen käytetään koodia, jossa tuetaan tehokasta pääsyä animaation yksittäiseen kuvaan, vaikka se olisi animaation keskellä. Animaatioiden tallentamiseen ei kannata käyttää sellaisia tekniikoita, joissa joudutaan pahimmillaan toistamaan animaatioa alusta saakka haluttuun kohtaan, jotta yksittäisen kuvan arvot selviäi-
13 sivät (esimerkiksi kaikkien kuvien tallentaminen delta-arvoina, joka kertoo, miten kuva on muuttunut edellisestä kuvasta) Animaatioiden sulauttaminen Hyvän animaatiojärjestelmän tulee osata toistaa useita animaatioita samanaikaisesti yhdessä hahmossa ja sulauttaa (blend) ne saumattomasti toisiinsa niin, että ne muodostavat yhden animaation. Yksinkertaisin tapa on käyttää lineaarista interpolointia (lerp) kahden animaation transformaatioiden yhdistämiseen. Transformaatio voi olla, joko 3x3-matriisi tai nelikko. Kahden siirron, skaalauksen ja vääristymän yhdistäminen on helppoa. Kahden rotaation yhdistäminen on työläämpää, sillä se vaatii transformaatioiden ja tuloksen normalisointia. Kaksi normalisoinneista voidaan kuitenkin korvata kevyemmällä algoritmilla, joka käyttää arvioituja arvoja sen sijaan, että laskisi neliöjuurten tarkkoja arvoja. Useampia animaatiota voidaan sulauttaa toisiinsa tekniikalla, jossa kullekin animaatiolle annetaan painoarvo (multiway blending). Sulautettavat animaatiot lasketaan yhteen, kukin kerrottuna omalla painoarvollaan, ja saatu tulos jaetaan kaikkien animaatioiden painoarvojen summalla. Usein halutaan animoida vain osa luurangon luista. Esimerkiksi vilkuttamisessa riittää animoida vain vilkuttava käsi. Luumaski (bone mask) on lista numeroita, jotka antavat kullekin luulle numeroarvon nollasta ykköseen. Numeroarvot kertovat, kuinka paljon animaatio vaikuttaa kyseiseen luuhun (0= ei vaikutusta, 1=täysi vaikutus). Parhaaseen lopputulokseen päästään, kun animaattori antaa luiden painoarvot suoraan. Yleensä niiden vaikutusta ei voi nähdä suoraan animointiohjelmassa, minkä vuoksi niitä joudutaan testamaan pyörittämällä animaatioita pelissä ja tutkimalla, milloin aikaansaadaan haluttu lopputulos. Luumaski yhdistetään animaatioon ja sitä käytetään, kun animaatioita sulautetaan keskenään. Luumaskin arvot kerrotaan animaation painoarvolla. Saatuja uusia luumaskin arvoja käytetään sulautuksessa. Animaation vaikutus siis on eri luissa eri suuri. Luumaskien avulla voidaan määrittää osia luurangoista, joihin vaikuttaa vain tietty animaatio ja sitten sulauttaa näiden animaatioiden liittymäkohtien luita keskenään niin, että aikaansaadaan sulava kokonainen animaatio.
14 11 5 Deformaatio Luurankoon kohdistuvat transformaatiot tietyllä ajanhetkellä muodostavat asennon (pose). Animointi on prosessi, missä luurangon asentoa muutetaan ajan kuluessa. Koska asento on lista erilaisia transformaatioista, sitä ei voi piirtää suoraan ruudulle. Deformaatio on prosessi, missä otetaan yksi animaation tuottama asento ja siirretään sen perusteella objektiverkon (mesh) nurkkapisteet asennon kuvaamaan kohtaan, jolloin malli on valmis piirrettäväksi ruudulle. Tyypillisesti animaatiojärjestelmä välittää vain animaatioiden toistamisesta ja sulauttamisesta. Renderöintijärjestelmä taas on kiinnostunut vain yksittäisistä asennoista ja käyttää niitä deformoinnissa. Animointi ja renderöinti ovat siis toisistaan erillisiä. Tämä on hyödyllistä, sillä renderöinti voidaan suorittaa eri nopeudella kuin muu peli. Useimmat pelimoottorit tekevät kaiken animointiin liittyvän laskennan prosessorissa ja antavat sitten asennot graikkalaitteistolle, joka suorittaa mallin deformaation ja renderöinnin ruudulle. 5.1 Luiden siirto maailma-avaruuteen Luuranko on alunperin lokaalissa asennossa (local pose), missä asennon kuvaavien luiden transformaatiot on tallennettu suhteessa niiden vanhempiin. Luuranko pitää muuttaa maailma-asentoon (world pose), missä transformaatiot kertovat luun paikan suhteessa maailma-avaruuteen. Tämä on yksinkertainen prosessi. Muuntaminen aloitetaan juuriluusta. Sen nykyinen transformaatio kerrotaan transformaatiolla, joka ilmoittaa animoitavan instanssin sijainnin ja suunnan pelimaailmassa. Nyt juuriluun transformaatio on muunnettu maailma-avaruuteen. Seuraavaksi muunnetaan kaikki juuriluun lapset kertomalla niiden transformaatiot äsken lasketulla juuriluun maailmatransformaatiolla. Näin jatketaan rekursiivisesti edeten puussa alaspäin, kunnes kaikkien luiden transformaatiot on muunnettu. Maailmatransformaatio tulee laskea ensin vanhempiluissa ja vasta sitten lapsissa. Tämän varmistaminen onnistuu tallentamalla luiden transformaatiot (alkuperäiset ja muunnetut) taulukkoon, jossa vanhempiluut tallennetaan aina ennen lapsiluita. Näin luut voidaan käsitellä lineaarisesti. Maailma-asentoa käytetään useimmissa fysiikkasimulaatioissa ja törmäystarkistuksissa.
15 Mallin perusasennon poisto Nyt kaikki luut ovat maailma-avaruudessa. Transformaatioita ei voida suoraan käyttää muuttamaan mallin objektiverkkoa, sillä se on perusasennossa. Objektiverkko pitääkin muuntaa ensin 'tyhjään asentoon'. Perusasento saadan nollattua ottamalla sen luiden transformaatioiden käänteistransformaatiot ja kertomalla maailmaasennossa olevan luurangon vastaavien luiden muunnokset niillä. Tästä syntyviä transformaatioita voidaan käyttää objektiverkon muuntamiseen. 5.3 Verteksien ja niiden normaalien muuntaminen Seuraavaksi siirretään objektiverkon verteksejä. Jokaiseen objektiverkon verteksiin vaikuttaa tietty määrä luita. Yleensä vaikuttavien luiden maksimimäärä rajataan animaatiojärjestelmissä, käytetyin raja on neljä luuta. Mekaanisissa objekteissa riittää yksi luu per verteksi, sillä kaikki osat ovat kovia. Ihmisen vertekseihin tarvitaan taas vähintään 3, sillä nivuset, olkapäät ja kasvot eivät muuten animoidu nätisti. Jokaiselle vaikuttavalla luulle määrätään myös arvo, joka kertoo, kuinka paljon luu vaikuttaa deformoitavaan verteksiin. Näitä arvoja käytetään verteksin sijainnin laskennassa. Lopuksi muunnetaan vielä vertekseihin liittyvät vektorit, joita käytetään varjostuksiin. Ilman vektoreiden muuntamista hahmon varjostus menisi todennäköisesti väärin. Objektiverkko on nyt muunnettu uuteen asentoon, ja se voidaan piirtää ruudulle. Sama prosessi toistetaan jokaista animaation kuvaa kohti. 6 Yhteenveto Tietokonepeleissä käytetään paljon animaatioita, sillä ne saavat pelin näyttämään paremmalta. Animaatioiden viemä tila pitää saada mahdollisimman pieneksi, jotta pelin animaatiot mahtuisivat niille varattuun muistitilaan. Tässä onnistutaan optimoimalla yhden luun kuvaamiseen kuluvaa muistitilaa, vähentämällä animaatiosta tallennettujen kuvien määrää ja interpoloimalla loput kuvat näiden avainkuvien avulla. Animaatioiden toistossa tarvitaan omia tekniikoita, joiden avulla saadaan toistettua monia eri animaatioita peräkkäin ja sulautettua useista eri animaatioista uusia animaatioita. Animaatioiden uusiokäyttö sulauttamalla on kannattavaa, koska animaatioiden tekeminen on hidasta ja niiden tallentaminen vie tilaa.
16 13 Hahmoon liittyy aina tietty luuranko ja animaatioita. Näiden animaatioiden vaikutus hahmon objektiverkkoon voidaan laskea ja ruudulle piirrettävä kuva onkin hahmon objektiverkko, jota on muokattu luurangon asennon perusteella. Koska kyse on animaatiosta kolmiulotteisessa maailmassa hahmo liikkuu oikeasti. Pelilogiikan ja hahmon animaation onkin hyvä olla yhteisymmärryksessä siitä, missä kohtaa pelimaailmaa hahmo on. Lähteet Rab05 Rabin, S., Introduction to Game Development. Charles River Media, 2005.
3D animaatio: liikekäyrät ja interpolointi. Tommi Tykkälä
3D animaatio: liikekäyrät ja interpolointi Tommi Tykkälä Läpivienti Keyframe-animaatio Lineaarisesta interpoloinnista TCB-splineihin Bezier-käyrät Rotaatioiden interpolointi Kameran animointi Skenegraafit
LisätiedotHarjoitus Bones ja Skin
LIITE 3 1(6) Harjoitus Bones ja Skin Harjoituksessa käsiteltävät asiat: Yksinkertaisen jalan luominen sylinteristä Luurangon luominen ja sen tekeminen toimivaksi raajaksi Luurangon yhdistäminen jalka-objektiin
LisätiedotSelainpelien pelimoottorit
Selainpelien pelimoottorit Teemu Salminen Helsinki 28.10.2017 Seminaaritutkielma Helsingin yliopisto Tietojenkäsittelytiede ! 1 HELSINGIN YLIOPISTO HELSINGFORS UNIVERSITET UNIVERSITY OF HELSINKI Tiedekunta
Lisätiedotarvostelija OSDA ja UDDI palveluhakemistoina.
Hyväksymispäivä Arvosana arvostelija OSDA ja UDDI palveluhakemistoina. HELSINGIN YLIOPISTO HELSINGFORS UNIVERSITET UNIVERSITY OF HELSINKI Tiedekunta/Osasto Fakultet/Sektion Faculty/Section Laitos Institution
LisätiedotKoht dialogia? Organisaation toimintaympäristön teemojen hallinta dynaamisessa julkisuudessa tarkastelussa toiminta sosiaalisessa mediassa
Kohtdialogia? Organisaationtoimintaympäristönteemojenhallinta dynaamisessajulkisuudessatarkastelussatoiminta sosiaalisessamediassa SatuMariaPusa Helsinginyliopisto Valtiotieteellinentiedekunta Sosiaalitieteidenlaitos
LisätiedotTik-111.5450 Tietokoneanimaatio
Tik-111.5450 Tietokoneanimaatio 3. Asennon (pyörähdysliikkeen) esittäminen ja interpolointi 3.10.05 - Tassu Animaatio 2005 - luento 3 1 Sisältö matriisiesitys, matriisin komponenttivektorien merkitys perusakselien
LisätiedotLuento 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
LisätiedotTyön laji Arbetets art Level Aika Datum Month and year Sivumäärä Sidoantal Number of pages
Tiedekunta/Osasto Fakultet/Sektion Faculty Laitos Institution Department Tekijä Författare Author Työn nimi Arbetets titel Title Oppiaine Läroämne Subject Työn laji Arbetets art Level Aika Datum Month
LisätiedotLuku 8. Aluekyselyt. 8.1 Summataulukko
Luku 8 Aluekyselyt Aluekysely on tiettyä taulukon väliä koskeva kysely. Tyypillisiä aluekyselyitä ovat, mikä on taulukon välin lukujen summa tai pienin luku välillä. Esimerkiksi seuraavassa taulukossa
LisätiedotT-111.450 Tietokoneanimaatio ja mallintaminen. Lauri Savioja Teknillinen korkeakoulu Tietoliikenneohjelmistojen ja multimedian laboratorio 02/02
T-111.450 Tietokoneanimaatio ja mallintaminen Lauri Savioja Teknillinen korkeakoulu Tietoliikenneohjelmistojen ja multimedian laboratorio 02/02 Animaatio / 1 2D Avainkuvatekniikka Sisältö Kerronnallisia
LisätiedotVideon 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
LisätiedotDemo 1: Simplex-menetelmä
MS-C2105 Optimoinnin perusteet Malliratkaisut 3 Ehtamo Demo 1: Simplex-menetelmä Muodosta lineaarisen tehtävän standardimuoto ja ratkaise tehtävä taulukkomuotoisella Simplex-algoritmilla. max 5x 1 + 4x
LisätiedotLuku 7: Animaatio. Eksplisiittiset menetelmät Implisiittiset menetelmät Suora ja käänteinen kinematiikka Motion capture Elokuvamaisuus
Eksplisiittiset menetelmät Implisiittiset menetelmät Suora ja käänteinen kinematiikka Motion capture Elokuvamaisuus Animaatio Peleissä tärkeimmät animoitavat kohteet ovat pelihahmot, etenkin avatar Animointi
LisätiedotAika/Datum Month and year Kesäkuu 2012
Tiedekunta/Osasto Fakultet/Sektion Faculty Laitos/Institution Department Filosofian, historian, kulttuurin ja taiteiden tutkimuksen laitos Humanistinen tiedekunta Tekijä/Författare Author Veera Lahtinen
LisätiedotLAUSEKKEET JA NIIDEN MUUNTAMINEN
LAUSEKKEET JA NIIDEN MUUNTAMINEN 1 LUKULAUSEKKEITA Ratkaise seuraava tehtävä: Retkeilijät ajoivat kahden tunnin ajan polkupyörällä maantietä pitkin 16 km/h nopeudella, ja sitten vielä kävelivät metsäpolkua
LisätiedotLuku 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)
LisätiedotMaailman muutosta tallentamassa Marko Vuokolan The Seventh Wave -valokuvasarja avauksena taidevalokuvan aikaan
Maailman muutosta tallentamassa Marko Vuokolan The Seventh Wave -valokuvasarja avauksena taidevalokuvan aikaan Pro gradu -tutkielma 31.1.2012 Helsingin yliopisto Humanistinen tiedekunta Filosofian, historian,
LisätiedotMatematiikan tukikurssi
Matematiikan tukikurssi Kurssikerta 8 1 Suunnattu derivaatta Aluksi tarkastelemme vektoreita, koska ymmärrys vektoreista helpottaa alla olevien asioiden omaksumista. Kun liikutaan tasossa eli avaruudessa
LisätiedotAnimaation tuotanto. Mika Timonen
Animaation tuotanto Mika Timonen Sisällys Johdanto Animoijat - Odotukset ja vastuualueet Hahmoanimoinnin tuotantoketju Suunnittelu Pintakerroksen luonti Luurangon luonti Pintakerroksen yhdistäminen luurankoon
LisätiedotKohdissa 2 ja 3 jos lukujen valintaan on useita vaihtoehtoja, valitaan sellaiset luvut, jotka ovat mahdollisimman lähellä listan alkua.
A Lista Aikaraja: 1 s Uolevi sai käsiinsä listan kokonaislukuja. Hän päätti laskea listan luvuista yhden luvun käyttäen seuraavaa algoritmia: 1. Jos listalla on vain yksi luku, pysäytä algoritmi. 2. Jos
LisätiedotPro gradu -tutkielma Meteorologia SUOMESSA ESIINTYVIEN LÄMPÖTILAN ÄÄRIARVOJEN MALLINTAMINEN YKSIDIMENSIOISILLA ILMAKEHÄMALLEILLA. Karoliina Ljungberg
Pro gradu -tutkielma Meteorologia SUOMESSA ESIINTYVIEN LÄMPÖTILAN ÄÄRIARVOJEN MALLINTAMINEN YKSIDIMENSIOISILLA ILMAKEHÄMALLEILLA Karoliina Ljungberg 16.04.2009 Ohjaajat: Ari Venäläinen, Jouni Räisänen
Lisätiedoton hidastuvaa. Hidastuvuus eli negatiivinen kiihtyvyys saadaan laskevan suoran kulmakertoimesta, joka on siis
Fys1, moniste 2 Vastauksia Tehtävä 1 N ewtonin ensimmäisen lain mukaan pallo jatkaa suoraviivaista liikettä kun kourun siihen kohdistama tukivoima (tässä tapauksessa ympyräradalla pitävä voima) lakkaa
LisätiedotTietorakenteet, laskuharjoitus 7, ratkaisuja
Tietorakenteet, laskuharjoitus, ratkaisuja. Seuraava kuvasarja näyttää B + -puun muutokset lisäysten jälkeen. Avaimet ja 5 mahtuvat lehtisolmuihin, joten niiden lisäys ei muuta puun rakennetta. Avain 9
LisätiedotLuku 7. Verkkoalgoritmit. 7.1 Määritelmiä
Luku 7 Verkkoalgoritmit Verkot soveltuvat monenlaisten ohjelmointiongelmien mallintamiseen. Tyypillinen esimerkki verkosta on tieverkosto, jonka rakenne muistuttaa luonnostaan verkkoa. Joskus taas verkko
LisätiedotPeilaus 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
LisätiedotOhjeissa pyydetään toisinaan katsomaan koodia esimerkkiprojekteista (esim. Liikkuva_Tausta1). Saat esimerkkiprojektit opettajalta.
Ohjeissa pyydetään toisinaan katsomaan koodia esimerkkiprojekteista (esim. Liikkuva_Tausta1). Saat esimerkkiprojektit opettajalta. Vastauksia kysymyksiin Miten hahmon saa hyppäämään? Yksinkertaisen hypyn
LisätiedotAlgoritmit 2. Luento 2 Ke Timo Männikkö
Algoritmit 2 Luento 2 Ke 15.3.2017 Timo Männikkö Luento 2 Tietorakenteet Lineaarinen lista, binääripuu Prioriteettijono Kekorakenne Keko-operaatiot Keon toteutus taulukolla Algoritmit 2 Kevät 2017 Luento
LisätiedotVektorit. Kertausta 12.3.2013 Seppo Lustig (Lähde: avoinoppikirja.fi)
Vektorit Kertausta 12.3.2013 Seppo Lustig (Lähde: avoinoppikirja.fi) Sisällys Vektorit Nimeäminen Vektorien kertolasku Vektorien yhteenlasku Suuntasopimus Esimerkki: laivan nopeus Vektorit Vektoreilla
Lisätiedot58131 Tietorakenteet ja algoritmit (kevät 2016) Ensimmäinen välikoe, malliratkaisut
58131 Tietorakenteet ja algoritmit (kevät 2016) Ensimmäinen välikoe, malliratkaisut 1. Palautetaan vielä mieleen O-notaation määritelmä. Olkoon f ja g funktioita luonnollisilta luvuilta positiivisille
LisätiedotTIEA341 Funktio-ohjelmointi 1, kevät 2008
TIEA34 Funktio-ohjelmointi, kevät 2008 Luento 3 Antti-Juhani Kaijanaho Jyväskylän yliopisto Tietotekniikan laitos 2. tammikuuta 2008 Ydin-Haskell: Syntaksi Lausekkeita (e) ovat: nimettömät funktiot: \x
LisätiedotSVINGIN KIINNITYSKOHDAT
Antti Mäihäniemi opettaa kesäisin Master Golfissa ja talvisin Golfin Vermon House Prona. Hän on tutkinut golfsvingiä omatoimisesti yli kymmenen vuoden ajan. Hän on oppinut, että vain kyseenalaistamalla
LisätiedotGraafit ja verkot. Joukko solmuja ja joukko järjestämättömiä solmupareja. eli haaroja. Joukko solmuja ja joukko järjestettyjä solmupareja eli kaaria
Graafit ja verkot Suuntamaton graafi: eli haaroja Joukko solmuja ja joukko järjestämättömiä solmupareja Suunnattu graafi: Joukko solmuja ja joukko järjestettyjä solmupareja eli kaaria Haaran päätesolmut:
Lisätiedot2.3 Voiman jakaminen komponentteihin
Seuraavissa kappaleissa tarvitaan aina silloin tällöin taitoa jakaa voima komponentteihin sekä myös taitoa suorittaa sille vastakkainen operaatio eli voimien resultantin eli kokonaisvoiman laskeminen.
LisätiedotLiiketaitotestit ja tuloskortti
Liiketaitotestit ja tuloskortti 1 taso Perus liiketaidot Syväkyykky 1 - integroitu liikkuvuus käsivarret vaakatasossa edessä - suorita kyykkyliike niin alas kuin sujuvasti liike on mahdollista - lantiotason
LisätiedotKatsaus korruption vaikutuksesta Venäjän alueelliseen talouskasvuun ja suoriin ulkomaisiin investointeihin
INSTITUUTIOTTALOUSKASVUNEDELLYTYKSENÄ KatsauskorruptionvaikutuksestaVenäjänalueelliseentalouskasvuunjasuoriin ulkomaisiininvestointeihin2000 2010 AshekMohamedTarikHossain HelsinginYliopisto Valtiotieteellinentiedekunta
LisätiedotFlash ActionScript osa 4
Flash ActionScript osa 4 Tekstikentät Flash:ssa tekstikenttä voi olla tyypiltään joko TLF Text tai Classic Text. TLF Text on uusi Flash CS5 tullut tyyppi. Sen animointi ja muotoilu ominaisuudet ovat monipuolisemmat
Lisätiedot2016/06/21 13:27 1/10 Laskentatavat
2016/06/21 13:27 1/10 Laskentatavat Laskentatavat Yleistä - vaakageometrian suunnittelusta Paalu Ensimmäinen paalu Ensimmäisen paalun tartuntapiste asetetaan automaattisesti 0.0:aan. Tämä voidaan muuttaa
LisätiedotValmistelut: Aseta kartiot numerojärjestykseen pienimmästä suurimpaan (alkeisopiskelu) tai sekalaiseen järjestykseen (pidemmälle edenneet oppilaat).
Laske kymmeneen Tavoite: Oppilaat osaavat laskea yhdestä kymmeneen ja kymmenestä yhteen. Osallistujamäärä: Vähintään 10 oppilasta kartioita, joissa on numerot yhdestä kymmeneen. (Käytä 0-numeroidun kartion
LisätiedotSolmu 3/2001 Solmu 3/2001. Kevään 2001 ylioppilaskirjoitusten pitkän matematiikan kokeessa oli seuraava tehtävä:
Frégier n lause Simo K. Kivelä Kevään 2001 ylioppilaskirjoitusten pitkän matematiikan kokeessa oli seuraava tehtävä: Suorakulmaisen kolmion kaikki kärjet sijaitsevat paraabelilla y = x 2 ; suoran kulman
LisätiedotAsko Ikävalko, k0201291 22.2.2004 TP02S-D. Ohjelmointi (C-kieli) Projektityö. Työn valvoja: Olli Hämäläinen
Asko Ikävalko, k0201291 22.2.2004 TP02S-D Ohjelmointi (C-kieli) Projektityö Työn valvoja: Olli Hämäläinen Asko Ikävalko LOPPURAPORTTI 1(11) Ratkaisun kuvaus Käytetyt tiedostot Tietuerakenteet Onnistuin
LisätiedotTEKIJÄNOIKEUSNEUVOSTO LAUSUNTO 2015:6. Tekijänoikeus kolmiulotteiseen tietokoneanimaatioon
TEKIJÄNOIKEUSNEUVOSTO LAUSUNTO 2015:6 Asia Hakija Tekijänoikeus kolmiulotteiseen tietokoneanimaatioon B Annettu 21.4.2015 Tiivistelmä Kolmiulotteiset tietokoneanimaatiokuvat voivat itsenäisenä ja omaperäisinä
LisätiedotAlgoritmit 2. Luento 13 Ti Timo Männikkö
Algoritmit 2 Luento 13 Ti 30.4.2019 Timo Männikkö Luento 13 Simuloitu jäähdytys Merkkijonon sovitus Horspoolin algoritmi Ositus ja rekursio Rekursion toteutus Algoritmit 2 Kevät 2019 Luento 13 Ti 30.4.2019
LisätiedotKenguru 2012 Student sivu 1 / 8 (lukion 2. ja 3. vuosi)
Kenguru 2012 Student 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
LisätiedotYhtä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
LisätiedotAlgoritmit 2. Luento 2 To Timo Männikkö
Algoritmit 2 Luento 2 To 14.3.2019 Timo Männikkö Luento 2 Tietorakenteet Lineaarinen lista, binääripuu Prioriteettijono Kekorakenne Keko-operaatiot Keon toteutus taulukolla Algoritmit 2 Kevät 2019 Luento
LisätiedotELOKUVATYÖKALUN KÄYTTÖ ANIMAATION LEIKKAAMISESSA. Kun aloitetaan uusi projekti, on se ensimmäisenä syytä tallentaa.
ELOKUVATYÖKALUN KÄYTTÖ ANIMAATION LEIKKAAMISESSA Kun aloitetaan uusi projekti, on se ensimmäisenä syytä tallentaa. Projekti kannattaa tallentaa muutenkin aina sillöin tällöin, jos käy niin ikävästi että
LisätiedotKenguru 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ä
LisätiedotXXIII Keski-Suomen lukiolaisten matematiikkakilpailu 23.1.2014, tehtävien ratkaisut
XXIII Keski-Suomen lukiolaisten matematiikkakilpailu 23.1.2014, tehtävien ratkaisut 1. Avaruusalus sijaitsee tason origossa (0, 0) ja liikkuu siitä vakionopeudella johonkin suuntaan, joka ei muutu. Tykki
LisätiedotAlgoritmit 1. Luento 9 Ti Timo Männikkö
Algoritmit 1 Luento 9 Ti 7.2.2017 Timo Männikkö Luento 9 Graafit ja verkot Kaaritaulukko, bittimatriisi, pituusmatriisi Verkon lyhimmät polut Floydin menetelmä Lähtevien ja tulevien kaarien listat Forward
LisätiedotHarjoitus Morphing. Ilmeiden luonti
LIITE 1 1(5) Harjoitus Morphing Harjoituksessa käsiteltävät asiat: Objektien kopioiminen Editoitavan polygonin muokkaaminen Morph-modifier käyttö ilmeiden luomiseen Lyhyen animaation luonti set key- toimintoa
Lisätiedot1 Kertaus. Lineaarinen optimointitehtävä on muotoa:
1 Kertaus Lineaarinen optimointitehtävä on muotoa: min c 1 x 1 + c 2 x 2 + + c n x n kun a 11 x 1 + a 12 x 2 + + a 1n x n b 1 a 21 x 1 + a 22 x 2 + + a 2n x n b 2 (11) a m1 x 1 + a m2 x 2 + + a mn x n
LisätiedotVideon tallentaminen Virtual Mapista
Videon tallentaminen Virtual Mapista Kamera-ajon tekeminen Karkean kamera ajon teko onnistuu nopeimmin Katseluohjelmassa (Navigointi > Näkymät > Tallenna polku). Liikeradan ja nopeuden tarkka hallinta
LisätiedotLuku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti
Luku 6 Dynaaminen ohjelmointi Dynaamisessa ohjelmoinnissa on ideana jakaa ongelman ratkaisu pienempiin osaongelmiin, jotka voidaan ratkaista toisistaan riippumattomasti. Jokaisen osaongelman ratkaisu tallennetaan
LisätiedotLuonnontieteiden popularisointi ja sen ideologia
Luonnontieteiden popularisointi ja sen ideologia Tapauksina Reino Tuokko ja Helsingin Sanomat 1960-luvulla Ahto Apajalahti Helsingin yliopisto Humanistinen tiedekunta Suomen ja Pohjoismaiden historia Pro
LisätiedotTietorakenteet ja algoritmit - syksy 2015 1
Tietorakenteet ja algoritmit - syksy 2015 1 Tietorakenteet ja algoritmit - syksy 2015 2 Tietorakenteet ja algoritmit Johdanto Ari Korhonen Tietorakenteet ja algoritmit - syksy 2015 1. JOHDANTO 1.1 Määritelmiä
LisätiedotDatatähti 2009 -alkukilpailu
Datatähti 2009 -alkukilpailu Ohjelmointitehtävä 1/3: Hissimatka HUOM: Tutustuthan huolellisesti tehtävien sääntöihin ja palautusohjeisiin (sivu 7) Joukko ohjelmoijia on talon pohjakerroksessa, ja he haluavat
LisätiedotTeoreettisia perusteita II
Teoreettisia perusteita II Origon siirto projektiokeskukseen:? Origon siirto projektiokeskukseen: [ X X 0 Y Y 0 Z Z 0 ] [ Maa-57.260 Kiertyminen kameran koordinaatistoon:? X X 0 ] Y Y 0 Z Z 0 Kiertyminen
LisätiedotA = a b B = c d. d e f. g h i determinantti on det(c) = a(ei fh) b(di fg) + c(dh eg). Matriisin determinanttia voi merkitä myös pystyviivojen avulla:
11 Determinantti Neliömatriisille voidaan laskea luku, joka kertoo muun muassa, onko matriisi kääntyvä vai ei Tätä lukua kutsutaan matriisin determinantiksi Determinantilla on muitakin sovelluksia, mutta
LisätiedotTietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen
Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari 1 1. JOHDANTO 1.1 Määritelmiä 1.2 Tietorakenteen ja algoritmin valinta 1.3 Algoritmit ja tiedon määrä 1.4 Tietorakenteet ja toiminnot 1.5 Esimerkki:
LisätiedotViikon aiheet. Funktion lineaarinen approksimointi
Viikon aiheet Funktion ääriarvot Funktion lineaarinen approksimointi Vektorit, merkintätavat, pituus, yksikkövektori, skalaarilla kertominen, kanta ja kannan vaihto Funktion ääriarvot 6 Väliarvolause Implisiittinen
LisätiedotKäyttöönotto-opas RT Controller
Käyttöönotto-opas RT Controller Pikaopas RT-järjestelmän käyttöönottoa varten Aloitusopas RT Controller Versio 1.3 (090831) (Käytä tämän pikaoppaan kanssa opasta User Manual RT Controller, versio 2.1 tai
Lisätiedot4. Luennon sisältö. Lineaarisen optimointitehtävän ratkaiseminen Simplex-menetelmä
JYVÄSKYLÄN YLIOPISTO 4. Luennon sisältö Lineaarisen optimointitehtävän ratkaiseminen Simplex-menetelmä kevät 2012 TIEA382 Lineaarinen ja diskreetti optimointi Lineaarinen optimointitehtävä Minimointitehtävä
LisätiedotKurssin loppuosassa tutustutaan matriiseihin ja niiden käyttöön yhtälöryhmien ratkaisemisessa.
7 Matriisilaskenta Kurssin loppuosassa tutustutaan matriiseihin ja niiden käyttöön yhtälöryhmien ratkaisemisessa. 7.1 Lineaariset yhtälöryhmät Yhtälöryhmät liittyvät tilanteisiin, joissa on monta tuntematonta
LisätiedotYhtä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 =
LisätiedotPong-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
LisätiedotAlgoritmit 1. Luento 10 Ke Timo Männikkö
Algoritmit 1 Luento 10 Ke 14.2.2018 Timo Männikkö Luento 10 Algoritminen ongelmanratkaisu Suunnittelumenetelmät Raaka voima Järjestäminen eli lajittelu Kuplalajittelu Lisäyslajittelu Valintalajittelu Permutaatiot
LisätiedotFYSP101/K1 KINEMATIIKAN KUVAAJAT
FYSP101/K1 KINEMATIIKAN KUVAAJAT Työn tavoitteita tutustua kattavasti DataStudio -ohjelmiston käyttöön syventää kinematiikan kuvaajien (paikka, nopeus, kiihtyvyys) hallintaa oppia yhdistämään kinematiikan
LisätiedotTiedekunta/Osasto Fakultet/Sektion Faculty Valtiotieteellinen tiedekunta
Tiedekunta/Osasto Fakultet/Sektion Faculty Valtiotieteellinen tiedekunta Laitos Institution Department Politiikan ja talouden tutkimuksen laitos Tekijä Författare Author Virta, Mikko Antero Työn nimi Arbetets
LisätiedotOpetusmateriaali. Fermat'n periaatteen esittely
Opetusmateriaali Fermat'n periaatteen esittely Hengenpelastajan tehtävässä kuvataan miten hengenpelastaja yrittää hakea nopeinta reittiä vedessä apua tarvitsevan ihmisen luo - olettaen, että hengenpelastaja
LisätiedotAlgoritmit 1. Luento 8 Ke Timo Männikkö
Algoritmit 1 Luento 8 Ke 1.2.2017 Timo Männikkö Luento 8 Järjestetty binääripuu Solmujen läpikäynti Binääripuun korkeus Binääripuun tasapainottaminen Graafit ja verkot Verkon lyhimmät polut Fordin ja Fulkersonin
LisätiedotLue ohjeet huolellisesti ennen laitteen käyttöä.
1 Digitointi LP-levyltä CD-levylle (Ion CD Direct) Lue ohjeet huolellisesti ennen laitteen käyttöä. Soittimessa voi käyttää CD-R, CD+R, uudelleen kirjoitettavia CD-RW ja CD+RW levyjä. Yhdelle levylle voi
LisätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 16.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 16.2.2010 1 / 41 Kännykkäpalautetteen antajia kaivataan edelleen! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti
LisätiedotMS-A0003/A0005 Matriisilaskenta Malliratkaisut 4 / vko 47
MS-A3/A5 Matriisilaskenta Malliratkaisut 4 / vko 47 Tehtävä 1 (L): Oletetaan, että AB = AC, kun B ja C ovat m n-matriiseja. a) Näytä, että jos A on kääntyvä, niin B = C. b) Seuraako yhtälöstä AB = AC yhtälö
LisätiedotMS-A0003/A0005 Matriisilaskenta Laskuharjoitus 2 / vko 45
MS-A0003/A0005 Matriisilaskenta Laskuharjoitus / vko 5 Tehtävä 1 (L): Hahmottele kompleksitasoon ne pisteet, jotka toteuttavat a) z 3 =, b) z + 3 i < 3, c) 1/z >. Yleisesti: ehto z = R, z C muodostaa kompleksitasoon
LisätiedotTaulukot. Jukka Harju, Jukka Juslin 2006 1
Taulukot Jukka Harju, Jukka Juslin 2006 1 Taulukot Taulukot ovat olioita, jotka auttavat organisoimaan suuria määriä tietoa. Käsittelylistalla on: Taulukon tekeminen ja käyttö Rajojen tarkastus ja kapasiteetti
LisätiedotD B. Levykön rakenne. pyöriviä levyjä ura. lohko. Hakuvarsi. sektori. luku-/kirjoituspää
Levyn rakenne Levykössä (disk drive) on useita samankeskisiä levyjä (disk) Levyissä on magneettinen pinta (disk surface) kummallakin puolella levyä Levyllä on osoitettavissa olevia uria (track), muutamasta
LisätiedotAlgoritmit 1. Luento 3 Ti Timo Männikkö
Algoritmit 1 Luento 3 Ti 17.1.2017 Timo Männikkö Luento 3 Algoritmin analysointi Rekursio Lomituslajittelu Aikavaativuus Tietorakenteet Pino Algoritmit 1 Kevät 2017 Luento 3 Ti 17.1.2017 2/27 Algoritmien
LisätiedotMatriisit ovat matlabin perustietotyyppejä. Yksinkertaisimmillaan voimme esitellä ja tallentaa 1x1 vektorin seuraavasti: >> a = 9.81 a = 9.
Python linkit: Python tutoriaali: http://docs.python.org/2/tutorial/ Numpy&Scipy ohjeet: http://docs.scipy.org/doc/ Matlabin alkeet (Pääasiassa Deni Seitzin tekstiä) Matriisit ovat matlabin perustietotyyppejä.
LisätiedotTämän lisäksi listataan ranskalaisin viivoin järjestelmän tarjoama toiminnallisuus:
Dokumentaatio, osa 1 Tehtävämäärittely Kirjoitetaan lyhyt kuvaus toteutettavasta ohjelmasta. Kuvaus tarkentuu myöhemmin, aluksi dokumentoidaan vain ideat, joiden pohjalta työtä lähdetään tekemään. Kuvaus
Lisätiedot763306A JOHDATUS SUHTEELLISUUSTEORIAAN 2 Ratkaisut 1 Kevät y' P. α φ
76336A JOHDATUS SUHTEELLISUUSTEORIAAN 2 Ratkaisut 1 Kevät 217 1. Koordinaatiston muunnosmatriisi (a) y' P r α φ ' Tarkastellaan, mitä annettu muunnos = cos φ + y sin φ, y = sin φ + y cos φ, (1a) (1b) tekee
LisätiedotLUKUJA, DATAA KÄSITTELEVÄT FUNKTIOT JA NIIDEN KÄYTTÖ LOGIIKKAOHJAUKSESSA
LUKUJA, DATAA KÄSITTELEVÄT FUNKTIOT JA NIIDEN KÄYTTÖ LOGIIKKAOHJAUKSESSA Tavallisimmin lukuja käsittelevien datasanojen tyypiksi kannattaa asettaa kokonaisluku 16 bitin INT, jonka vaihtelualueeksi tulee
LisätiedotDatatähti 2019 loppu
Datatähti 2019 loppu task type time limit memory limit A Summa standard 1.00 s 512 MB B Bittijono standard 1.00 s 512 MB C Auringonlasku standard 1.00 s 512 MB D Binääripuu standard 1.00 s 512 MB E Funktio
LisätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 25.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 25.2.2009 1 / 34 Syötteessä useita lukuja samalla rivillä Seuraavassa esimerkissä käyttäjä antaa useita lukuja samalla
LisätiedotTilastollinen vastepintamallinnus: kokeiden suunnittelu, regressiomallin analyysi, ja vasteen optimointi. Esimerkit laskettu JMP:llä
Tilastollinen vastepintamallinnus: kokeiden suunnittelu, regressiomallin analyysi, ja vasteen optimointi Esimerkit laskettu JMP:llä Antti Hyttinen Tampereen teknillinen yliopisto 29.12.2003 ii Ohjelmien
LisätiedotPowerPoint -esitysgrafiikka
TAMPEREEN KAUPUNKI Kasvatus- ja opetustoimiala @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ PowerPoint -esitysgrafiikka jatkokurssi SisällysError! Not a valid link. 1 Automaattiset muodot 1 2 Piirrosobjektin
LisätiedotPuzzle SM 2005 15. 25.7.2005. Pistelasku
Puzzle SM 005 5. 5.7.005 Pistelasku Jokaisesta oikein ratkotusta tehtävästä saa yhden () pisteen, minkä lisäksi saa yhden () bonuspisteen jokaisesta muusta ratkojasta, joka ei ole osannut ratkoa tehtävää.
Lisätiedot11.4. Rakenteellista käsittelyä tilavuusrenderöintialgoritmeissa
11.4. Rakenteellista käsittelyä tilavuusrenderöintialgoritmeissa Tilavuusdatan katseluprosessi on käsitteellisesti yksinkertaista. Se pitää sisällään tilavuuden kierron katselusuuntaan ja sitten säteen
LisätiedotMuodonmuutostila hum 30.8.13
Muodonmuutostila Tarkastellaan kuvan 1 kappaletta Ω, jonka pisteet siirtvät ulkoisen kuormituksen johdosta siten, että siirtmien tapahduttua ne muodostavat kappaleen Ω'. Esimerkiksi piste A siirt asemaan
Lisätiedot! #! %! & #!!!!! ()) +
! #! %! & #!!!!! ()) + Tiedekunta/Osasto Fakultet/Sektion Faculty Humanistinen tiedekunta Laitos Institution Department Taiteiden tutkimuksen laitos Tekijä Författare Author Matti Pesonen Työn nimi Arbetets
LisätiedotNÄIN JUOSTAAN OIKEIN. Virheitä korjaamalla kohti parempaa juoksutekniikkaa
NÄIN JUOSTAAN OIKEIN Virheitä korjaamalla kohti parempaa juoksutekniikkaa NÄIN JUOSTAAN OIKEIN Virheitä korjaamalla kohti parempaa juoksutekniikkaa Juoksutekniikan suhteen urheilija toimii kuin kone: vahvasta
LisätiedotKönigsbergin sillat. Königsberg 1700-luvulla. Leonhard Euler ( )
Königsbergin sillat 1700-luvun Königsbergin (nykyisen Kaliningradin) läpi virtasi joki, jonka ylitti seitsemän siltaa. Sanotaan, että kaupungin asukkaat yrittivät löytää reittiä, joka lähtisi heidän kotoaan,
Lisätiedot1 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:
Lisätiedot!"#$%&'$("#)*+,!!,"*--.$*#,&--#"*/".,,%0 1&'23456789::94752;&27455<:4;2;&,9:=>23?277<&8=@74;9&ABBCDABBE
!"#$%&'$("#)*+,!!,"*--.$*#,&--#"*/".,,%0 1&'23456789::94752;&2745523?27747544H9;&IG@&JG9?=&15=5H42>:9 '28
LisätiedotTKHJ:ssä on yleensä komento create index, jolla taululle voidaan luoda hakemisto
Indeksin luonti ja hävitys TKHJ:ssä on yleensä komento create index, jolla taululle voidaan luoda hakemisto Komentoa ei ole standardoitu ja niinpä sen muoto vaihtelee järjestelmäkohtaisesti Indeksi voidaan
LisätiedotAnimaation tuotanto ja kuvaustekniikat peleissä
Animaation tuotanto ja kuvaustekniikat peleissä Mika Timonen Helsinki 29.4.2006 HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos i Tiedekunta Matemaattis-luonnontieteellinen Laitos Tietojenkäsittelytieteen
LisätiedotAlgoritmit 2. Luento 6 To Timo Männikkö
Algoritmit 2 Luento 6 To 28.3.2019 Timo Männikkö Luento 6 B-puun operaatiot Nelipuu Trie-rakenteet Standarditrie Pakattu trie Algoritmit 2 Kevät 2019 Luento 6 To 28.3.2019 2/30 B-puu 40 60 80 130 90 100
Lisätiedot5. Grafiikkaliukuhihna: (1) geometriset operaatiot
5. Grafiikkaliukuhihna: () geometriset operaatiot Johdanto Grafiikkaliukuhihnan tarkoitus on kuvata kolmiulotteisen kohdeavaruuden kuva kaksiulotteiseen kuva eli nättöavaruuteen. aikka kolmiulotteisiakin
LisätiedotVektorien 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
LisätiedotYhteenlaskun ja skalaarilla kertomisen ominaisuuksia
Yhteenlaskun ja skalaarilla kertomisen ominaisuuksia Voidaan osoittaa, että avaruuden R n vektoreilla voidaan laskea tuttujen laskusääntöjen mukaan. Huom. Lause tarkoittaa väitettä, joka voidaan perustella
LisätiedotDepartment of Mathematics, Hypermedia Laboratory Tampere University of Technology. Roolit Verkostoissa: HITS. Idea.
Roolit Tommi Perälä Department of Mathematics, Hypermedia Laboratory Tampere University of Technology 25.3.2011 J. Kleinberg kehitti -algoritmin (Hypertext Induced Topic Search) hakukoneen osaksi. n taustalla
Lisätiedot