Näkyvyystarkastelut hierarkioita käyttäen



Samankaltaiset tiedostot
Lisää segmenttipuusta

Luonnollisten lukujen laskutoimitusten määrittely Peanon aksioomien pohjalta

Luku 6: Grafiikka. 2D-grafiikka 3D-liukuhihna Epäsuora valaistus Laskostuminen Mobiililaitteet Sisätilat Ulkotilat

Johdatus diskreettiin matematiikkaan Harjoitus 7,

Luento 6: Piilopinnat ja Näkyvyys

Dynamic Occlusion Culling

Tekijät: Hellevi Kupila, Katja Leinonen, Tuomo Talala, Hanna Tuhkanen, Pekka Vaaraniemi

Matematiikan tukikurssi

MAA10 HARJOITUSTEHTÄVIÄ

Windows Live SkyDrive - esittely

c) Määritä paraabelin yhtälö, kun tiedetään, että sen huippu on y-akselilla korkeudella 6 ja sen nollakohdat ovat x-akselin kohdissa x=-2 ja x=2.

Kenguru 2016 Mini-Ecolier (2. ja 3. luokka) Ratkaisut

Epäyhtälön molemmille puolille voidaan lisätä sama luku: kaikilla reaaliluvuilla a, b ja c on voimassa a < b a + c < b + c ja a b a + c b + c.

( ) ( ) ( ) ( ( ) Pyramidi 4 Analyyttinen geometria tehtävien ratkaisut sivu 271 Päivitetty a) = keskipistemuoto.

Tilanhallintatekniikat

2.7 Neliöjuuriyhtälö ja -epäyhtälö

11.4. Rakenteellista käsittelyä tilavuusrenderöintialgoritmeissa

Matematiikan tukikurssi 3.4.

360 asteen kuvan tekeminen

MS-A Matriisilaskenta Laskuharjoitus 3

1 / 11. Digitaalisen arkkitehtuurin yksikkö Aalto-yliopisto. Pikaopas Maxwelliin. ARK-A2500 DA-alkeet Elina Haapaluoma, Heidi Silvennoinen Syksy 2015

Merkintöjen tekeminen pohjakuvaan Libre Officella v.1.2

TW- EAV510: WDS- TOIMINTO KAHDEN TW- EAV510 LAITTEEN VÄLILLÄ

Matkahuolto lisäosa WooCommerce alustalle (c) Webbisivut.org

Asenna myös mikroskopian lisäpala (MBF ImageJ for Microscopy Collection by Tony Collins)

- Valitaan kohta Asetukset / NAT / Ohjelmallinen palvelin - Seuraavassa esimerkki asetuksista: valitaan käytössä oleva ohjelmistorajapinta

monissa laskimissa luvun x käänteisluku saadaan näyttöön painamalla x - näppäintä.

P A R T. Professional Assault Response Training Seppo Salminen Auroran koulu. Valtakunnalliset sairaalaopetuksen koulutuspäivät

Hae Opiskelija käyttöohje

(x 0 ) = lim. Derivoimissääntöjä. Oletetaan, että funktiot f ja g ovat derivoituvia ja c R on vakio. 1. Dc = 0 (vakiofunktion derivaatta) 2.

SIS. Vinkkejä Ampèren lain käyttöön laskettaessa magneettikenttiä:

Kauden vaihtaminen. Tom Hedman Jopox oy;

2.2 Täydellinen yhtälö. Ratkaisukaava

Algoritmit 2. Luento 6 To Timo Männikkö

Eksponenttifunktion Laplace muunnos Lasketaan hetkellä nolla alkavan eksponenttifunktion Laplace muunnos eli sijoitetaan muunnoskaavaan

OHJ-1151 Ohjelmointi IIe

Aluksi Kahden muuttujan lineaarinen epäyhtälö

Animaation tuotanto. Mika Timonen

AC-HOST-vinkkejä eape3 Milla Ahola 2014

HELSINKI UNIVERSITY OF TECHNOLOGY Telecommunications Software and Multimedia Laboratory Tik Tietokonegrafiikan seminaari Kevät 2003

TILASTOLLINEN LAADUNVALVONTA

Dynaamisen järjestelmän siirtofunktio

Käyttöjärjestelmät: Virtuaalimuisti

Marjan makuisia koruja rautalangasta ja helmistä -Portfolio

Algoritmit 2. Luento 6 Ke Timo Männikkö

Teknillinen korkeakoulu T Tietojenkäsittelyopin ohjelmatyö. Testitapaukset - Koordinaattieditori

2.2. Kohteiden konstruktiivinen avaruusgeometrinen esitys

Esimerkkejä derivoinnin ketjusäännöstä

Teen koko ajan aktiivista mainontaa Googlessa. Tavoite on olla etusivulla, kun haetaan henkisiä tapahtumia, kursseja, yrittäjiä.

Algoritmit 2. Luento 8 Ke Timo Männikkö

Johdatus L A TEXiin. 6. Omat komennot ja lauseympäristöt Markus Harju. Matemaattiset tieteet

Luku 8. Aluekyselyt. 8.1 Summataulukko

Ilmoittautuminen kansalliseen, SM-, AM- tai avoimeen kilpailuun

Sähköpostiohjeet. Tehokas ja huoleton sähköposti

Huomaa, että 0 kitkakerroin 1. Aika harvoin kitka on tasan 0. Koska kitkakerroin 1, niin

Racket ohjelmointia. Tiina Partanen 2014

Luku 7. Verkkoalgoritmit. 7.1 Määritelmiä

Matematiikan tukikurssi

Sähköstaattisen potentiaalin laskeminen

Installation instructions, accessories. Kattolaatikko. Volvo Car Corporation Gothenburg, Sweden. Ohje nro Versio Osa nro

Vaikeasti vammaisen lapsen vanhempana ajatuksia elvytyksestä ja tehohoidosta.

String-vertailusta ja Scannerin käytöstä (1/2) String-vertailusta ja Scannerin käytöstä (2/2) Luentoesimerkki 4.1

Luento 6. June 1, Luento 6

Asenna myös mikroskopian lisäpala (MBF ImageJ for Microscopy Collection by Tony Collins)

Nuorten tieto- ja neuvontatyön osaamiskartta Pirjo Kovalainen

Opettajalle ohje opintojakson toteutuksen tekemiselle mallipohjana ja mallipohjan tuominen opintojakson toteutukseen.

Massaeditorikoulutus KANSALLISKIRJASTO - Kirjastoverkkopalvelut

4A 4h. KIMMOKERROIN E

T Vuorovaikutteinen tietokonegrafiikka Tentti

Kesäkuu Synkka Tuote Pakkaushierarkia yksittäin ja monipakkauksissa myytäville tuotteille

ABT 2000kg Haarukkavaunun käyttöohje

Algoritmit ja tietorakenteet Copyright Hannu Laine. 1, kun n= 0. n*(n-1)!, kun n>0;

Navigointia - perusopetus. Antti Ikonen Rehtori Vpj SURE FIRE

Jos haluat uuden Share-työkalun, valitse Pods -> Share -> Add New Share tai jos sinulla on jo auki Share-työkalu, näyttää se tältä:

Osion kaksi kertaus. Jukka Juslin. Jukka Juslin

TimeEdit henkilökunnan ohje

Maisema-arkkitehtuurin perusteet 1A, syksy 2015 Pinnanmuodot-tehtävään ArcMap-ohjeet

Tytöt LVI-alalla - Perusraportti

Testisarja Materiaali- ja valaistusparametrit

Yksinkertaistaminen normaalitekstuureiksi

LABYRINTTI VOHVELI- KANKAALLE. Idapankki opettajalle Tekijät: Juha-Joel, Reeta ja Tuulia Itä-Suomen yliopisto, Joensuun kampus

Vetokaapit laboratorioihin

Lapsen osallisuus prosessissa Lasten ja edunvalvojien kokemuksia edunvalvojasta lastensuojelussa ja rikosprosessissa

Helmi-koulutus Tuen lomakkeet

Ratkaisuehdotukset Kesäyliopisto Kuvassa on esitetty erään ravintolan lounasbuffetin kysyntäfunktio.

KUOPION KAUPUNGIN KELLONIEMEN DNA:N TUKIASEMAN VAIKUTUSSELVITYS

Ravintovartti, teemana lautasmalli

KELAN INDUKTANSSI VAASAN YLIOPISTO TEKNILLINEN TIEDEKUNTA SÄHKÖTEKNIIKKA. Miika Manninen, n85754 Tero Känsäkangas, m84051

Kenguru 2006 sivu 1 Benjamin 6. ja 7. luokka ratkaisut

Oletetaan, että funktio f on määritelty jollakin välillä ]x 0 δ, x 0 + δ[. Sen derivaatta pisteessä x 0 on

Tietorakenteet, laskuharjoitus 7, ratkaisuja

Outlook Microsoft Outlook 2007 PIKAOHJE: SÄHKÖPOSTIN UUSI ILME. Kieliversio: suomi Materiaaliversio 1.0 päivitetty

Väli- ja loppuraportointi

LUPAOSAKASLUETTELO (ns. yhteislupa) Liite hirvieläinten pyyntilupahakemukseen Sivu 1

AMK verkosto- opetuksen kehittämist. mistä parhaimmillaan. Annika Michelson ja Ari Vesikko

Suunnistaminen peukalokompassilla Peukalokompasseissa on eroa

Antavatko Kelan standardit mahdollisuuden toteuttaa hyvää kuntoutusta työssä uupuneille ja mielenterveysongelmaisille?

Trust PhotoCam 1300 TRUST PHOTOCAM Pika-asennusohje. Versio 1.0

Postien siirto Koivusta Puruun Macin Mail-ohjelmalla Sivu 1

Taulukkolaskenta II. Taulukkolaskennan edistyneempiä piirteitä

Transkriptio:

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

Näkyvyystarkastelut hierarkioita käyttäen Jukka Savolainen HUT, Tietoliikenneohjelmistojen ja multimedian laboratorio jukka.savolainen@hut.fi Abstract Tässä seminaaripaperissa kerrotaan, kuinka hierarkioita voidaan käyttää näkyvyystarkasteluissa nopeuttamaan 3D-grafiikan piirtämistä. Eri metodeja ja algoritmeja hierarkian rakentamiseksi ja hyödyntämiseksi käydään läpi ja vertaillaan niiden sopivuutta erilaisiin tilanteisiin. 3Dmallit voivat sisältää paljon tai vähän polygoneja ja ympäristö voi olla staattinen tai dynaaminen. 1 JOHDATUS Reaaliaikainen 3D-grafiikka vaatii hyvin paljon laskentatehoa. Vaikka tekniikka kehittyy nopeasti, niin silti erittäin monimutkaisia 3D-malleja ei voida renderöidä reaaliaikaisesti. Laskemalla, mitä kulloinkin näkyy ja jättämällä näkymättömät polygonit renderöimättä saadaan renderöintiä tehostettua useimmiten hyvin paljon. Hierarkioita käyttämällä voidaan leikata kerralla suuria alueita 3D-maailmasta pois, mikäli todetaan, että korkealla hierarkiassa oleva alue ei ole näkyvissä. Tällöin vältytään useiden pienien alueiden erilliseltä tarkastelulta. Laskettaessa mitä täytyy piirtää ja mitä voidaan jättää piirtämättä voidaan käyttää hyväksi erilaisia 3D-maailman ominaisuuksia. Lähekkäin olevat objektit ovat usein kaikki joko näkyvissä tai poissa näkyvistä (object-space coherence). Jos joku objekti peittää jonkun pikselin ruudulla, niin todennäköisesti sama objekti peittää myös läheisiä pikseleitä (image space coherence). Ajallisesti lähekkäin olevat animaation ruudut (frame) ovat yleensä samankaltaisia. Eli tämänhetkisessä ruudussa piilossa oleva objekti on piilossa myös seuraavassa ruudussa (temporal coherence). (Greene et al., 1993) 2 HIERARKIAT NÄKYVYYSTARKASTELUISSA Toteuttamalla 3D-maailman näkyvyystarkastelu hierarkisesti voidaan näkyvyystarkastelua tehostaa, sillä tällöin jokaisen objektin näkyvyyttä ei tarvitse erikseen tarkastella, jos todetaan, että objekti kuuluu sellaiseen hierarkian alatasoon, jonka on jo todettu olevan näkymättömissä korkeamman hierarkiatason tarkastelussa. Hierarkisen näkyvyystarkatelun 1

toteuttamiseen liittyy läheisesti monia termejä kuten tilan jakaminen (spatial subdivision) (luku 3), bounding volume hierarchies (luku 4), hierarkinen Z-puskuri (hierarchical Z- buffer) (luku 5) ja hierarchical occlusion maps (HOM) (luku 6). 3 TILAN JAKAMINEN Jakamalla 3D-maailma pienemmiksi alueiksi voidaan renderöintiä nopeuttaa, sillä tällöin ei aina tarvitse tarkastella koko 3D-maailmaa kerralla. Usein jako tehdään käyttäen jotakin hierarkista rakennetta, jolloin suuria alueita 3D-maailmasta voidaan leikata kerralla pois. Yleisimmät tavat toteuttaa jako ovat tasajako (regular grid), octree, BSPpuu (binary space partitioning) ja kd-puu. (Pantazopoulos et al., 2002) Tasajako (Kuva 1) on kaikkein yksinkertaisin tapa jakaa maailma osiin. Maailma jaetaan soluihin, jotka kaikki ovat saman kokoisia. Käytännön sovelluksissa solut ovat joko neliöitä tai kuutioita. Jokaisessa solussa on lista sen sisältämistä objekteista. Tasajako on helppo toteuttaa, mutta se ei ole kovin tehokas, sillä siinä ei oteta millään tavalla huomioon ympäristössä olevien objektien kokoa, muotoa tai sijaintia. (Pantazopoulos et al., 2002) Kuva 1: Tasajaossa jää paljon tyhjiä soluja. (Pantazopoulos et al., 2002) Octree (Kuva 2) on kehittyneempi versio tasajaosta. Koko 3D-maailman ympäröivä kuutio laitetaan puurakenteen juureen ja tämä kuutio jaetaan kahdeksaan yhtä suureen osaan akselien mukaisesti. Jokaisen uuden kuution kohdalla jakoa jatketaan hierarkisesti kunnes saavutetaan määrätty hierarkian maksimisyvyys tai kunnes kuution sisällä ei ole yhtään objektia. Jokainen puun lehti ja mahdollisesti myös solmu sisältää tiedon siihen kuuluvista objekteista. Octree on tasajakoa tehokkaampi, sillä eri alueet voivat olla eri 2

kokoisia riippuen objektien sijainnista. Alueita ei turhaan jaeta liian pieneen osiin, mikäli alueella on vain vähän tai ei ollenkaan objekteja. (Pantazopoulos et al., 2002) Kuva 2: Octreessa tyhjiä soluja on vähemmän kuin tasajaossa. (Pantazopoulos et al., 2002) Loose octree on octree, jossa samassa hierarkian tasossa olevat solut menevät osittain toistensa päälle siten, että solussa olevan objektin geometria saa mennä viereisen solun alueelle. Solun sivun pituus on kaksi kertaa suurempi kuin tavallisessa octreessa. Tämän ansiosta liikuvien objektien paikka hierarkiessa voidaan määrittää nopeammin objektin keskipisteen ja säteen avulla. Loose octreessa hierarkien syvyys on sama koko 3Dmaailman alueella. Tällöin syntyy paljon tyhjiä soluja, mutta toisaalta liikkuvien objektien uudelleen sijoittaminen hierarkiaan nopeutuu, kun soluja ei tarvitse pilkkoa tai poistaa dynaamisesti. (Ulrich, 2001) BSP-puu (Kuva 3) muodostetaan jakamalla 3D-maailma osiin tasojen avulla. Tasot voivat sijaita missä asennossa tahansa eivätkä siis ole sidottuja koordinaattiakseleihin. Tasot muodostavat solmuja puuhun ja objektit määritellään kuuluvaksi joko tason eteen tai taakse. Käymällä puuta läpi saadaan selville onko jokin objekti lähempänä katselupistettä kuin jokin toinen objekti. BSP-puun yhdeksi ongelmaksi muodostuu se, että 3D-maailmaa ei käytännössä koskaan voida jakaa tasoihin ilman, että tasot leikkaisivat objekteja. Objekteja siis joudutaan pilkkomaan, jotta voidaan määritellä kuuluuko se tason etu- vai takapuolelle. (Durand, 1999; Pantazopoulos et al., 2002) 3

Kuva 3: BSP-puu. (Pantazopoulos et al., 2002) KD-puu (Kuva 4) on BSP-puun erikoistapaus, jossa tasot valitaan siten, että ne ovat yhdensuuntaisia jonkun koordinaattiakselin kanssa. Tämän yhdensuuntaisuuden ansiosta tieto puun rakenteesta voidaan esittää pienemmällä määrällä bittejä kuin BSP-puussa. KD-puu sopii myös paremmin dynaamisille ympäristöille, sillä yksinkertaisempi rakenne on luonnollisesti helpommin päivitettävissä. (Pantazopoulos et al., 2002) Kuva 4: KD-puu. (Pantazopoulos et al., 2002) Octree-algoritmi lähtee jakamaan yhtä isoa kuutiota pienemmiksi kuutioiksi ja toimii siten parhaiten 3D-ympäristöissä, jotka ovat muodoltaan lähellä kuutiota. Tällaisia voivat olla esim. mekaanisten koneiden tai avaruussatelliittien 3D-mallit. Kaupunkien 3D-mallit ja tietokonepeleissä käytettävät 3D-ympäristöt puolestaan eivät ole lähelläkään kuutiota, sillä niissä korkeus ei ole läheskään samaa luokkaa kuin pituus ja leveys. BSP-puu ja kd-puu toimivat myös kaupunkiympäristössä, mutta etenkin BSP-puu vaatii paljon esilaskentaa ja muistia, jos kyseessä on hyvin monimutkainen malli (Zhang, 1997). 4

4 BOUNDING VOLUME HIERARCHIES 3D-maailmasta löytyvät monimutkaiset ja paljon polygoneja sisältävät objektit voidaan määritellä kuuluvaksi yksinkertaisen 3D-alueen, kuten kuution, sisälle siten, että ohjekti juuri ja juuri mahtuu alueen sisälle. Tarkastelemalla näiden 3D-alueiden näkyvyyttä saadaan näkyvyystarkastelua huomattavasti yksinkertaistettua. Nämä alueet voidaan määritellä kuuluvaksi hierarkioihin. Esimerkiksi talo sisältää useita huoneita ja jokainen huone sisältää useita huonekaluja. (Pantazopoulos et al., 2002) Objekteja ympäröivät alueet voivat olla myös muun muotoisia kuin kuutioita, kuten palloja tai monikulmioita (Kuva 5). Käyttämällä yksinkertaisia kuutioita tai palloja saadaan objektin näkyvyyttä tarkasteltua nopeammin kuin käytettäessä monimutkaisempia 3D-alueita. Tällöin kuitenkin objektia ympäröivä alue ei vastaa kovin tarkasti objektin todellista geometriaa, mikä voi johtaa piilossa olevien objektien turhaan renderöintiin. Objekteja ympäröivät laatikot ovat usein koordinaattiakselien suuntaisia, jolloin niiden määrittäminen on yksinkertaisempaa kuin käytettäessä laatikoita, joiden asento voidaan määrittää paremmin objektin ympärille sopivaksi. Näistä alueista muodostetaan hierarkia määrittelemällä lähekkäin olevat alueet kuuluvaksi samaan isompaan alueeseen. Näitä isompia alueita yhdistellään edellen vielä isommilla alueilla, kunnes hierarkian juuressa on vain yksi iso alue, joka kattaa koko 3D-maailman. (Klosowski et al., 1998) Hierarkiaa voidaan hyödyntää myös määrittelemällä objektille useita 3D-alueita, jotka ympäröivät sitä. Korkeimman tason hierarkiassa oleva 3D-alue on hyvin yksinkertainen, jolloin voidaan nopeasti todeta objektin näkymättömyys. Hierarkiassa alemmilla tasoilla olevat 3D-alueet ovat monimutkaisempia ja lähempänä objektin todellista geometriaa. Alemman tason hierarkiassa olevia 3D-alueita käytetään varmistamaan, että objekti todella on näkyvissä sen jälkeen, kun on todettu, että ylemmän tason 3D-alue on näkyvissä. (Klosowski et al., 1998) Kuva 5: Objekteja ympäröivät alueet (bounding volumes) voivat olla eri muotoisia. 5

5 HIERARKINEN Z-PUSKURI Hierarkinen Z-puskuri (hierarchical Z-buffer) (Kuva 6) käyttää hyväkseen kolmea eri 3Dgrafiikan ominaisuutta (object-space coherence, image-space coherence ja temporal coherence) nopeuttamaan piirtämistä. Normaali Z-puskuri ei hyödynnä objektien lähekkäisyyttä (object-space coherence) eikä peräkkäisten ruutujen samankaltaisuutta (temporal coherence) vaan jokainen polygoni käsitellään erikseen eikä edellisen ruudun tilannetta tallenneta muistiin. Toisaalta normaalia ray-casting metodia käytettäessä hyödynnetään objektien lähekkäisyyttä jakamalla alueet pienempiin osiin (spatial subdivision), jolloin takana olevia objekteja ei tarvitse käsitellä kunhan ensin löydetään edestä objekti, joka on näkyvissä ja peittää takana olevat objektit. Ray-casting metodi ei kuitenkaan käytä hyväkseen peräkkäisten ruutujen samankaltaisuutta. (Greene et al., 1993) Hierarkinen Z-puskuri yhdistää tavallisen Z-puskurin ja ray-tracingin hyvät ominaisuudet (object-space coherence ja image-space coherence) ja lisää siihen vielä edellisen ruudun tarkastelun nopeuttamaan näkyvien objektien löytämistä. Hierarkisessa Z-puskurissa 3Dmaailma jaetaan pienempiin alueisiin octree-algoritmia käyttäen. Image-space Z- pyramidin avulla saadaan poistettua piilossa olevia geometrioita hyvin tehokkaasti ja edellisessä ruudussa näkyvissä olevasta geometriasta lasketaan aloitusarvot algoritmille seuraavaa ruutua varten. (Greene et al., 1993) Tarkasteltaessa octree-algoritmilla kuutioihin jaettua 3D-maailmaa usein havaitaan, että vain hyvin pieni osa kuutioista on näkyvissä. Seuraavassa piirrettävässä ruudussa nämä näkyvissä olevat kuutiot ovat melkein samat kuin edellisessä ruudussa, mikäli animaatio on sulavaa. Normaaleissa sovelluksissa animaatio on muutoin sulavaa paitsi kohtauksen vaihtuessa tai kameran äkillisesti vaihtaessa paikkaa. Hierarkisessa Z-puskurissa käytetään listaa, joka huomioi tämän aikatasossa olevan samankaltaisuuden (temporal coherence list). Tässä listassa on tallennettuna ne kuutiot, jotka olivat näkyvissä edellisen ruudun kohdalla. Uuden ruudun kohdalla piirretään kaikki ne objektit, jotka ovat niiden kuutioiden sisällä, jotka olivat näkyvillä edellisessä ruudussa. Näkyvyystarkastelu tehdään muuten normaalisti, mutta jo piirretyt kuutiot merkitään renderöidyiksi. Tällä saadaan aikaiseksi selkeää nopeutumista, sillä käytäessä läpi Z-pyramidia aikaa kuluu erityisesti silloin, kun tarkastelun kohde on näkyvissä. Kohtauksen vaihtuessa piirretään hyvin paljon paljon turhaa geometriaa, mikäli suurin osa tai kaikki näkyvissä olevista kuutioista vaihtuvat. (Greene et al., 1993) Greene et al. (1993) testasivat kehittämänsä hierarkisen Z-puskurin tehokkuutta eri polygonimääriä sisältävissä 3D-ympäristöissä. Mallissa, jossa oli 15 000 polygonia 512x512 kokoisen kuvan renderöinti oli 17% hitaampaa hierarkisella Z-puskurilla kuin tavallisella Z-puskurilla. Polygonien määrän ollessa 45 000 renderöinti oli molemmilla menetelmillä yhtä nopeaa ja 105 000 polygonilla hierarkinen Z-puskuri oli 28% nopeampi. Greene et al. (1993) sanovat Z-puskurin olevan erittäin tehokas algoritmi näkyvyystarkasteluihin etenkin, kun kyseessä on monimutkainen ja paljon polygoneja sisältävä 3D-maailma. Durand (1999) toteaa kuitenkin, että hierarkista Z-puskuria ei voida toteuttaa tehokkaasti nykyisillä (vuoden 1999) laitteilla johtuen monista Z-arvon kyselyistä, joita tarvitaan mm. Z-pyramidin päivittämiseen. Durandin arvio hierarkisen Z- puskurin käytettävyydestä on todennäköisesti lähempänä totuutta kuin Greene et al.:n 6

arvio, sillä Green et al. ovat olleet itse kehittämättä hierarkista Z-puskuria eivätkä siten ole parhaita henkilöitä arvioimaan sen käyttökelpoisuutta puolueettomasti. Kuva 6: Hierarkinen Z-puskuri. (Durand., 1999) 6 HIERARCHICAL OCCLUSION MAPS Hierarchical occlusion maps (HOM) on tarkoitettu käytettäväksi näkyvyystarkasteluissa erityisesti monimutkaisten mallien kanssa, jotka sisältävät monimutkaisuutta etenkin syvyyssuunnassa. Esilaskentana HOM-algoritmi vaatii peittävien objektien (occluder database) etsimisen kaikkien objektien (model database) joukosta. HOM-algoritmin kaksi päävaihetta jokaisen ruudun piirtämisen kohdalla ovat peittävyyskarttahierarkian luominen (Kuva 7) ja näkyvän geometrian etsiminen tämän hierarkian avulla. Esilaskennassa löydettyjen peittäjien (occluders) joukosta valitaan piirrettävään ruutuun sopivat peittäjät käymällä occluder database läpi view-frustum cullingia käyttäen ja valitsemalla osa näkökentän sisällä olevista peittäjistä. Valinta tehdään käyttäen hyväksi tietoa edellisessä ruudussa käytetyistä peittäjistä. Valitut peittäjät renderöidään puskuriin valkoisina ilman valaistusta tai teksturointia. Näiden peittäjien perusteella lasketaan syvyyspuskuri (depth estimation buffer, DEB). (Zhang et al., 1997) DEB:n avulla ei saada tarkkaa syvyysarvoa jokaiselle pikselille, kuten Z-puskurissa, vaan usealle lähekkäiselle pikselille määritetään sama syvyysarvo. Tämän ansiosta muistia kuluu vähemmän ja syvyysarvojen käsittely onnistuu suhteellisen nopeasti ilman rautatukea. (Zhang et al., 1997) Lopuksi näkyvä geometria etsitään kaikkien objektien joukosta. Tavallisella view-frustum cullingilla tiputetaan pois objektit, jotka eivät ole näkökentän suunnassa. Syvyystarkastelussa selvitetään, onko objekti peittäjien takana. Peittäjäkarttahierarkia 7

käydään vielä läpi ja tarkastetaan jääkö objektin screen space -projektio kokonaan peittäjäkarttojen läpinäkymättömille alueille. (Zhang et al., 1997) Zhang et al.:n (1997) mukaan HOM:ia käyttämällä 3D-renderöinti saadaan suoritettua 2-5 kertaa nopeammin kuin normaalisti. He käyttivät testeissään kaupunkimallia, dinosauruksista ja teepannuista koostuvaa dynaamista mallia ja sukellusveneen konehuoneen mallia. Kaikissa malleissa oli erittäin paljon polygoneja (300 000 900 000). Zhang et al. (1997) vertailevat HOM-algortimia ja hierarkista Z-puskuria listaten molempien vahvuuksia ja heikkouksia toistensa suhteen. HOM-algoritmi ei vaadi Z- puskuria, mistä on apua mikäli käytetty rauta ei tue Z-puskuria. (Tosin nykyisin kaikissa järjestelmissä lienee tuki Z-puskurille.) HOM-algoritmin vaatimille operaatiolle löytyy valmis rautatuki useimmista järjestelmistä. HOM-algoritmissa ei välttämätä tarvitse käydä läpi hierarkiaa hirvittävän syvälle. Toisaalta hierarkista Z-puskuria käytettäessä näkyvyystarkastelu on siinä mielessä tehokaampaa, että piilossa olevia objekteja renderöidään vähemmän kuin HOM-algoritmia käytettäessä. Lisäksi hierarkisessa Z- puskurissa saadaan peräkkäisten ruutujen samankaltaisuutta hyödynnettyä tehokkaammin. Kuva 7: HOM:n hierarkian eri tasoja. (Zhang et al., 2002) 7 DYNAAMISET 3D-YMPÄRISTÖT Hierarkiat eivät sovi erityisen hyvin dynaamisten 3D-ympäristöjen näkyvyystarkasteluihin johtuen menetelmien monimutkaisuudesta. Kun objekti liikkuu tai muuttaa kokoaan, sen paikka hierarkiassa täytyy laskea uudelleen, mikä vie aikaa. Myös ympäristöön ilmestyvät uudet objektit ja sieltä poistuvat objektit täytyy huomioida. Tyypillisesti dynaamisessa 3D-maailmassa vain osa objekteista on dynaamisia, joten objektit voidaan jakaa staattisiin ja dynaamisiin objekteihin, jolloin kaikkien objektien liikettä ei tarvitse tarkastella. Laskemista voi vähentää myös säilyttämällä hierarkian rakenteen vakiona ja 8

ainoastaan päivittää objektien paikkaa hierarkiassa. Tällöin tietenkin hierarkiaan voi muodostua soluja, jotka ovat tyhjiä tai soluja, joissa on liikan paljon objekteja. (Batagelo et al., 2002) Jos dynaamisten objektien liike on rajoitettua, voidaan objekti määritellä kuuluvaksi tietylle alueelle ja tarkastella objektin näkyvyyttä tarkemmin vasta, kun objektin alue todetaan olevan näkyvissä. Jos objektin liikettä ei ole rajoitettu, voidaan objekti määritellä kuuluvaksi tietylle alueelle rajoitetuksi ajaksi, kun tiedetään objektin suurin mahdollinen liikkumisnopeus. Kun tämä aika kuluu umpeen, joudutaan objektin aluetta päivittämään. (Sudarsky et al., 1999) Monimutkaisia hierarkista Z-puskuria ja HOM-algoritmia paremmin dynaamisten ympäristöjen näkyvyystarkasteluihin sopivat usein loose octree, tasajako tai jokin muu menetelmä, joka ei sisällä monimutkaisia hierarkisia rakenteita. (Batagelo et al., 2002) 8 YHTEENVETO Hierarkioiden vahvuus näkyvyystarkasteluissa on se, että suuria ja paljon geometriaa sisältäviä alueita voidaan parhaassa tapauksessa leikata pois hyvin vähäisellä laskemisella. Näin usein käykin, sillä yleensä vain pieni osa koko geometriasta on kerrallaan näkyvissä ja hierarkiaa ei tarvitse käydä läpi kovin syvälle ennen kuin löytyy peitossa olevia alueita. Hierarkiat vaativat kuitenkin paljon esilaskentaa ja muistia tietorakenteille. Tämän seurauksena yksinkertaisten mallien renderöinnissä hierarkiat voivat aiheuttaa turhaa laskemista. Suurten tietorakenteiden päivittäminen on luonnollisesti hidasta, mikä vaikeuttaa dynaamisten ympäristöjen mallintamista käyttäen hierarkisia näkyvyystarkasteluja. VIITTEET Batagelo, H.; Shin-Ting, W. 2002. Dynamic Scene Occlusion Culling using a Regular Grid. Sibgrapi 2002 conference proceedings. pp. 43-50. Durand, F. 1999. 3D Visibility: Analytical Study and Applications. 305 p. Greene, N.; Kass, M.; Miller, G. 1993. Hierarchical Z-Buffer Visibility. Proceedings of the 20 th annual conference on Computer graphics and interactive techniques. New York, NY, USA. ACM Press. pp. 231-238. Klosowski, J.; Held, M.; Mitchell, J.; Sowizral, H.; Zikan, K. 1998. Efficient Collision Detection Using Bounding Volume Hierarchies of k-dops. IEEE Transactions on Visualization and Computer Graphics. Vol. 4. Issue 1. pp. 21-36. Pantazopoulos, I.; Tzafestas, S. 2002. Occlusion Culling Algorithms: A Comprehensive Survey. Journal of Intelligent and Robotic Systems. Vol. 36. Issue 2. pp. 123-156. Sudarsky, O.; Gotsman, C. 1999. Dynamic Scene Occlusion Culling. IEEE Transactions on Visualization & Computer Graphics. Vol. 5. Issue 1. pp. 217-223. Ulrich. T. (artikkelin kirjoittaja); Deloura, M. (kirjan kirjoittaja) 2001. Game Programming Gems. Charles River Media. 550 p. Zhang, H.; Manocha, D.; Hudson, T.; Hoff, K.E. 1997. Visibility Culling using Hierarchical Occlusion Maps. Proceedings of the 24 th annual conference on 9

Computer graphics and interactive techniques. New York, NY, USA. ACM Press/Addison-Wesley Publishing Co. pp. 77-88. 10