.. Kohteiden konstruktiivinen avaruusgeometrinen esitys Avaruusgeometrinen esitys on käyttäjäriippuvainen ja vaati erikoismenetelmiä tai lopuksi konversion monikulmiomalliksi. Se on korkean tason esitys ja esittää sekä muodon että rakenteen. Esitetään alkeismuotojen eli primitiivien yhdistelmä. Kuvan.8. esimerkit havainnollistavat Boolen operaatioiden käyttöä. Miellettäessä kohteet pistejoukkoina unioni operaatio (a) yhdistää kaikki kahden kohteen pisteet. Esimerkki (b) kuvaa vähentämistä, jossa toisen kohteen pisteet vähennetään ensimmäisestä. Leikkaus muodostetaan esimerkissä (c). Esitysmuoto mahdollistaa vuorovaikutteisen mallintamisen. Kyseeseen tulee varsinkin teollisuustuotannon esineet, joita suunnitellaan CAD:lla. Primitiivit ovat esim. pallon, kartion, sylinterin tai suorakulmionmuotoisia kappaleita, joita yhdistellään Boolen joukko operaatiolla ja lineaarisilla muunnoksilla kolmiulotteisesti. Kohde tallennetaan attribuuttipuuna. Lehdet sisältävät yksinkertaisia primitiivejä ja solmut operaattoreita tai lineaarisia muunnoksia. Kohde muodostetaan lisäämällä ja vähentämällä (reikien tekemiseksi).. luku 87 Kuva.8. (a) Unioni, (b) erotus ja (c) leikkaus.. luku 88 Kuvassa.9. esitetään puu, joka sisältää kahden suorakulmiokohteen yhdistämisen unionilla ja tästä erotuksen suorittamisen poraamalla reikä. Kuva.10. havainnollistaa edelleen Boolen operaatioiden kätevyyttä. Esimerkissä (a) kaksi erikseen luotua osaa yhdistetään unionilla ja tätä seuraavalla erotuksella. Esimerkissä (b) monimutkainen kappale rakennetaan sylintereistä unioneilla, mistä erotuksella saadaan lopullinen muoto. Kuva.9. Kolmesta primitiivistä rakennettu kohde puutietorakenteineen.. luku 89 Kuva.10. Boolen operaatioiden käyttöä: (a) unioni ja erotus sekä (b) kaksi unionia ja erotus.. luku 90
.3. Tilan alijakomenetelmät Vaikka avaruusgeometrinen esitys on tehokas, siinä on heikkouksiakin. Käytännöllinen ongelma on tarvittava mallin muodostamisen ja kuvan luomisen laskenta aika. Operaatioiden vaikutus on sitä paitsi kuvassa globaali, ja lokaaleja operaatioita, yksityiskohtien muokkausta, on vaikea tehdä. Menetelmä on volumetrinen. Kohteen käyttämä avaruuden osa on pikemmin tilavuutta kuin pintaa. Tilan alijakomenetelmä jakaa koko kohdeavaruuden hierarkkisesti kuutionmuotoisiin osiin, vokseleihin. Jokaisen vokselin kohdalla merkitään, kuuluko se kohteeseen vai ei. Tänä vaatii runsaasti muistitilaa, mutta on monesti käyttökelpoinen tapa, koska data on alkujaan tässä muodossa tai on helposti siihen muutettavissa. Esim. lääketieteellinen data on usein ylläkuvattua. Myös algoritmien ominaisuudet voivat suosia vokselidatan käyttöä. Esim. säteenjäljityksellä on etuja vokselidatalla, kun taas tavanomaisilla esitysmuodoilla se on paljon vaativampi tehtävä. Vokselidatalle tietorakenteena käytetään tyypillisesti kahdeksanpuuta (octree) kuvan.11. tapaan, jossa (a) kuutio on jaettu rekursiivisesti osiin, (b) otetaan kuutioon asetettu kohde ja (c) merkitään, mitkä kuution osista ovat kohteessa mukana. Myös tietorakenne on annettu.. luku 91. luku 9 On kaksi tapaa käyttää kahdeksanpuuta näkymän esittämiseksi. Voidaan käyttää kahdeksanpuuta sellaisenaan kohteen täydellistä esittämistä varten näkymässä. Kohteeseen käytettyjen solujen tai osien joukko muodostaa esityksen. Monimutkaisen näkymän tilanteessa tarkka kuva voi vaatia huikean määrän soluja, mikä johtaa suureen muistitilan tarpeeseen. Kuva.11. Kohteen esittäminen alijakomenetelmällä kahdeksanpuun ollessa tietorakenteena. Toinen, yleinen menettely on hyödyntää tavanomaisia tietorakenteita kohteiden esittämisessä ja käyttää kahdeksanpuuta vain kohteiden jaon kuvaamiseen näkymässä. Tällöin kahdeksanpuun lehti, joka sisältäisi jonkin kohteen tai tämän osan, sisältää viittauksen (osoittimen) kyseiseen kohteeseen.. luku 93. luku 94
Kuva.1. havainnollistaa tätä kaksiulotteisessa tilanteessa. Alijako on lopetettu heti, kun alue sisältää enintään vain yhtä kohdetta. Kohteen muoto esitetään omalla tietorakenteellaan. Tason ollessa kyseessä kohteet olisivat monikulmioita tai lappuja. Yleisessä mielessä alue voisi sisältää useiden kohteiden osia, jolloin käytettäisiin viittauslistaa niihin. Täten kahdeksanpuuta sovelletaan muista poikkeavasti hybridinä toisten tietorakenteiden kanssa.. luku 95 Kuva.1. Kaksiulotteisen näkymän nelipuuesitys (quadtree), jossa jakoa on jatkettu, kunnes alue sisältää enintään yhtä kohdetta. Puun lehdet viittaavat kohteen omaan tietorakenteeseen.. luku 96 Kahdeksanpuut ja monikulmiot Kahdeksanpuita ei siis tavallisesti käytetä tietorakenteena vokselidatalle, vaan järjestämään näkymää, jossa on useita kohteita. Kohteita ei esitetä vokseleilla, vaan monikulmioita sisältävinä suorakulmioisina tiloina. Suorakulmiot esitetään vokseleina. Kahdeksanpuun lehteen voidaan sijoittaa kohteiden ryhmiä, yksittäisiä kohteita, näiden osia tai jopa yksittäisiä monikulmioita. Tällainen menettely voi suuresti nopeuttaa laskentaa, varsinkin säteenjäljittämisessä. Kuvassa.13. on esimerkki, jossa on vähän kohteita, mutta näissä suuri määrä monikulmioita. Tämä johtaa syviin (epäedullisiin) puihin aliajon jakaessa lähinnä tyhjää tilaa. Kuva.13. Vähän kohteita, joilla sitä vastoin monikulmioiden lukumäärä on suuri. Kohteet ovat pieniä verrattuna huoneen tilavuuteen.. luku 97. luku 98
BSP puut Vaihtoehtoinen esitysmuoto on BSP puu (binary space partitioning). Sen jokainen sisäsolmu vastaa yhtä jaettua tasoaluetta, joka jakaa avaruuden tilan kahtia. Kaksiulotteinen analoginen kuva on kuvassa.14. BSP puu on kätevä tilanjakamistehtävien erikoistapauksissa, kuten piilopintojen poistossa. Jakotasojen hyödynnettävät ominaisuudet ovat: v Mikään tason toisella puolella oleva kohde ei voi leikata toisen puolen kohdetta. v Katsojaan nähden samalla tason puolella olevat kohteet ovat häntä lähempänä kuin toisen puoleen kohteet. Kahdeksanpuuhun nähden BSP puu ei ole parempi; kyse on samasta informaatiosta koodattuna eri tavalla. Kuva.14. Yhden jaon nelipuu ja BSP puu kaksiulotteisessa alueessa. Vokselikohteiden luominen Lääketieteellinen kuvantaminen on eräs keskeisistä sovellusaloista kolmiulotteisten kuvien yhteydessä. Kyseessä voi olla esim. röntgenkuva kehon osasta, jolloin pikseli vastaa tason pistettä ja tasoja asetetaan päällekkäin pinoksi. Yksinkertainen keino muuttaa tasojen pino kolmiulotteiseksi kuvaksi on ottaa kahdesta päällekkäisestä tasosta vastinpisteiden parit vokseleiksi.. luku 99. luku 100.4. Kohteiden esittäminen implisiittisillä funktioilla Kokonaisen kohteen esittäminen yhdellä implisiittisellä kaavalla rajoittuu määrättyihin tapauksiin, esim. palloihin. Huolimatta rajoittuneisuudestaan näillä on merkitystä tietokonegrafiikassa. Implisiittiset funktiot ovat primitiivien vaikutuksesta muodostuneita pintoja, joilla on vaikutusta lokaalisesti. Esimerkkinä on kuvan.15. samanlaiset kynttilät, jotka muodostavat valolähteen. Tätä kuvataan liekkejä ympäröivillä ääriviivoilla. Tällainen pinta on esitettävissä sopivilla funktioilla (skalaariarvoilla). Kuva.15. Kahden kynttilän muodostama valolähde, jota kuvataan yhteiselläkin Käytetään generoijaa eli primitiiviä, jolle voidaan määritellä etäisyysfunktio d(p) sen lähellä olevia pisteitä P varten. Käytetään potentiaalifunktiota f(d(p)), joka antaa skalaariarvon pisteelle P etäisyydellä d(p) generoijasta. Vaikutusaluetta rajoitetaan tyypillisesti pallolla, varsinkin pistegeneroijalle. Esimerkki potentiaalifunktiosta on: d f ( P) = (1 ) R d R Tässä d on pisteen etäisyys generoijasta ja R vaikutussäde. Skalaariarvoista saadaan eri generoijien potentiaalifunktioiden yhteisvaikutus. Kuvan.16 vasen sarake matkii Salvador Dalin maalausta. Oikealla kunkin pallon säde määrää vastaavien generoijien vaikutuksen. Tummat pallot ovat negatiivisia generoijia, joilla muodostetaan konkaavisuuksia malliin. Näin on mahdollista luoda orgaanisia muotoja, eläviä olentoja kuvaan. pinnalla.. luku 101. luku 10
Kuva.16. Implisiittisellä funktiolla tuotettua mallintamista.. luku 103