TEKNILLINEN KORKEAKOULU 4.2.2004 Tietoliikenneohjelmistojen ja Multimedian Laboratorio T-111.500 Tietokonegrafiikan seminaari L Billboard Clouds Jon Franzas, TKK jfranzas@cc.hut.fi 52365B
Billboard Clouds Jon Franzas TKK, Tietoliikenneohjelmistojen ja Multimedian Laboratorio jfranzas@cc.hut.fi Abstrakti Artikkelissa esitetään uusi tekniikka nimeltään Billboard Clouds (lyhennetty jatkossa BC) joka mahdollistaa monimutkaisten staattisten kolmiulotteisten mallien renderöimisen oleellisesti nopeammin nykyisiin tapoihin verrattuna. Huomattavasti suurempi nopeus saavutetaan approksimoimalla mallit oleellisesti pienemmällä polygonimäärällä ja käyttämällä tekstuureja ja niiden läpinäkyvyyksiä hyväkseen. Tämä geometrian huomattava yksinkertaistaminen ei juuri huononna mallin visuaalista laatua. 1 JOHDANTO Osiossa käydään lyhyesti läpi mitä reaaliaikaisella tietokonegrafiikalla tarkoitetaan, kerrotaan lyhyesti taustaa, sekä käydään läpi BC:n idea lyhyesti. 1.1 Reaaliaikainen tietokonegrafiikka Reaaliaikaisessa tietokonegrafiikassa on tärkeää käyttää mahdollisimman yksinkertaisia malleja visuaalista laatua unohtamatta. Jotta syntyisi vaikutelma liikkeestä, eikä katsoja erottaisi kuvia toisistaan, koneen pitää pystyä laskemaan vähintään 30 ruutua sekunnissa. Reaaliaikaisen grafiikan tunnetuimpia ja käytetyimpiä sovelluskohteita ovat konsoli- ja tietokonepelit. Koska tietokoneilla on rajoitettu laskenta- ja piirtonopeus, pitää mallien olla mahdollisimman yksinkertaisia jottei nopeus kärsisi liikaa. Nykyään tietokoneet ovat kuitenkin erittäin nopeita ja mahdollistavat yhä monimutkaisimpien ja realistisempien maailmojen renderöimisen. Tehoa ei kuitenkaan koskaan ole liikaa ja peliohjelmoijat löytävät aina käyttöä ylimääräiselle teholle. Tästä johtuen pyritään luomaan pienemmästä polygonimäärästä koostuvia malleja, kuitenkin niin että visuaalinen laatu samalla paranisi. Reaaliaikaisen tietokonegrafiikan mallit koostuvat polygoneista jotka ovat kaksiulotteisia pintoja. Näitä pintoja yhdistelemällä voidaan rakentaa niin monimutkaisia malleja kuin halutaan. Yksinkertaisin polygoni on kolmio. Kolmiot on myös erityisasemassa siksi että lähes kaikki grafiikkakiihdyttimet piirtävät ainoastaan niitä. Käytännössä monimutkaisempi pinta jaetaan aina kolmioihin ennen sen piirtämistä. 1
1.2 Mallien yksinkertaistaminen Meshien desimaatio, ja tekniikka nimeltään Edge collapse (Heckbert & Garland 1997, Puppo & Scopigno 1997, Luebke 2001) ovat tehokkaita tapoja vähentää polygonien määrää mallissa. Nämä eivät kuitenkaan toimi yksinkertaistuksissa, joissa tavoitteena on saada suuria muutoksia polygonien määrään, ja vaativat yleensä mallien yhtenäisyyttä. Puu on esimerkki epäyhtenäisestä monimutkaisesta objektista jota on vaikea yksinkertaistaa meshien desimaation avulla. Peleissä puut ovat usein esitetty kahden billboardin ristinä, joiden avulla saadaan aikaiseksi illuusio monimutkaisemmasta geometriasta. Tämä tekniikka ei kuitenkaan ole hyvä kun puuta tarkastellaan lähietäisyydeltä. Billboardien käyttäminen puiden yhteydessä on esimerkki kuvapohjaisesta yksinkertaistamismenetelmästä. Muita monimutkaisempia menetelmiä on olemassa, ja BC on juuri tällainen kuvapohjainen yksinkertaistamismenetelmä. BC:n innoittajana voitaisiin mainita esim. Superfaces (Kalvin & Taylor 1996), joka yhdistää lähes samassa tasossa olevat polygonit yhdeksi polygoniksi. Yksi tapa esittää kaukana olevat monimutkaiset mallit perustuvat niistä otettuihin valokuvanomaisiin, Impostorseihin (Maciel & Shirley 1995). Ne valitaan aina sen mukaan missä suunnassa katsoja on. 1.3 Tekstuureilla approksimointi BC:n avulla BC:n ideana on vähentää polygonien määrää huomattavasti ja tekstuureja hyväksikäyttämällä luoda illuusio monimutkaisemmasta geometriasta. Mallille pyritään löytämään ympäröiviä tasoja, niin että ne parhaiten kaappaisivat mallin geometrian, joihin sitten luodaan sopivat tekstuurit. Kun tasot on luotu, projisoidaan polygonit jotka tason pitää esittää niihin. Tämä vastaa tekstuurien ja niiden läpinäkyvyyskomponenttien generoimista. Jos normaalit vielä lasketaan, voidaan BC valaista reaaliaikaisesti käyttäen hyväkseen Bump-mapping ja Pixel shader tekniikoita. Yksinkertaiset varjot voidaan myös helposti laskea projisoimalla BC:n tasot esim. lattiatasoon. BC luodaan etukäteen eikä sitä voi tehdä reaaliajassa. Sen suurimpiin hyötyihin kuuluu se ettei mitään topologista informaatiota itse mallin lisäksi tarvita. Mallin skaalaaminen suuremmaksi tai pienemmäksi on yksinkertaista, mutta muut transformaatiot ovat sitten hankalampia. Jos BC:tä halutaan esim. venyttää hajoavat approksimoidut tekstuuripinnat, eikä malli enää näytä yhtenäiseltä. 2 MENETELMÄN KUVAUS Osiossa kerrotaan ensin lyhyesti BC:n yleiskuvaus, jonka jälkeen siirrytään tasojen valitsemisprosessin tarkempaan tarkasteluun. Lopuksi kerrotaan tekstuurien generoimisprosessista. 2
2.1 Yleiskuvaus Décoret et al. (2003) julkaisemassa artikkelissa johon tekstini perustuu, käytetään BC:n luomiseen, iteratiivista ja diskreettiä (muuten tasojen iteroiminen olisi äärettömän pitkä operaatio) menetelmää jossa on kaksi funktiota, virhe- ja hintafunktio, jotka määräävät miten ympäröivät pinnat valitaan. Ensin valitaan suurin hyväksyttävä virhe E, jonka jälkeen tavoitteena on luoda ympäröivät pinnat mahdollisimman pienellä hinnalla. Kun pinnat on löydetty generoidaan niihin sopivat tekstuurit. Hintafunktion minimoiminen johtaa mahdollisimman pieneen määrään tasoja, sekä kompakteihin tekstuureihin. Virhefunktio taas kertoo kuinka kaukana yksittäinen verteksi saa olla sen esittämästä tasosta jotta se voidaan siihen tasoon hyväksyä. Virheen pienentäminen vaikuttaa suoraan lopputuloksen visuaaliseen laatuun, tasojen määrän kustannuksella. Menetelmän idea on löytää mahdollisimman pieni määrä pintoja, kuitenkin niin että jokainen mallin polygoni saadaan projisoitua vähintään yhdelle pinnalle (2.2.1 Kelpoisuus). Tärkeää on myös projisoida polygonit pinnalle joka on korkeintaan valitun virheen päässä polygoneista (tai sen jokaisesta verteksistä). Suuret polygonit jotka projisoituvat suuremmalle pinnalle ovat tärkeämpiä kuin pienet polygonit (2.2.2 Peittävyys). Pinnat jotka eivät onnistu esittämään niitä lähellä olevia polygoneja karsitaan myös pois (2.2.3 Sakotus), muuten polygoni saattaa saada huonomman esityksen kauemmalle pinnalle projisoituessaan. Systeemistä rakennetaan tasoavaruus (2.2.4 Diskreetti tasoavaruus) jossa jokaisen diskreetin pisteen läpi kulkee diskreettejä pintoja, joilla on yllämainitut tiedot. Tasot valitaan lopuksi niin että hintafunktio minimoituu. Kun tasot on valittu generoidaan niihin tekstuurit katsomalla mallia tasojen läpi ja renderöimällä siihen tasoon kuuluvat polygonit. Tässä esitetään yksi tapa joka hoitaa tämän prosessin. Kyseessä on kaksivaiheinen prosessi, ensin lasketaan tiheys tasoavaruudessa, jonka jälkeen suoritetaan ahne optimointi, joka löytää tasot ja generoi niihin tekstuurit. 2.2 Tiheys tasoavaruudessa Jotta parhaat tasot saadaan selvitettyä lasketaan niiden ns. tiheydet tasoavaruudessa. Tiheys koostuu kolmesta tärkeästä tekijästä: kelpoisuudesta, peittävyydestä ja sakosta. Kelpoisuus kertoo onko taso validi yksinkertaistus polygonista (tässä aina kolmioita). Peittävyys ottaa huomioon polygonin koon, tai tarkemmin ilmaistuna sen tasolle projisoidun pinta-alan koon. Isoja polygoneja suositaan. Sakko taas kertoo kuinka paljon epäkelpoisia polygoneja pinnan läheisyydessä on. Tasoja joilla on paljon sakkopolygoneja pyritään välttämään. Tason P tiheys d(p) määritellään kaavalla: d(p) = C(P) P(P) (1) jossa C(P) on tason peittävyys (kuinka paljon ja kuinka isoja polygoneja se voi esittää) ja P(P) tason sakko (kuinka paljon ja kuinka isoja polygoneja on sen lähellä jotka ovat epävalideja). 3
2.2.1 Kelpoisuus Taso on validi polygonille jos polygonin kaikki verteksit ovat korkeintaan etäisyydellä E tasosta. Jokainen polygoni pitää projisoida vähintään yhdelle tasolle, ja kun kaikki verteksit käydään läpi saadaan avaruudessa alue joka rajaa jo melko tarkkaan mihin tasot tulee sijoittaa. Jokaisen verteksin ympärille muodostuu pallo jonka läpi tason pitää mennä jotta se on validi verteksille (kuva 1c.) Taso pitää kuitenkin valita niin että se on validi polygonin kaikille vertekseille. (kuva 1d.) Jokaiselle tasolle määritellään validi joukko joka kertoo kuinka monta polygonia se voi esittää. 2.2.2 Peittävyys Jokaista validia polygonia painotetaan vielä sen tasolle projisoidulla pinta-alalla. Näin taso joka on validi suurelle määrälle pieniä polygoneja ei ole tärkeämpi kuin taso joka pystyy esittämään pienemmän määrän suuria polygoneja. Tämä suosii myös polygoneja jotka ovat samansuuntaisia tason kanssa. Tämä on erittäin tärkeätä koska suuret polygonit ovat kuitenkin ratkaisevassa asemassa koko mallin visuaalisuuden kannalta. 2.2.3 Sakotus Tärkeänä parametrinä on myös sakko joka estää sellaisten tasojen valitsemisen joiden läheisyydessä on polygoneja joita taso ei voi esittää. Tämä sen takia että jos yhden valitun tason lähellä on polygoneja joita taso ei voi esittää joutuu joku toinen taso, todennäköisesti huonommasta kohtaa, esittämään ne. 2.2.4 Diskreetti tasoavaruus Tiheyttä estimoidaan diskreetissä tasoavaruudessa (kuva 1e.). Avaruus jaetaan bineihin, pieniin neliönmuotoisiin laatikoihin, ja jokaiselle binille lasketaan tiheys. Binin tiheys lasketaan summaamalla jokaisen sen sisällä olevan tason tiheysarvot. Bineihin tallennetaan ainoastaan tieto siitä kuinka monta polygonia sen sisällä olevat tasot yhteensä pystyvät esittämään. Tätä diskreettiä tasoavaruutta käytetään suuntaan antavana tasojen valinnan yhteydessä. Jos binissä on suuri määrä valideja polygoneja on sen sisällä tai sen naapureissa yleensä taso joka on validi myös suurelle määrällä näistä polygoneista. 4
Kuva 1: Tiheys tasoavaruudessa. (a) Malli josta yhden polygonin verteksit korostettu. (b) Tasot jotka kulkevat verteksien läpi. Tätä tietoa ei käytännössä käytetä mihinkään, c-kohdan kuva on oleellisempi. Jos maksimivirheeksi laitetaan 0 (mitä ei kuitenkaan käytännössä koskaan tehdä) olisi kuva c tämän näköinen. (c) Kelpoisuusalue jokaiselle verteksille (maksimivirheen rajat mukana). Tasot jotka pystyvät esittämään polygonin löytyvät näiden alueiden leikkauspisteistä. (d) Diskreetti kelpoisuusalue koko polygonille. Polygonin kaikki verteksit on oltava korkeintaan maksimivirheen päässä tasosta jotta se kelpaisi. (e) Koko talon peittävyysalue. Lähde: Décoret et al. (2003) 2.3 Ahne optimointi Kun tasoavaruuden tiheys on laskettu, voidaan aloittaa tasojen valitsemisprosessi. Valitaan aina suurimman tiheyden omaava bini ja etsitään sille taso joka pystyy esittämään polygonit jotka ovat valideja kyseiselle binille. Tämä saattaa vaatia adaptiivista korjausta joka selitetään alla. Kun taso löytyy, päivitetään tasoavaruuden tiheyttä poistamalla polygonit jotka olivat valideja juuri valitulle tasolle. Valitaan seuraavaksi taas tihein bini. Kun jokainen polygoni on poistettu ollaan valmiita siirtymään tekstuurigenerointivaiheeseen. 2.3.1 Adaptiivinen korjaus tasoavaruudessa Jokaisesta binistä on muistissa ainoastaan validien polygonien määrä, ei niiden laatu (tasolle projisoitu pinta-ala). Kun uusi bini valitaan, lasketaan sille validit polygonit ainoastaan niistä jotka ovat jäljellä (niitä poistetaan aina kun binille on lödetty taso). Uusia tasoja valitessa informaation määrä pienenee jokaisella kierroksella. Koska bineissä on ainoastaan tieto validien polygonien määrästä, ei binin jokainen taso välttämättä ole validi binin jokaiselle validille polygonille. Tämän takia joudutaan tarkastelemaan biniä ja sen naapureita tarkemmin jotta tihein taso löytyisi. Biniä jaetaan pienempiin osiin niin kauan että löytyy jaettu bini jonka keskellä oleva taso on validi jaetun binin jokaiselle validille polygonille. Koska bineissä on ainoastaan tieto validien polygonien määrästä, ei tihein taso välttämättä ole kyseisen binin sisällä. Sen takia tarkistetaan kyseinen bini ja sen 26 naapuria. Kun tihein taso löytyy päivitetään binien tiedot (eli poistetaan tasolle valitut polygonit, tai siis niiden vaikutus tasoavaruustiheyteen). 5
2.3.2 Tekstuurien laskeminen Jokaiselle tasolle tallennetaan sen valitsemisen yhteydessä tieto polygoneista jotka sen pitää esittää. Tieto ei ole täydellinen koska polygoneja poistetaan aina jokaisen tason valitsemisen yhteydessä. Ensin etsitään pienin nelikulmio jolle kaikki vuorossa olevan tason polygonit saadaan projisoitua, jonka jälkeen tekstuuri generoidaan renderöimällä nämä polygonit tasosta katsottuna ortografista projektiota käyttäen. Normaalit lasketaan myös jokaiselle tekselille (tekstuurin pikseli) jos tarvitaan mahdollisuutta uudelleenvalaistukseen. Polygonit voivat tottakai näkyä monesta tasosta katsottuna, joten looginen ratkaisu on renderöidä ne jokaiseen tasoon johon ne kuuluvat. Tämä estää pahimmat epämääräisyydet tasojen välissä, ja tekee sen että tasot sopivat paremmin yhteen. Tasojen välinen epämääräisyys, jota tällä tekniikalla kuitenkin aina tulee, nähdään kuvasta 6. 2.3.3 Tekstuurien optimointi Koska tasoihin projisoidut polygonit voivat tulla aivan eri paikoista, syntyy usein tekstuureja jotka ovat suurimmaksi osaksi tyhjiä. Tämän takia tarvitaan kohta joka rajoittaa projisoituja polygoneja kompaktiksi joukoksi. Kun taso on valittu ja tekstuuri generoitu, käydään tasoa läpi neljään eri suuntaan (45 välein). Kun löytyy väli jossa on paljon tyhjiä pikseleitä, jaetaan taso kahtia, valitaan niistä suurempi ja tehdään rekursiivisesti sama operaatio uudelle tasolle. Kun löytyy taso jossa ei enää ole paljon tyhjiä kohtia valitaan se. Huomioitavaa on että taso ei enää esitä kaikkia polygoneja, ja jonkun muun tason on esitettävä nämä poistuneet polygonit. 3 MENETELMÄN JA IMPLEMENTAATION ARVIOINTI Osiossa käydään läpi menetelmän heikkoudet ja vahvuudet. Ensin tarkastellaan itse BC:n generoimista, jonka jälkeen paneudumme sen renderöimiseen reaaliajassa. Viimeiseksi tarkastelemme vielä tekniikan tulevaisuudennäkymiä. 3.1 Esilaskenta Menetelmässä on panostettu visuaaliseen latuun eikä resurssien optimointia olla harjoitettu. Laskenta-ajat ovat melko lyhyitä (taulukko 1., suuruusluokkaa kymmeniä sekunteja), mutta eivät missään nimessä sovellu reaaliaikaiseen laskentaan. Mielenkiintoinen ominaisuus on myös se ettei alkuperäisen mallin polygonimäärä paljonkaan vaikuta billboardien määrään. Menetelmän tehokkuus on O(kn) missä n on mallin koko ja k billboardien lukumäärä. Tiheyden laskeminen on tehokkuusluokkaa O(n). Tiheyden laskemistehokkuutta voidaan parantaa käyttämällä ainoastaan satunnaista pientä joukkoa polygoneista. Tämä ei välttämättä kovinkaan paljon huononna lopputuloksen laatua koska tiheyttä käytetään ainoastaan suuntaa-antavana tasojen valinnan yhteydessä. Kuvassa 2. esitetään miten maksimivirheen valinta vaikuttaa lopputuloksen tasojen määrään. Logaritmisessa asteikossa olevasta kuvaajasta voidaan todeta että tasojen määrä on suurin piirtein 1/E, jossa E vastaa maksimivirhettä. Kuvissa 3 ja 4 verrataan alkuperäisiä malleja niiden BC:hen. 6
Ainoan implementaation (Gregory P. Roth: Billboard Clouds), jonka verkosta löysin, tekijä suhtautuu hieman kriittisemmin tähän menetelmään. Rothin implementaatio kuitenkin eroaa hieman Décoret et al. (2003) artikkelin implementaatiosta. Hänen ohjelmassaan parhaisiin tuloksiin päästiin useasta tuhannesta polygonista koostuvien puiden yhteydessä. Tasojen määräksi Roth sai 24 kappaletta, ja hän piti visuaalista laatua hyvänä. Kaarevat pinnat ovat hänen ohjelmassaan ongelmallisia. Normaalin pallon malli joka koostuu 255 polygonista näyttää epämuodostuneelta joistakin suunnista katsottuna, vaikka tasot sijoittuvatkin symmetrisesti pallon ympärille. Hänen mukaansa ongelma johtuu siitä että menetelmä on riippumaton katsojan suunnasta. Kuva 2: Hinta/Virhe käyrät linnalle, dinosaurukselle ja puulle. X akselilla virheen suuruus (prosenttia BC:tä ympäröivän laatikon koosta) ja y-akselilla tasojen lukumäärä. Vasen käyrä käyttää lineaarista asteikkoa ja oikeanpuoleinen logaritmista. Lähde: Décoret et al. (2003). Taulukko 1: Esilaskenta-ajat kuvien 3 ja 4 tapauksista. Koneena on toiminut 2 GHz Pentium IV jossa NVidian GeForce 4 Ti 4600 128MB. Lähde: Décoret et al. (2003). 7
3.2 Renderöiminen reaaliajassa Koska hyvinkin monimutkaiset mallit saadaan esitettyä pienellä määrällä BC tasoja, voidaan monimutkaisiakin malleja renderöidä reaaliajassa BC:n avulla. Tekniikka soveltuu hyvin kuitenkin ainoastaan kaukaa katsottuihin malleihin. Jos malleja tarkastellaan lähietäisyydeltä, huomataan selkeästi halkeamia tasojen välissä. Tämän voi huomata tarkastelemalla kuvaa 6. Lähietäisyydellä olevat mallit kannattaa edelleen renderöidä muita keinoja käyttäen. Taulukossa 2. esitetään renderöintinopeuksia eri kokoisille BC:ille. Ajat ovat monen renderöintikerran keskiarvoja. Display listoja käytettiin ja tekstuuri kutsuttiin aktiiviseksi ennen jokaisen instanssin piirtoa. Mallin projisoitu leveys oli noin 128 pikseliä. Décoret et al. (2003) artikkelissa todetaan vielä että vapaamuotoiset laskennat näyttävät että 60 tason BC:n renderöiminen, vastaa noin 250 polygonin yksinkertaistetun meshin renderöimistä. Näiden kahden eri asian renderöiminen vaatii kuitenkin erilaisia resursseja. BC:n renderöimistä rajoittaa eniten Fill rate ja Context switching, eikä suurempi määrä tasoja juurikaan huononna nopeutta. Kun käyttää suurta määrää malleja samaan aikaan vähenee yhden mallin renderöintiaika huomattavasti, koska Context switchejä ei tarvita niin paljon. Jos normaalikartta on laskettu voidaan BC valaista reaaliajassa. Yksinkertaisten varjojenkin tekeminen on nopeaa, projisoimalla BC:n tasot esim. lattiatasoon. Tästä on esimerkki kuvassa 5. Tiheän ja sulavasti pyörivän metsän tekeminen tällä tekniikalla on hyvä esimerkki BC:n tehokkuudesta (Gregory P. Roth: Billboard Clouds). Mitä enemmän malleja on, sitä enemmän hyödytään. Esimerkiksi missään tämänhetkisessä tietokonepelissä en ole nähnyt tarpeeksi tiheitä metsiä. Tämän tekniikan avulla voidaan ehkä saada muutos aikaiseksi. Taulukko 2: Renderöintiaikoja eri kokoisille BC:ille. Lähde: Décoret et al. (2003). Kuva 3: Ylempi rivi: Polygonimalli. Alempi rivi: BC. Lähde: Décoret et al. (2003). 8
Kuva 4: Vasen: polygonimalli. Oikea: BC. Lähde: Décoret et al. (2003). Kuva 5: Uudelleenvalaistus ja varjot. Lähde: Décoret et al. (2003). Kuva 6: Lähikuva. Vasen: polygonimalli. Oikea: BC. Lähde: Décoret et al. (2003). 9
3.3 Tulevaisuus Tulevaisuuden näkymät ovat BC:lle mielestäni kohtalaiset. Peleihin halutaan metsiä joissa on paljon puita, taistelutantereita joissa on tuhansia ajoneuvoja ja kymmeniätuhansia sotilaita. Tekniikka voisi soveltua hyvin esim. ylhäältäpäin kuvattuun peliin jossa malleja ei koskaan tarkastella läheltä. Kun kyseessä on pelaajan silmistä kuvattu peli, voidaan BC:tä käyttää esittämään kaukana olevat monimutkaiset mallit. Ongelmana kuitenkin on, ettei BC:n animointi suju kätevästi. Artikkelin kirjoittajat mainitsevat kuvakulmariippuvaiset BC:t jotka vielä entisestään tulevat yksinkertaistamaan malleja. Tämä tekniikka sopisi mainiosti juuri mainitsemaani ylhäältäpäin kuvattuun massiiviseen sotapeliin. Muita tulevaisuuden tutkimuksen aiheita ovat törmäystarkistus ja pehmeät varjot. 4 YHTEENVETO Tutustuimme BC tekniikkaan, joka pienentää monimutkaisen mallin geometriaa huomattavalla tavalla. Totesimme että tekniikka soveltuu mainiosti staattisten kolmiulotteisten mallien yksinkertaistamiseen, kunhan mallia ei tarkastella lähietäisyydeltä. Huomasimme myös ettei se välttämättä sovellu minkä tahansa mallin esittämiseen, vaan parhaiten se toimii epäyhtenäisten monimutkaisten mallien yhteydessä. Parhaiten tämä tekniikka soveltuisi mielestäni tiheän metsän tekemiseen, tai ylhäältäpäin kuvattuun sotapeliin. 10
5 LÄHDELUETTELO Teksti perustuu artikkeliin: Xavier Décoret, Frédo Durand, François X. Sillion, Julie Dorsey: Billboard Clouds for Extreme Model Simplification, ACM Transactions on Graphics 22 (3), 2003, pp. 689 696 Muita lähteitä: 1. Heckbert P, Garland M 1997: Survey of polygonal surface simplification algorithms. Tech. rep. Carnegie Mellon University. 2. Puppo E, Scopigno R 1997: Simplification, lod and multiresolution principles and applications. 3. Luebke D 2001: A developer s survey of polygonal simplification algorithms. IEEE CG&A 21, 3, 24-35. 4. Kalvin A, Taylor R 1996: Superfaces: Polygonal mesh simplification with bounded error. IEEE CG&A 16, 3, 64-77 5. Maciel P, Shirley P 1995: Visual navigation of large environments using textured clusters. In ACM Symp. Interactive 3D graphics. 6. Gregory P. Roth: Billboard Clouds. Saatavissa: http://www.cs.utah.edu/~roth/opengl5.html 11