Dynamic Occlusion Culling
|
|
- Joonas Seppälä
- 8 vuotta sitten
- Katselukertoja:
Transkriptio
1 HELSINKI UNIVERSITY OF TECHNOLOGY Telecommunications Software and Multimedia Laboratory T Tietokonegrafiikan Seminaari Spring 2003: Dynamic Occlusion Culling Mikko Korpelainen 46787L
2 Dynamic Occlusion Culling Mikko Korpelainen HUT, Telecommunications Software and Multimedia Laboratory Abstrakti Dynamic occlusion culling on ala jolla pyritään löytämään isosta ja dynaamisesta objektijoukosta laskennallisesti vain se osajoukko joka todella tulee näkyviin ruudulle. Lähes kaikissa tapauksissa tärkein kriteeri tällaiselle algoritmille on output sensitivity eli että laskenta aikaan ei vaikuta mallin monimutkaisuus vaan se millainen kuva halutaan. Lisäksi jotkut mallit ovat niin suuria, etteivät ne mahdu muistiin sellaisenaan vaan jonkinlaista karsimista on pakko tehdä. Avainsanat Dynamic occlusion culling, dynamic scene, cplp, HZB, TBV 1 JOHDANTO Tämä artikkeli on kirjoitettu Teknillisen Korkeakoulun Tietokonegrafiikan seminaari kurssia varten. Kurssin pääasiallinen tarkoitus on opettaa oppilaat käyttämään lähteitä kirjoittaessaan tieteellisiä julkaisuja. Kurssi kuitenkin pyrkii aiheiden valinnassa painottamaan sen ajan kuumia aiheita, jotta oppilaat saisivat seminaaritapahtumassa hyvän käsityksen alalla tällä hetkellä vaikuttavista tuulista. Tämän paperin aiheena on dynaamisessa mallissa tapahtuva peitettyjen objektien prosessoimatta jättäminen eli dynamic occlusion culling. Paperissa käytetään kautta linjan englanninkielisiä termejä, koska nuorella alalla ei ole vielä vakiintunut näiden suomenkielisiä vastineita. Dynamic occlusion culling on laskennallisesti varsin haastava ala, jolla pyritään parantamaan monimutkaisten dynaamisten mallien reaaliaikaista esitystä. Aihe on siinä määrin hankala, että ilman laitteistotukea on äärimmäisen vaikea tehdä tehokasta algoritmia, joka hallitsisi mallissa tapahtuvat muutokset. Ymmärrettävästi tietokantaratkaisuilla on suuri merkitys. Erityisen tärkeää dynamic occlusion culling on niissä tapauksissa, joissa on todella paljon liikkuvia esineitä. Tai jos esineiden joukko on kerta kaikkiaan niin suuri, ettei se mahdu muistiin sellaisenaan. 1
3 Paperissa keskitytään kolmen perusalgoritmiin, jotka ovat alan kannalta keskeisiä. Algoritmit ovat Hierarhical Z-Buffer Visibility (HZB), Temporal Bounding Volume (TBV) ja conservative Prioritized Layered Projection (cplp). HZB oli näistä ensimmäinen ja se olikin ensimmäinen algoritmi joka tukee dynaamisuutta malleissa, siksi se esitellään ensimmäisenä. Toisena esitellään TBV, joka on enemmänkin jonkin mielivaltaisen staattisen occlusion culling algoritmin laajennus dynaamiseksi. Viimeisenä keskitytään cplp:hen, joka on tehokas dynamic occlusion culling menetelmä. Yhteistä näille algoritmeille on konservatiivisuus eli ne voivat piirtää sellaisia alkioita joita ei ehkä oikeasti näy, mutta ne eivät koskaan jätä piirtämättä näkyvää alkiota. Ennen algoritmien esittelyä käydään lyhyesti läpi staattinen occlusion culling ja algoritmien jälkeen esitellään hyvin lyhyesti muita menetelmiä. Viimeisenä on yhteenveto. 2 STATIC OCCLUSION CULLING Ensimmäisenä termin occlusion culling mainitsi J.H.Clark [8] vuonna Hän ehdotti hierarkkista objektiesitystä, jossa jokaiseen noodiin liittyisi bounding sphere ja yksinkertainen bounding volume. Jos yhden noodin bounding volume peittää toisen noodin, ei jälkimmäistä noodia eikä sen alipuita tarvitse prosessoida. Ratkaisussa ei otettu huomioon useamman noodin yhdessä peittämiä alueita. Clark ei paperissaan esitellyt implementaatiota tai empiirisiä tutkimuksia. [1] Meagher [4] esitteli 1982 menetelmän tulostaa ruudulle monimutkaisia, esimerkiksi ihmisen magneettisesta skannauksesta saadun datan perusteella muodostettuja, diskreettejä kolmiulotteisia kuvia. Menetelmä perustui kahdeksankantaiseen puuhun (octree). Kaiken kaikkiaan todella mielenkiintoinen esitystapa jossa avaruutta jaetaan osiin, kunnes jokainen eri osa on joko tyhjä tai täysi. Kuva 1 havainnollistaa tätä avaruutta. Meagherin algoritmi laskee luvussa 3 Hierachical Z-Buffer Visibility esitetyn menetelmän kaltaisesti kaikki ne kuutiot jotka ovat toisten kuutioiden takana katselukulmasta lähtien poistaen ne ja niiden kaikki perilliset pääsemästä piirtoalgoritmille eli suorittaa alkukantaisen occlusion culling algoritmin.[4] Kuva 1 Meagherin [4] käyttämä octree 2
4 Tämän jälkeen erilaisia occlusion culling tekniikoita on esiintynyt kuin sieniä sateella, mutta suurimmalla osalla on yhteinen vika: ne ovat liian spesifisiä. Seuraavassa luvussa esittelen kuitenkin yhden ensimmäisistä geneerisistä algoritmeista, jota esimerkiksi nvidia:n ja ATI:n uudet näytönohjainkortit osittain tukevat. Yksi hierarkkinen tapa esittää mallia on binary space partitioning(bsp), jota en tässä paperissa sen kummemmin esittele. Sanottakoon vain että se jakaa aina jäljellä olevan avaruuden kahteen osaan tasolla. [1] 3 HIERACHICAL Z-BUFFER VISIBILITY Greene, Kass ja Miller [2] esittelivät ensimmäisenä menetelmän, joka hyödyntää sekä objektiavaruuden, kuva-avaruuden että ajan yhdenmukaisuutta (coherence). Tässä luvussa käsittelen ensin menetelmän ja sitten algoritmin. 3.1 Hierarchical Visibility HZB käyttää hyväkseen objekti avaruuden koherenssia muodostamalla octree:n joka jakaa avaruuden tiloihin kuvan 1 mukaisesti, sillä erotuksella että nyt jos tila on täysi, se tarkoittaa että siinä on polygoni. Koherenssia hyödynnetään käyttämällä octree:tä Z- puskuroimiseen kuten Meagher teki 3D- pikseleilleen.[2] Kuva-avaruutta hyödynnetään käyttämällä Z-pyramidia, jossa tarkimpana tasona käytetään Z-puskuria. Siitä tehdään toiseksi tarkin taso yhdistämällä aina neljä alempaa pikseliä yhdeksi ja ottamalla niistä kauimmaisin, jonka arvon uusi pikseli saa. Näin polygonin voi hylätä kun sitä vertaa tarkimpaan tasoon, jossa se mahtuu yhteen pikseliin, ja sen lähin Z-arvo on kauempana kuin pikselissä oleva arvo. Tätä testiä käytetään HZB:ssä sekä octree tarkistuksiin, että varsinaisiin alkioiden näkyvyyden tarkistuksiin. Kuvassa 2 on esitetty hierarkkinen Z-puskuri. Sylinteri on isoimmassa, eli tarkimmassa, kuvassa kokonaan. Pienemmät kuvat esittävät testiä nopeuttavia ylempiä kerroksia.[2] Aika koherenssia hyödynnetään käyttämällä sitä geometria joukkoa, joka oli näkyvä edellisessä kuvassa, algoritmin alkujoukkona. Tämä alkujoukko sitten tarkastetaan uuden kuvan suhteen Z-puskuri testillä jotta siitä saadaan karsittua kaikki näkymättömissä olevat objektit pois. Saatua objekti joukkoa, joka siis sisältää kaikki ne objektit jotka olivat näkyvissä edellisessä kuvassa ja näkyvät myös tässä kuvassa käytetään sitten Z-pyramidin luomiseen. Aika koherenssin hyödyntäminen nopeuttaa huomattavasti HZB:n suorituskykyä.[2] HZB:ssä siis piirretään edellinen kuva ensin käyttäen Z-pyramidia. Sen jälkeen käydään läpi octree, jonka näkyviksi luokitellut lehdet piirretään. Näin saattaa peitetty alkio tulla piirretyksi. Peitetty tulee piirretyksi jos se kuuluu octree:n näkyväksi luokiteltuun lehteen. 3
5 Kuva 2 Hierarchical Z-Buffer esittää erään objektin viittä eri Z-puskuri tasoa. Original Courtesy of Hansong Zhang, UNC. [6] 3.2 Algoritmi Octree objekti hierarkia muodostetaan luomalla ensin iso kuutio johon koko malli mahtuu ja rekursiivisesti suorittamalla seuraavaa: Jos alkioita on kuutiossa tarpeeksi vähän, liitetään ne kaikki tähän tilavuuteen ja lopetetaan tämä haara. Muussa tapauksessa liitämme tähän tilavuuteen kaikki ne alkiot jotka leikkaavat jonkun tämän kuution osiin leikkaavista tasoista. Tämän jälkeen jaamme kuution osiin ja kutsumme sitä uudelleen osiin jääneillä alkioilla. Ongelmaksi tässä jää, että jos yksi pienenpieni kolmio on suurimman kuution leikkaustasoilla, sijoitetaan kolmio siihen kuutioon ja piirretään aina noodin piirtämisen yhteydessä. HZB:ssä tämä ongelma on kierretty tarkistamalla onko tasot leikkaava alkio paljon pienempi kuin octree kuutio. Ja jos on, assosioidaan se kaikkiin niihin kuutioihin, joiden rajoja se leikkaa. [2] HZB:n perus piirto (rendering) algoritmi ei koskaan käy samassa noodissa kahdesti, eikä se mene noodeihin joiden vanhemmat ovat piilossa. Nämä ominaisuudet ovat periytyvät suoraan octree hierarkiasta. Aika koherenssi algoritmi yksinkertaisesti piirtää kaikki ne objektit jotka näkyivät edellisessä kuvassa muodostaen samalla hierarkkista Z-pyramidia. Tämän jälkeen se käy aika koherenssi listan läpi ja poistaa piilossa olevat noodit. Tällä tavalla estetään listan kasvaminen hallitsemattomiin mittoihin. Ilman aika koherenssin käyttöä HZB on itse asiassa melko tehoton.[2] Hierarkkista Z-pyramidia käytetään ensin vertaamalla polygonia tai octree kuutiota tarkimpaan tasoon, johon se mahtuu kokonaan. Jos objektin joku kohta on lähempänä kuin Z-arvo, käydään kaikki tarkemman tason pikselit läpi. Näin jatketaan kunnes, joko todistetaan polygoni piilossa olevaksi tai löydetään tarkimmasta Z-puskurista pikseli jota lähempänä objekti on. Z-pyramidi päivitetään aina kun on tarvetta laittamalla uusi kauimmainen arvo kaikkiin tasoihin mihin se vaikuttaa alkaen tarkimmasta. 4
6 3.3 Yhteenveto HZB on hyvin geneerinen ja edistyksellinen algoritmi joka pyrkii hyödyntämään kuvan eri tekijöiden keskinäisiä suhteita. Siinä on kuitenkin vielä paljon parannettavaa sillä se ei ota kantaa liikkuviin esineisiin ja Z-occlusion kysely vie melko paljon aikaa ainakin ohjelmistolla toteutettuna. Jälkimmäiseen asiaan on kuitenkin luvassa helpotusta, sillä näyttää siltä että suuret laitteisto tuottajat kuten nvidia alkaisivat tukea Z-occlusion kyselyä. nvidia tukee sitä jo GeForce [5] sarjassaan versiosta 3 eteenpäin. HZB:n nerokkain oivallus on myös yksinkertaisin. Edellisessä kuvassa piirrettyjen objektien käyttö uuden kuvan pohjana säästää todella paljon laskenta-aikaa. 4 TEMPORAL BOUNDING VOLUMES Temporal bounding volumes (TBV) tarkoittaa sellaista tilavuutta, johon objekti voi ehtiä tietyn ajan kuluessa kun sen nopeuteen liittyviä määreitä tiedetään. Jos esimerkiksi tiedetään vain objektin kiihtyvyys, saadaan vain objektin tapahtuma horisontin mukainen pallo, johon objekti voi ehtiä tietyssä ajassa. Kuvan 2 tapauksessa TBV olisi se pallo johon auton rata mahtuu. Tuo TBV vanhenee sen ajan kuluessa joka autolla kuluu tuon radan kulkemiseen. [1] (a) (b) Kuva 3 (a) Malli (b) Mallin rata (TBV) Sudarsky ja Gotsman [1] esittivät 1999 menetelmän joka pyrkii ottamaan huomioon mallin dynaamisuuden ja minimoidaan mallin dynaamisuudesta johtuvien viestien määrän. Tämä on erityisen tärkeää server/client sovelluksissa, joissa kommunikoidaan hitaan linkin, kuten internet, yli. Tämä menetelmä perustuu TBV:hin. TBV:tä voidaan käyttää minkä tahansa staattisen occlusion systeemin päällä. 5
7 4.1 Algoritmi ja laiska laskenta TBV perustuu niin sanottuun laiskaan laskentaan, jonka periaatteena on, ettei tehdä mitään ennen kuin se on aivan välttämätöntä. Tämä tarkoittaa sitä, ettei liikkuvia objekteja päivitetä mallin hierarkiassa uuteen paikkaan ennen kuin ne ovat päässeet TBV:nsä loppuun. Jos jokin objekti on siis dynaaminen, sitä ei sellaisenaan missään vaiheessa laiteta hierarkiaan vaan siitä tehdään aina TBV. TBV yhdistetään sitten objektiin. TBV:hen ei kosketa ennen kuin sen aika kuluu umpeen tai occlusion algoritmi päättää sen olevan näkyvä. [1] TBV algoritmiin käytetään siis jotakin hierarkkista tietorakennetta, sekä sen päällä jotakin staattista occlusion culling algoritmia, joka aluksi rakennetaan pelkästään staattisista objekteista. Dynaamisia objekteja käsitellään erikseen. Niillä on kaksi tilaa: näkyvä ja piilossa. Piilossa olevilla on TBV ja siinä voimassaoloaika. Tuo TBV käyttäytyy alla olevassa hierarkiassa aivan kuin objekti. Mikäli TBV huomataan näkyväksi, se tuhotaan ja objekti siirtyy tilaan näkyvä, jolloin sen ominaisuuksia päivitetään jokaisessa kuvassa. Jos objekti on näkyvässä tilassa, mutta alla oleva algoritmi toteaa sen piilossa olevaksi, tehdään sille uusi TBV. 4.2 Näkymiä TBV:hen Aika jonka jokainen TBV on voimassa (TBV Validity Period), eli bounding volume:n koko, on ongelmallinen. Väärin valittu aika voi huomattavasti vaikuttaa algoritmin suorituskykyyn. Eräs ratkaisu on käyttää melko pitkää aikaa sellaisille maisemille, jossa kamera pysyy paikallaan ja lyhyttä aikaa liikkuville kameroille.[1] Joskus TBV:n laskeminen voi olla liian aikaa vievää, silloin kannattaa käyttää sumeaa TBV:ta (fuzzy TBV), jossa ei taatakaan TBV:n sisältävän objektia teittyyn aikaan asti varmasti vaan jollakin annetulla todennäköisyydellä. [1] Ajatuksena on että monikäyttäjä ratkaisuissa algoritmia ajettaisiin client-puolella. Ja pelkästään toisten käyttäjien aiheuttamat muutokset kysyttäisiin serveriltä. 4.3 Yhteenveto TBV:n vahvuus on ilman muuta se, että se sopii minkä tahansa staattisen occlusion culling algoritmin päälle dynamiikan hallintaan. Lisäksi se ei vaadi raskasta esilaskentaa, mutta pientä säätöä tarvitaan. Esimerkiksi TBV:n luonnissa on monenlaisia tapoja ja validity period täytyy valita järkevästi. TBV:llä saadaan melko lailla tasaista viivaa tuloskäyräksi, eli polygonien määrä ei juuri vaikuta kuvanopeuteen (framerate). Tämä on tietysti positiivinen asia, mutta yhdessäkään annetuista tilastost ei päästä alle 0.3 sekunnin per kuva ja se ei ihan reaaliaikaisuutta muistuta. 6
8 TBV:stä erityisen mielenkiintoisen tekee fuzzy TBV, jossa objektin bounding volume:a ei lasketakaan niin tarkasti ja aikaa vievästi, vaan annetaan pikemminkin paras arvaus. Tämä arvaus on luultavimmin abstrakti pallo, jonka käsittely on nopeaa tietokoneelle. TBV on maalaisjärjellä ajateltu ratkaisu. Sen ainoa suuri heikkous on tarve muuttaa alla olevaa tilahierarkiaa objektin paikan tai tilan muuttuessa tarpeeksi. Tähän ratkaisu voisi olla jonkinlainen väljä kiinnitys (loose connection), jossa dynaamiset objektit eivät saa omaa uutta noodia, vaan ne sidotaan aina jo olemassa oleviin noodeihin. Näin säästyttäisiin raskailta tietokanta muutoksilta. Sivu seurauksena dynaamisia objekteja tietysti tultaisiin piirtämään useammin. Esimerkiksi octree:n tapauksessa jos pieni dynaaminen objekti menee isoon tyhjään tilaan, assosioitaisiin se tuohon tilaan ja piirrettäisiin aina kun tila piirretään. 5 CPLP Klosowski ja Silva ehdottivat 1999 Prioritized-Layered Projection (PLP) algoritmia, joka arvioi näkyvät objektit tietyllä budjetilla. Eli valitsi objekteja näkyviin kunnes tuo budjetti ylitettiin. Tämä johtaa kuitenkin vääjäämättä joidenkin näkyvien primitiivien hylkäämiseen. PLP jakaa avaruuden soluihin ja antaa solulle jonkun todennäköisyyden jolla se peittää takana olevat objektit. Sitten se käy annetusta katselupisteestä lähtien läpi soluja projisoiden ne puskuriin ja muuttaa projisoidun alueen näkyvyys todennäköisyyttä uuden olion peitolla. Algoritmi jättää viimeiseksi ne objektit joiden näkyminen tulee epätodennäköisimmäksi.[3] Myöhemmin 2001 Klosowski ja Silva [3] ehdottivat konservatiivista PLP:tä joka käyttää PLP:tä pohjanaan, ja käyttää kuva-avaruuden näkyvyys hakuja kehittääkseen annetusta PLP pohjasta konservatiivisen objektijoukon.[3] 5.1 Algoritmi Kun PLP algoritmi ajetaan, sivutuotteena saadaan 1) PLP:n laskeman kuvan Z-puskuri ja 2) PLP:n priorisointi jono (front) niistä objekteista jotka eivät kuvaan mahtuneet. Konservatiivinen lisäys tarkastaa kuva-avaruus haulla ovatko jonossa olevat objektit näkyvissä, ja piirtää näkyvät. Jatkaen kierrosta kunnes jono on tyhjä. Kun jono on tyhjä, on kuva valmis. Algoritmin pseudokoodi on esitetty I APPENDIX:ssa.[3] 5.2 Yhteenveto cplp on melko edistyksellinen algoritmi ja se saa OpenGL:ltä [3] laitteisto tukea. Sen suorituskyky on kuitenkin melko implementaatio ja laitteisto riippuvainen ja tekijät ehdottivatkin OpenGL:ään laajennusta, joka tukisi Z-occlusion kyselyjä. Tämä toiminnallisuus on sama kuin HZB:n tapauksessa ja se on uusimmissa ATI:n ja nvidia:n korteissa. cplp tarvitsee esilaskentaa ja dynaamisten esineiden aiheuttamia muutoksia ei ole otettu huomioon soluja luotaessa. Ehkä soluja voitaisiin hallita dynaamisesti melko pienillä laskutoimituksilla laiskan laskennan tyyliin. Eli jokaiselle liikkuvalle esineelle 7
9 annettaisiin oma solu, joka voi liikkua ja muovautua ajan mukana. Nämä solut sitten käsitellään erikseen ja ne ovat toisten solujen kanssa limittäin, eli jokaiseen dynaamiseen soluun liitetään osoitin niihin soluihin, joiden päällä se on. Dynaamiset solut piirretään siis vain jos niiden isäntä solut piirretään. cplp:tä voitaisiin kenties kehittää yhdistämällä jokaiseen objektiin tai soluun pallofunktio, jossa funktio antaa katselukulmasta riippuen eri todennäköisyyden peittämiselle. Tämä vaatisi esilaskentaa lisää jonkin verran, mutta voisi parantaa lopputulosta huomattavastikin. Pallofunktioon voi lisätä pallosuunnan lisäksi muuttujaksi myös ajan tai objektin tilaan liitoksissa olevan muuttujan. Esimerkiksi ihmishahmo kyykyssä antaa eri todennäköisyyden kuin sama hahmo seistessä. Tällöin todennäköisyys muuttuu objektin transformoituessa. Ajonaikana tuo funktio vie tietysti aikaa perus-plp algoritmissa, mutta se säästäisi mielestäni aikaa konservatiivisessa osuudessa, koska PLP:n tulos on tarkempi. cplp:ssä PLP osuutta käytetään vain suhteellisen hyvän alkujoukon saamiseksi, joten ehdottamani laajennus lienee turha. 6 MENETELMIEN VERTAILU Esitettyjen algoritmien suorituskykyä on vaikea verrata sillä TBV on vain dynaaminen lisä johonkin muuhun algoritmiin ja HZB:stä ei ole saatavilla tutkimus tuloksia. Kuitenkin mikäli malli on melko staattinen ja sisältää vain joitakin liikkuvia objekteja on TBV:n implementoiminen todennäköisesti kustannustehokkainta, varsinkin jos staattinen occlusion culling menetelmä on jo olemassa. Mikäli malli on todella iso tai sisältää paljon dynaamisia objekteja kannattanee käyttää cplp:tä sillä sen budjetti ominaisuus takaa ratkaisun, joka ei juurikaan riipu mallin kompleksisuudesta. cplp:tä täytyy tietysti laajentaa dynaamisten objektien tapauksessa, mutta TBV algoritmista on varmasti apua siinä. Jos tekee ohjelmistoja GeForcelle, on HZB myös varteen otettava vaihtoehto sen laitteisto tuen takia. Jokaisen polygonin tarkastaminen, onko se jonkin toisen polygonin takana, on aivan liian hidasta ja kasvaa eksponentiaalisesti polygonien määrän mukana. Siksi avaruus on lähes kaikissa tapauksissa jaettu hierarkkisiin osiin. Josta puolestaan johtuu, että dynamiikkaa on niin vaikea ottaa huomioon. [6] Nykyisillä laitteistoilla ja kuluttajien aina kasvavalla graafisten loistokkuuksien himolla, on aina käytettävä muitakin ratkaisuja leikkaukseen kuin vain occlusion culling:ia. Tosin jo muutaman vuoden päästä saattavat koneet ja näytönohjaimet olla niin tehokkaita, että pelkkä level of detail tai active surface definition tyyliset ratkaisut dynaamisille objekteille, yhdistettynä alla oleviin occlusion culling metodeihin saattaa olla tarpeeksi järkevä ratkaisu kaikkien kukkaroille. Täysin erilainen lähestymistapa on niin sanottuihin hyviin peittäjiin perustuva menetelmä, jossa esilaskennassa päätellään jokin joukko, yleensä isoja objekteja, jota sitten vain käytetään occlusion culling:ssa. [7] 8
10 Erilaisia menetelmiä ovat vertailleet Cohen-Or, Chrysanthou, Silva ja Durand [6] vuonna Tuossa paperissa on esitelty monia culling:iin liittyviä menetelmiä, jotka eivät tosin läheskään kaikki ole dynaamisia, mutta sieltä saa hyvän pohja käsityksen erilaisista mahdollisuuksista. 7 TULEVAISUUS JA KOMMENTIT Dynamic occlusion culling on hyvin ristiriitainen aihe, sillä siinä on perimmäisenä ongelmana perinteinen muna ja kana ongelma. Eli, kuvan piirtäminen heti sen jälkeen kun se on juuri piirretty, olisi todella nopeaa. HZB yrittää käyttää tätä hyväkseen aika koherenssi algoritmissaan. Kaikissa algoritmeissa on tilanteita, joissa niistä on enemmän haittaa kuin hyötyä. Esimerkiksi jos yksikään objekti ei peity, on occlusion culling algoritmi tullut ajetuksi täysin turhaan, tällaisia tilanteita voi yrittää ottaa huomioon suunniteltaessa uutta algoritmia uuteen ohjelmaan. Reaalimaailmassa valoaallot eivät kulje läpi kiinteiden esineiden, joten ihminen ei näe sellaista mikä on peitettyä. Tietokonemaailmassa ei ole valoaaltoja vaan kaikki on perustaltaan diskreettiä. Siksi vektorien kanssa voitaisiin päästä jonkinlaisiin tuloksiin Ehkäpä näkyvyys tieto voitaisiin laittaa objekteille itselleen, jolloin hyödynnettäisiin tietokantaan sisäänrakennettuja funktioita näkyvyyden laskemisessa. Ja tähän sovellettaisiin laiskaa laskentaa siltä osin, ettei objektin tila voi saada muutoksia ellei se ole lähes varmaa. Tietokannan puolella tapahtuvat näkyvyystarkastelut vapauttavat näytönohjainten resursseja muihin tarpeisiin. Hybrid Graphics, Ltd. on luonut dynaamiseen PVS:n perustuvan menetelmän, joka ainakin demon mukaan näyttää hyvältä. Tästä herääkin kysymys kuinka tärkeää oikeasti on saada täysin geneerinen dynamic occlusion culling mekanismi vai riittäisikö kaikkiin sovelluksiin jokin spesifinen ratkaisu. Varmaa on että akateeminen taho yrittää luoda geneerisen ja tieteellisesti hienoimman ratkaisun jota se voi SIGGRAPH:ssa esitellä. Yhtä varmaa on että peliteollisuus ja muut asian kanssa bisnestä tekevät tahot yrittävät luoda menetelmän jolla tulon ja kustannuksen suhde maksimoidaan, eli mahdollisimman spesifisen tai sitten suoran kopion jostain toisesta ratkaisusta. Dynaamisten objektien käyttäminen occluder:na on vaikeaa tunnetuissakin olosuhteissa, mutta esimerkiksi lintuparven tai viidensadan pelaajan verkkopeleissä se lähestyy mahdottomuutta. Siksi luulen että LOD riittää useimpiin liikkuvien objektien tapauksiin. Uskon kuitenkin että grafiikkakortit tulevat tukemaan tulevaisuudessa enenevässä määrin dynamic occlusion culling:ia. Näytönohjaimiin ei kuitenkaan saa koko objekti tietokantaa koskaan, joten on keksittävä ratkaisu joka minimoi hierarkkisten tilanesitysten tarpeen. Toinen vaihtoehto on hierarkkisten esitysten kehittäminen neuroverkko suuntaan, jossa objektit ovat soluja jotka reagoivat toistensa tilojen ja paikan muutoksiin. Lisäksi apua 9
11 ongelman ratkaisuun saattaisi saada täysin odottamattomalta suunnalta, esimerkiksi hahmontunnistuksesta. Hahmontunnistuksessahan yritetään saada tietokone nopeasti hahmottamaan 2D kuva kolmiulotteiseksi. Jos tämä onnistuu, luulisi käänteisen operaation luomisen olevan suhteellisen suoraviivaista. REFERENSSIT [1] O. Sudarsky and C. Gotsman: Dynamic Scene Occlusion Culling, IEEE Transactions on Visualization & Computer Graphics, Vol. 5, No. 1, January-March 1999 [2] N. Greene, M. Kass and G. Miller, Hierarchical Z-Buffer Visibility, Computer Graphics Proc., Ann. Conf. Series, pp , [3] J. T. Klosowski and C. T. Silva, Efficient Conservative Visibility Culling Using the Prioritized-Layered Projection Algorithm, IEEE Transactions on Visualization & Computer Graphics, Vol. 7, No. 4, October-December 2001 [4] D. J. Meagher, Efficient Synthetic Image Generation of Arbitrary 3-D objects, Proc. Conf. Pattern Recognition and Image Processing, pp , IEEE Computer Society, June 1982 [5] NVIDIA Corporation, GeForce4 Ti Product Overview 09.02v03, accessed on 4 th of April 2003 [6] D. Cohen-Or, Y. Chrysanthou, C. Silva and F. Durand, A Survey of Visibility for Walkthrough Applications, Proceedings of EUROGRAPHICS '00, Course Notes, 2000 [7] F. Durand, 3D Visibility: Analytical Study and Applications, PhD thesis, Université Joseph Fourier, Grenoble, France, July [8] J.H.Clark, Hierarchical Geometric Models for Visible Surface Algorithms, Comm. ACM, vol. 19, pp , Oct
12 I APPENDIX init(){ split universe into cells; for(i = ncells) determine probability of occlusion for i; put first cell into front; addtofront(cell){ get probability from projision map; put to front with probability; runplp(){ while(underbudget){ check front for cell that is most likely not occluded; project it; remove it from the front; add it to rendering queue; addtofront( its neighbours); AdvanceFrame(){ runplp(); while(front is not empty){ while(i = ncellsinfront){ // use image-space visibility // queries if(i is occluded){ removecellfromfront(); nextcell; while(i = ncellsinfront){ project i; remove i from front; // these will not be a part of this iteration round add the neighbours of i into front; Koodi 1 cplp algoritmi [3] 11
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
Tilanhallintatekniikat
Tilanhallintatekniikat 3D grafiikkamoottoreissa Moottori on projektin osa joka vastaa tiettyjen toiminnallisuuksien hallinnasta hallitsee kaikki vastuualueen datat suorittaa kaikki tehtäväalueen toiminnot
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)
Satunnaisalgoritmit. Topi Paavilainen. Laskennan teorian opintopiiri HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos
Satunnaisalgoritmit Topi Paavilainen Laskennan teorian opintopiiri HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Helsinki, 23. helmikuuta 2014 1 Johdanto Satunnaisalgoritmit ovat algoritmeja, joiden
A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä.
Esimerkki otteluvoiton todennäköisyys A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä. Yksittäisessä pelissä A voittaa todennäköisyydellä p ja B todennäköisyydellä q =
2.2. Kohteiden konstruktiivinen avaruusgeometrinen esitys
.. Kohteiden konstruktiivinen avaruusgeometrinen esitys Avaruusgeometrinen esitys on käyttäjäriippuvainen ja vaati erikoismenetelmiä tai lopuksi konversion monikulmiomalliksi. Se on korkean tason esitys
Luento 10: Näkyvyystarkastelut ja varjot. Sisältö
Tietokonegrafiikka / perusteet T-111.300/301 4 ov / 2 ov Luento 10: Näkyvyystarkastelut ja varjot Marko Myllymaa / Lauri Savioja 10/04 Näkyvyystarkastelut ja varjot / 1 Näkyvyystarkastelu Solurenderöinti
Luento 4: Näkyvyystarkastelut ja varjot
Tietokonegrafiikan jatkokurssi T-111.5300 4 op Luento 4: Näkyvyystarkastelut ja varjot Lauri Savioja 02/07 Näkyvyystarkastelut ja varjot / 1 Näkyvyystarkastelu Solurenderöinti Portaalirenderöinti Quad-/Octtree
Näkyvyystarkastelut hierarkioita käyttäen
7TEKNILLINEN KORKEAKOULU 5.5.2003 Tietoliikenneohjelmistojen ja multimedian laboratorio Tik-111.550 Tietokonegrafiikan seminaari Kevät 2003 Näkyvyystarkastelut hierarkioita käyttäen Jukka Savolainen 48033B
Department 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
T-111.4310 Vuorovaikutteinen tietokonegrafiikka Tentti 14.12.2011
T-111.4310 Vuorovaikutteinen tietokonegrafiikka Tentti 14.12.2011 Vastaa kolmeen tehtävistä 1-4 ja tehtävään 5. 1. Selitä lyhyesti mitä seuraavat termit tarkoittavat tai minkä ongelman algoritmi ratkaisee
Yleisen PSCR-menetelmän toteutus ohjelmoitavalla näytönoh
Yleisen n toteutus ohjelmoitavalla näytönohjaimella Mirko Myllykoski mirko.myllykoski@jyu.fi 15.2.2011 Mitä teen? Tarkoituksena toteuttaa (ja osin jo toteutettukin) stä versio ohjelmoitavalle näytönohjaimelle
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
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ä
Matematiikan tukikurssi
Matematiikan tukikurssi Kurssikerta 4 Jatkuvuus Jatkuvan funktion määritelmä Tarkastellaan funktiota f x) jossakin tietyssä pisteessä x 0. Tämä funktio on tässä pisteessä joko jatkuva tai epäjatkuva. Jatkuvuuden
TEEMU ROOS (KALVOT MUOKATTU PATRIK HOYERIN LUENTOMATERIAALISTA)
JOHDATUS TEKOÄLYYN TEEMU ROOS (KALVOT MUOKATTU PATRIK HOYERIN LUENTOMATERIAALISTA) KONEOPPIMISEN LAJIT OHJATTU OPPIMINEN: - ESIMERKIT OVAT PAREJA (X, Y), TAVOITTEENA ON OPPIA ENNUSTAMAAN Y ANNETTUNA X.
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
Yhtälönratkaisusta. Johanna Rämö, Helsingin yliopisto. 22. syyskuuta 2014
Yhtälönratkaisusta Johanna Rämö, Helsingin yliopisto 22. syyskuuta 2014 Yhtälönratkaisu on koulusta tuttua, mutta usein sitä tehdään mekaanisesti sen kummempia ajattelematta. Jotta pystytään ratkaisemaan
Algoritmit 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
Luku 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
Rubikin kuutio ja ryhmät. Johanna Rämö Helsingin yliopisto, Matematiikan ja tilastotieteen laitos
Rubikin kuutio ja ryhmät Johanna Rämö Helsingin yliopisto, Matematiikan ja tilastotieteen laitos Kehittäjä unkarilainen Erno Rubik kuvanveistäjä ja arkkitehtuurin professori 1974 Halusi leikkiä geometrisilla
Algoritmit 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
1. Algoritmi 1.1 Sisällys Algoritmin määritelmä. Aiheen pariin johdatteleva esimerkki. Muuttujat ja operaatiot (sijoitus, aritmetiikka ja vertailu). Algoritmista ohjelmaksi. 1.2 Algoritmin määritelmä Ohjelmointi
Määrittelydokumentti
Määrittelydokumentti Aineopintojen harjoitustyö: Tietorakenteet ja algoritmit (alkukesä) Sami Korhonen 014021868 sami.korhonen@helsinki. Tietojenkäsittelytieteen laitos Helsingin yliopisto 23. kesäkuuta
etunimi, sukunimi ja opiskelijanumero ja näillä
Sisällys 1. Algoritmi Algoritmin määritelmä. Aiheen pariin johdatteleva esimerkki. ja operaatiot (sijoitus, aritmetiikka ja vertailu). Algoritmista ohjelmaksi. 1.1 1.2 Algoritmin määritelmä Ohjelmointi
HELSINKI UNIVERSITY OF TECHNOLOGY 7.4.2003 Telecommunications Software and Multimedia Laboratory Tik-111.500 Tietokonegrafiikan seminaari Kevät 2003
HELSINKI UNIVERSITY OF TECHNOLOGY 7.4.2003 Telecommunications Software and Multimedia Laboratory Tik-111.500 Tietokonegrafiikan seminaari Kevät 2003 Portaalit ja peilit Henrik Lönnroth 45894L Portaalit
Sanaluokkajäsennystä rinnakkaisilla transduktoreilla
Sanaluokkajäsennystä rinnakkaisilla transduktoreilla Nykykielten laitos FIN-CLARIN-seminaarissa 4. marraskuuta 2010 Sanaluokkajäsennys Mr. Gelbert also has fun with language. NNP NNP RB VBZ NN IN NN. Sanaluokkajäsennin
815338A Ohjelmointikielten periaatteet Harjoitus 6 Vastaukset
815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 6 Vastaukset Harjoituksen aiheena on funktionaalinen ohjelmointi Scheme- ja Haskell-kielillä. Voit suorittaa ohjelmat osoitteessa https://ideone.com/
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
811120P Diskreetit rakenteet
811120P Diskreetit rakenteet 2016-2017 1. Algoritmeista 1.1 Algoritmin käsite Algoritmi keskeinen laskennassa Määrittelee prosessin, joka suorittaa annetun tehtävän Esimerkiksi Nimien järjestäminen aakkosjärjestykseen
Integrointialgoritmit molekyylidynamiikassa
Integrointialgoritmit molekyylidynamiikassa Markus Ovaska 28.11.2008 Esitelmän kulku MD-simulaatiot yleisesti Integrointialgoritmit: mitä integroidaan ja miten? Esimerkkejä eri algoritmeista Hyvän algoritmin
Tietorakenteet, 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
Johdantoa INTEGRAALILASKENTA, MAA9
Lyhyehkö johdanto integraalilaskentaan. Johdantoa INTEGRAALILASKENTA, MAA9 Integraalilaskennan lähtökohta 1: Laskutoimitukset + ja ovat keskenään käänteisiä, samoin ja ovat käänteisiä, kunhan ei jaeta
Matematiikan tukikurssi, kurssikerta 3
Matematiikan tukikurssi, kurssikerta 3 1 Epäyhtälöitä Aivan aluksi lienee syytä esittää luvun itseisarvon määritelmä: { x kun x 0 x = x kun x < 0 Siispä esimerkiksi 10 = 10 ja 10 = 10. Seuraavaksi listaus
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,
811120P Diskreetit rakenteet
811120P Diskreetit rakenteet 2018-2019 1. Algoritmeista 1.1 Algoritmin käsite Algoritmi keskeinen laskennassa Määrittelee prosessin, joka suorittaa annetun tehtävän Esimerkiksi Nimien järjestäminen aakkosjärjestykseen
Puhesynteesin perusteet Luento 5: unit selection -synteesi
Puhesynteesin perusteet Luento 5: unit selection -synteesi Nicholas Volk 14.2.2008 Käyttäytymistieteellinen tiedekunta Idea Aitoa puhetta on tallennettu tietokantaan tuhansien äänteiden verran Jopa yksittäisen
Algoritmit 1. Luento 7 Ti Timo Männikkö
Algoritmit 1 Luento 7 Ti 31.1.2017 Timo Männikkö Luento 7 Järjestetty binääripuu Binääripuiden termejä Binääripuiden operaatiot Solmun haku, lisäys, poisto Algoritmit 1 Kevät 2017 Luento 7 Ti 31.1.2017
75059 Suuri lajittelusarja
75059 Suuri lajittelusarja Peliohjeet Tämä sarjan sisältö: 632 kpl lajitteluesineitä 3 kpl onnenpyörää 6 kpl lajittelukulhoa 1 kpl muovinen lajittelualusta 1 kpl numeromerkitty arpakuutio Lajittelusarja
Avainsanat: peli, matematiikka, polynomi, yhteen- ja vähennyslasku, kertolasku
Pasi Leppäniemi OuLUMA, sivu 1 POLYNOMIPELI Avainsanat: peli, matematiikka, polynomi, yhteen- ja vähennyslasku, kertolasku Luokkataso: 8-9 lk Välineet: pelilauta, polynomikortit, monomikortit, tuloskortit,
Matematiikan tukikurssi
Matematiikan tukikurssi Kurssikerta 6 Sarjojen suppeneminen Kiinnostuksen kohteena on edelleen sarja a k = a + a 2 + a 3 + a 4 +... k= Tämä summa on mahdollisesti äärellisenä olemassa, jolloin sanotaan
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
Lineaarialgebra ja matriisilaskenta I, HY Kurssikoe Ratkaisuehdotus. 1. (35 pistettä)
Lineaarialgebra ja matriisilaskenta I, HY Kurssikoe 26.10.2017 Ratkaisuehdotus 1. (35 pistettä) (a) Seuraavat matriisit on saatu eräistä yhtälöryhmistä alkeisrivitoimituksilla. Kuinka monta ratkaisua yhtälöryhmällä
Kenguru Benjamin (6. ja 7. luokka) ratkaisut sivu 1 / 6
Kenguru Benjamin (6. ja 7. luokka) ratkaisut sivu 1 / 6 3 pisteen tehtävät 1) Mikä on pienin? A) 2 + 0 + 0 + 8 B) 200 : 8 C) 2 0 0 8 D) 200 8 E) 8 + 0 + 0 2 2) Millä voidaan korvata, jotta seuraava yhtälö
1. Otetaan perusjoukoksi X := {0, 1, 2, 3, 4, 5, 6, 7}. Piirrä seuraaville kolmelle joukolle Venn-diagrammi ja asettele alkiot siihen.
Joukko-oppia Matematiikan mestariluokka, syksy 2010 Harjoitus 1, vastaukset 20.2.2010 1. Otetaan perusjoukoksi X := {0, 1, 2, 3, 4, 5, 6, 7}. Piirrä seuraaville kolmelle joukolle Venn-diagrammi asettele
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
811312A Tietorakenteet ja algoritmit 2015-2016. I Johdanto
811312A Tietorakenteet ja algoritmit 2015-2016 I Johdanto Sisältö 1. Algoritmeista ja tietorakenteista 2. Algoritmien analyysistä 811312A TRA, Johdanto 2 I.1. Algoritmeista ja tietorakenteista I.1.1. Algoritmien
Pinot, jonot, yleisemmin sekvenssit: kokoelma peräkkäisiä alkioita (lineaarinen järjestys) Yleisempi tilanne: alkioiden hierarkia
Pinot, jonot, yleisemmin sekvenssit: kokoelma peräkkäisiä alkioita (lineaarinen järjestys) Yleisempi tilanne: alkioiden hierarkia Kukin alkio (viite) talletettuna solmuun (node) vastaa paikan käsitettä
Osakesalkun optimointi. Anni Halkola Turun yliopisto 2016
Osakesalkun optimointi Anni Halkola Turun yliopisto 2016 Artikkeli Gleb Beliakov & Adil Bagirov (2006) Non-smooth optimization methods for computation of the Conditional Value-at-risk and portfolio optimization.
815338A Ohjelmointikielten periaatteet 2014-2015. Harjoitus 7 Vastaukset
815338A Ohjelmointikielten periaatteet 2014-2015. Harjoitus 7 Vastaukset Harjoituksen aiheena on funktionaalinen ohjelmointi Scheme- ja Haskell-kielillä. Voit suorittaa ohjelmat osoitteessa https://ideone.com/
kartiopinta kartio. kartion pohja, suora ympyräkartio vino pyramidiksi
5.3 Kartio Kun suora liikkuu avaruudessa niin, että yksi sen piste pysyy paikoillaan ja suoran jokin toinen piste kiertää jossakin tasossa jonkin suljetun käyrän palaten lähtöpaikkaansa, syntyy kaksiosainen
Johdatus diskreettiin matematiikkaan Harjoitus 5, Ratkaise rekursioyhtälö
Johdatus diskreettiin matematiikkaan Harjoitus 5, 14.10.2015 1. Ratkaise rekursioyhtälö x n+4 2x n+2 + x n 16( 1) n, n N, alkuarvoilla x 1 2, x 2 14, x 3 18 ja x 4 42. Ratkaisu. Vastaavan homogeenisen
Tietorakenteet ja algoritmit
Tietorakenteet ja algoritmit Muuttujat eri muisteissa Ohjelman muistialueen layout Paikallisen ja globaalin muuttujan ominaisuudet Dynaamisen muistinkäytön edut Paikallisten muuttujien dynaamisuus ADT
Konsepti EU-lain mukaisten dronelupien myöntämiseen (SORA-menetelmä) Vastuullinen liikenne. Rohkeasti yhdessä.
Konsepti EU-lain mukaisten dronelupien myöntämiseen (SORA-menetelmä) Vastuullinen liikenne. Rohkeasti yhdessä. Specific kategoria OPEN kategoriassa toimiminen ei vaadi muita lupia kuin pilotin suorittamat
Cover letter and responses to reviewers
Cover letter and responses to reviewers David E. Laaksonen, MD, PhD, MPH Department of Medicine Kuopio University Hospital Kuopio, Finland Luennon sisältö Peer review Vinkit vastineiden kirjoittamista
NÄKYMÄNHALLINTATEKNIIKAT 3D- GRAFIIKKAMOOTTOREISSA
Jarno Kansanaho NÄKYMÄNHALLINTATEKNIIKAT 3D- GRAFIIKKAMOOTTOREISSA Tietotekniikan pro gradu -tutkielma Ohjelmistotekniikan linja 30.12.2011 Jyväskylän yliopisto Tietotekniikan laitos Tekijä: Jarno Kansanaho
1 Reaaliset lukujonot
Jonot 10. syyskuuta 2005 sivu 1 / 5 1 Reaaliset lukujonot Reaaliset lukujonot ovat funktioita f : Z + R. Lukujonosta käytetään merkintää (a k ) k=1 tai lyhyemmin vain (a k). missä a k = f(k). Täten lukujonot
Algoritmit 1. Luento 4 Ke Timo Männikkö
Algoritmit 1 Luento 4 Ke 18.1.2017 Timo Männikkö Luento 4 Tietorakenteet Pino Pinon toteutus Jono Jonon toteutus Lista Listaoperaatiot Algoritmit 1 Kevät 2017 Luento 4 Ke 18.1.2017 2/29 Pino Pino, stack,
CEM DT-3353 Pihtimittari
CEM DT-3353 Pihtimittari Sivu 1/5 CEM DT-3353 Pihtimittari Ongelma Mittarin ohjelmisto ilmoittaa NO DATA vaikka tiedonsiirtokaapeli on kytketty tietokoneen ja mittarin välille, mittarissa on virta päällä
Potentially Visible Set (PVS)
HELSINKI UNIVERSITY OF TECHNOLOGY 5.5.2003 Telecommunications Software and Multimedia Laboratory Tik-111.500 Tietokonegrafiikan seminaari Spring 2003: Reaaliaikainen 3D grafiikka Potentially Visible Set
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
Smart Board lukion lyhyen matematiikan opetuksessa
Smart Board lukion lyhyen matematiikan opetuksessa Haasteita opettajalle lukion lyhyen matematiikan opetuksessa ovat havainnollistaminen ja riittämätön aika. Oppitunnin aikana opettaja joutuu usein palamaan
4.1 Kaksi pistettä määrää suoran
4.1 Kaksi pistettä määrää suoran Kerrataan aluksi kurssin MAA1 tietoja. Geometrisesti on selvää, että tason suora on täysin määrätty, kun tunnetaan sen kaksi pistettä. Joskus voi tulla vastaan tilanne,
Tuloperiaate. Oletetaan, että eräs valintaprosessi voidaan jakaa peräkkäisiin vaiheisiin, joita on k kappaletta
Tuloperiaate Oletetaan, että eräs valintaprosessi voidaan jakaa peräkkäisiin vaiheisiin, joita on k kappaletta ja 1. vaiheessa valinta voidaan tehdä n 1 tavalla,. vaiheessa valinta voidaan tehdä n tavalla,
EKOLOGISUUS. Ovatko lukiolaiset ekologisia?
EKOLOGISUUS Ovatko lukiolaiset ekologisia? Mitä on ekologisuus? Ekologisuus on yleisesti melko hankala määritellä, sillä se on niin laaja käsite Yksinkertaisimmillaan ekologisuudella kuitenkin tarkoitetaan
Windows Phone 7.5 erilainen ja fiksu älypuhelin. Vesa-Matti Paananen Liiketoimintajohtaja, Windows Phone Microsoft Oy vesku@microsoft.
Windows Phone 7.5 erilainen ja fiksu älypuhelin Vesa-Matti Paananen Liiketoimintajohtaja, Windows Phone Microsoft Oy vesku@microsoft.com Agenda 29.11.2011 Microsoftin strategia pähkinän kuoressa Kuluttajat
Ohjelmointi 1 C#, kevät 2013, 2. tentti
ITKP102 Ohjelmointi 1 C# 15.5.2013 1 / 6 Ohjelmointi 1 C#, kevät 2013, 2. tentti Tentaattori Antti-Jussi Lakanen Tässä tentissä saa olla mukana omia muistiinpanoja yhden arkin verran. Tentin valvojalla
Probabilistiset mallit (osa 1) Matemaattisen mallinnuksen kurssi Kevät 2002, luento 10, osa 1 Jorma Merikoski Tampereen yliopisto
Probabilistiset mallit (osa 1) Matemaattisen mallinnuksen kurssi Kevät 2002, luento 10, osa 1 Jorma Merikoski Tampereen yliopisto Mikä on probabilistinen malli? Kutsumme probabilistisiksi malleiksi kaikkia
Vasteaika. Vasteaikaa koskeva ohje ei ole juuri muuttunut Robert B. Millerin vuonna 1968 pitämästä esityksestä:
Nielsen: "Olen tutkinut Webin käytettävyyttä vuodesta 1994, ja jokaisessa tutkimuksessa esiin on noussut sama asia: käyttäjät haluaisivat sivujen latautuvan nopeammin. Aluksi olin sitä mieltä, että käyttäjät
Algoritmit 2. Luento 6 Ke Timo Männikkö
Algoritmit 2 Luento 6 Ke 29.3.2017 Timo Männikkö Luento 6 B-puun operaatiot B-puun muunnelmia Nelipuu Trie-rakenteet Standarditrie Pakattu trie Algoritmit 2 Kevät 2017 Luento 6 Ke 29.3.2017 2/31 B-puu
Kenguru Student (lukion 2. ja 3. vuosi) sivu 1 / 6
Kenguru Student (lukion 2. ja 3. vuosi) sivu 1 / 6 NIMI LUOKKA/RYHMÄ Pisteet: Kenguruloikan pituus: Irrota tämä vastauslomake tehtävämonisteesta. Merkitse tehtävän numeron alle valitsemasi vastausvaihtoehto.
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...
Paretoratkaisujen visualisointi. Optimointiopin seminaari / Kevät 2000 Esitelmä 11 Petteri Kekäläinen 45305L
Paretoratkaisujen visualisointi Optimointiopin seminaari / Kevät 2000 Esitelmä 11 Petteri Kekäläinen 45305L 1. Johdanto Monitavoiteoptimointitehtävät ovat usein laajuutensa takia vaikeasti hahmotettavia
Rakenteiset tietotyypit Moniulotteiset taulukot
C! Rakenteiset tietotyypit Moniulotteiset taulukot 22.2.2018 Agenda Rakenteiset tietotyypit Vilkaisu 6. kierroksen tehtäviin Moniulotteiset taulukot Esimerkki Seuraava luento to 8.3. Ilmoittautuminen ohjelmointikokeeseen
Diskreetin matematiikan perusteet Laskuharjoitus 2 / vko 9
Diskreetin matematiikan perusteet Laskuharjoitus 2 / vko 9 Tuntitehtävät 9-10 lasketaan alkuviikon harjoituksissa ja tuntitehtävät 13-14 loppuviikon harjoituksissa. Kotitehtävät 11-12 tarkastetaan loppuviikon
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,
Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 16.3
16. Lohkot 16.1 Sisällys Tutustutaan lohkoihin. Muuttujien ja vakioiden näkyvyys sekä elinikä erityisesti operaation lohkossa. Nimikonfliktit. Muuttujat operaation alussa vai myöhemmin? 16.2 Lohkot Kaarisulut
Apuja ohjelmointiin» Yleisiä virheitä
Apuja ohjelmointiin» Yleisiä virheitä Ohjelmaa kirjoittaessasi saattaa Visual Studio ilmoittaa monenlaisista virheistä "punakynällä". Usein tämä johtuu vain siitä, että virheitä näytetään vaikket olisi
T Luonnollisten kielten tilastollinen käsittely
T-61.281 Luonnollisten kielten tilastollinen käsittely Vastaukset 3, ti 11.2.2003, 16:15-18:00 Kollokaatiot, Versio 1.1 1. Lasketaan ensin tulokset sanaparille valkoinen, talo käsin: Frekvenssimenetelmä:
MAB3 - Harjoitustehtävien ratkaisut:
MAB3 - Harjoitustehtävien ratkaisut: 1 Funktio 1.1 Piirretään koordinaatistoakselit ja sijoitetaan pisteet: 1 1. a) Funktioiden nollakohdat löydetään etsimällä kuvaajien ja - akselin leikkauspisteitä.
Kenguru Benjamin (6. ja 7. luokka) sivu 1 / 5
Kenguru Benjamin (6. ja 7. luokka) sivu 1 / 5 3 pisteen tehtävät 1) Mikä on pienin? A) 2 + 0 + 0 + 8 B) 200 : 8 C) 2 0 0 8 D) 200 8 E) 8 + 0 + 0 2 2) Millä voidaan korvata, jotta seuraava yhtälö olisi
Joonas Haapala Ohjaaja: DI Heikki Puustinen Valvoja: Prof. Kai Virtanen
Hävittäjälentokoneen reitin suunnittelussa käytettävän dynaamisen ja monitavoitteisen verkko-optimointitehtävän ratkaiseminen A*-algoritmilla (valmiin työn esittely) Joonas Haapala 8.6.2015 Ohjaaja: DI
Tietorakenteet 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ä
58131 Tietorakenteet (kevät 2009) Harjoitus 11, ratkaisuja (Topi Musto)
811 Tietorakenteet (kevät 9) Harjoitus 11, ratkaisuja (Topi Musto) 1. Bellmanin-Fordin algoritmin alustusvaiheen jälkeen aloitussolmussa on arvo ja muissa solmuissa on arvo ääretön. Kunkin solmun arvo
Ristitulolle saadaan toinen muistisääntö determinantin avulla. Vektoreiden v ja w ristitulo saadaan laskemalla determinantti
14 Ristitulo Avaruuden R 3 vektoreille voidaan määritellä pistetulon lisäksi niin kutsuttu ristitulo. Pistetulosta poiketen ristitulon tulos ei ole reaaliluku vaan avaruuden R 3 vektori. Ristitulosta on
POHDIN - projekti. Funktio. Vektoriarvoinen funktio
POHDIN - projekti Funktio Funktio f joukosta A joukkoon B tarkoittaa sääntöä, joka liittää jokaiseen joukon A alkioon jonkin alkion joukosta B. Yleensä merkitään f : A B. Usein käytetään sanaa kuvaus synonyymina
Tietorakenteet ja algoritmit syksy Laskuharjoitus 1
Tietorakenteet ja algoritmit syksy 2012 Laskuharjoitus 1 1. Tietojenkäsittelijä voi ajatella logaritmia usein seuraavasti: a-kantainen logaritmi log a n kertoo, kuinka monta kertaa luku n pitää jakaa a:lla,
jens 1 matti Etäisyydet 1: 1.1 2: 1.4 3: 1.8 4: 2.0 5: 3.0 6: 3.6 7: 4.0 zetor
T-1.81 Luonnollisten kielten tilastollinen käsittely Vastaukset 11, ti 8.4., 1:1-18: Klusterointi, Konekääntäminen. Versio 1. 1. Kuvaan 1 on piirretty klusteroinnit käyttäen annettuja algoritmeja. Sanojen
Kerro kuvin 3:n uudet ominaisuudet
Verkkosivu: www.haltija.fi Puhelin: 09 612 2250 Sähköposti: asiakaspalvelu@haltija.fi Kerro kuvin 3:n uudet ominaisuudet Kerro kuvin 3 on kehitetty uudelleen perusteista lähtien. Kaikki, mikä oli mahdollista
MAB3 - Harjoitustehtävien ratkaisut:
MAB - Harjoitustehtävien ratkaisut: Funktio. Piirretään koordinaatistoakselit ja sijoitetaan pisteet:. a) Funktioiden nollakohdat löydetään etsimällä kuvaajien ja - akselin leikkauspisteitä. Funktiolla
Tietorakenteet 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:
Pythonin Kertaus. Cse-a1130. Tietotekniikka Sovelluksissa. Versio 0.01b
Pythonin Kertaus Cse-a1130 Tietotekniikka Sovelluksissa Versio 0.01b Listat 1/2 esimerkkejä listan peruskäytöstä. > lista=['kala','kukko','kissa','koira'] ['kala','kukko','kissa','koira'] >lista.append('kana')
Topologia Syksy 2010 Harjoitus 4. (1) Keksi funktio f ja suljetut välit A i R 1, i = 1, 2,... siten, että f : R 1 R 1, f Ai on jatkuva jokaisella i N,
Topologia Syksy 2010 Harjoitus 4 (1) Keksi funktio f ja suljetut välit A i R 1, i = 1, 2,... siten, että f : R 1 R 1, f Ai on jatkuva jokaisella i N, i=1 A i = R 1, ja f : R 1 R 1 ei ole jatkuva. Lause
Ohjelmointikielet ja -paradigmat 5op. Markus Norrena
Ohjelmointikielet ja -paradigmat 5op Markus Norrena Ko#tehtävä 4 Viimeistele "alkeellinen kuvagalleria". Käytännössä kaksi sivua Yksi jolla voi ladata kuvia palvelimelle (file upload) Toinen jolla ladattuja
Kuva 1. Jokaisen tavallisen kuvan tasotyökalussa näkyy vain yksi taso, tässä nimellä tausta.
Gimp alkeet XII 9 luokan ATK-työt/HaJa Sivu 1 / 6 GIMP:in tasotyökalu Lue ensin nämä ohjeet! Harjoitus lopussa! GIMP:in tasotyökalu on nimensä mukaisesti työkalu, jolla hallitaan tasoja, niiden läpinäkyvyyttä,
Haaga-Helia/IltaTiko ict2tcd005: Ohjelmiston suunnittelutaito 1/7 Anne Benson. Tällä opintojaksolla käytämme VS:n kolmen kokonaisuuden luomiseen:
Haaga-Helia/IltaTiko ict2tcd005: Ohjelmiston suunnittelutaito 1/7 Microsoft SQL käyttö Yleistä VisualStudiosta Tällä opintojaksolla käytämme VS:n kolmen kokonaisuuden luomiseen: - sovellushallintaan -
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
Verkkoaineistojen linkittäminen
Verkkoaineistojen linkittäminen Linkitä e kirjat Jykdokista... 2 Linkitä tietokannat Nellistä... 3 Linkki Haku aineistosta sivulle... 3 Linkki Aineistolista sivulle... 4 Linkki Aineistolista sivun kautta,
58131 Tietorakenteet ja algoritmit (syksy 2015)
58131 Tietorakenteet ja algoritmit (syksy 2015) Harjoitus 2 (14. 18.9.2015) Huom. Sinun on tehtävä vähintään kaksi tehtävää, jotta voit jatkaa kurssilla. 1. Erään algoritmin suoritus vie 1 ms, kun syötteen
opiskelun suunnittelujärjestelmä, kurki ja ilmo käyttävät kaikki samaa tietokantaa, ja uusi järjestelmä tulee osaksi tätä.
25.1.2010 Palaverin kysymyksien selvittelymuistio Mitä ominaisuuksia halutaan? Sopivat ajat sprinttien jälkeisiin demoihin/palavereihin. - mitkä ajat sopivat? Pekka : pe 12-16 Tommi : pe 8-16 Onko ohjelmointikielen