Syvyyskuvan visualisoinnista: miten päästään pistepilveen?

SMErec-hankkeessa toteutettiin alustava visualisointiratkaisu virtuaalihologrammitallenteille, jolla on onnistuttu välittämään esiintyjän kehonkieli katsojalle. Tässä artikkelissa kuvataan Base Camp –hankkeen etäteknologiakokeilun vaatimaa jatkokehitystä virtuaalihologrammien visualisointiratkaisuun, sekä avataan pistepilvien muodostamiseen liittyviä tekniikoita.

Rajoite on myönteinen voima suunnittelulle

Microsoft Hololens voidaan määritellä sekoitetun todellisuuden älylaseiksi. Microsoftin sivut määrittelevät sen itsenäiseksi hologrammitietokoneeksi, mutta ominaisuudet ovat kutakuinkin älylaseja vastaavia. Basecamp-hankkeen käytössä on ensimmäisen sukupolven Hololens-laite. Koska kyseessä on mobiililaite, myös sen laskentateho- ja -kapasiteetti on rajallinen. Esimerkiksi muistitila yhtä sovellusta varten on rajattu noin 900 megatavuun, ja ohjelmien käsittelykapasiteetti Unity-projektissa on rajoitetumpi. Aiemmassa ratkaisussa pistepilviprojektiota varten proseduraalisesti luotu 3d-malli sijaitsee keskusmuistissa, sen data on siirrettävä näytönohjaimelle jokaisella ruudunpäivityskerralla. Tämä muodostuu Hololensen tapauksessa pullonkaulaksi, ja aiheuttaa ruudunpäivitysnopeuden alenemisen. Ratkaisuna tähän on siirtää valmis data kokonaan näytönohjaimen muistiin, jolloin aikaa jää näytönohjaimelle laskutoimitusten suorittamiseen huomattavasti enemmän.

Korkeuserojen esittäminen

Korkeuskartta on harmaasävykuva, jossa kuvapisteen arvo 0-255 määrittää suhteellisen etäisyyden tasosta. Tätä tietoa hyödynnetään siirrettäessä 3D-mallin kuvapistettä johonkin suuntaan, kuten on nähtävissä kuvasta 1. Siinä neliön pintoja on nostettu tasosta ylöspäin vasemmanpuolisen harmaasävykuvan arvojen perusteella. Vasemmanpuoleisessa neliössä olevat valkoiset kuvapisteet esitetään arvolla 255, ja mustat puolestaan arvolla 0. Mitä suurempi harmaasävyarvo, sitä korkeammalle piste oikeanpuoleisessa neliössä nousee. Tätä ideaa noudetaan myös hologrammin pistepilven visualisoinnissa.

Korkeuskartan toiminta havainnollistettuna.
Korkeuskartan toiminta havainnollistettuna.

Pistepilven 3D-malli

Näytönohjaimen muistiin siirrettävää staattista dataa varten luodaan 3D-malli, joka koostuu erillisistä neliöistä. Jokainen näistä neliöistä merkitään vastaamaan tiettyä aluetta korkeuskartassa teksturoinnin avulla. Teksturoinnin avulla voidaan liittää 2D-kuvatietoa minkä tahansa 3D-mallin pintaan määrittelemällä 3D-mallissa oleville pisteille kuvapistekoordinaatit, ja näytteistämällä halutut väriarvot kuvasta lineaarisesti interpoloitujen kuvapistekoordinaattien avulla.

Esitystarkkuuden näkökulmasta projektion neliöiden lukumäärä kannattaa olla maksimissaan korkeuskartan kuvapisteiden lukumäärä, mutta pienempi lukumäärä voi olla perusteltua käsittelyajan parantamiseksi. Tätä 3D-mallia voidaan kutsua esimerkiksi projektiopistemalliksi, ja se on nähtävissä kuvasta 2. Projektiopistemalleja voi luoda useampia eri tarkkuuksilla, ja lopullista visualisointia on mahdollista optimoida tasapainottamalla projektiopistemallin tarkkuuden sekä käsittelyajan suhdetta.

424x240 projektiopistemallista Blender-3D-mallinnusohjelmasta. Mallissa on 424 neliötä vaakasuunnassa, ja 240 neliötä pystysuunnassa. Oranssilla korostetut neliöt on siirretty y-akselilla irti muista.
424×240 projektiopistemallista Blender-3D-mallinnusohjelmasta. Mallissa on 424 neliötä vaakasuunnassa, ja 240 neliötä pystysuunnassa. Oranssilla korostetut neliöt on siirretty y-akselilla irti muista.

Yhteenveto

Luomalla staattisen 3D-mallin ja kytkemällä siihen korkeuskartan syvyystiedon, on mahdollista siirtää pisteitä soveltuvan projektion avulla. Koska 3D-mallidata sijaitsee näytönohjaimen muistissa, sen tehokas käsittely mahdollistuu varjostinohjelmilla. Seuraavassa artikkelissa keskityn hologrammien tarvitseman pistepilviprojektion toteutukseen.


Kirjoittaja:
Anssi Gröhn, tietojenkäsittelyn lehtori, Base Camp -hanke, Karelia-ammattikorkeakoulu