Virtuaalitodellisuus ja DIVE

Ohjelmistotekniikan seminaarityö

Jyväskylässä 22.10.1996

Samuli Pekkola pejysa@cc.jyu.fi


Sisällysluettelo:

Johdanto

Graafiset selaimet

Virtuaalitodellisuus

Dive

Yhteenveto

Lyhenteitä

Lähteet

Liitteet


1. Johdanto

Virtuaalitodellisuudesta ja kolmiulotteisesta grafiikasta puhutaan nykypäivinä paljon. Tavalliset käyttäjät vaativat aikaisempaa parempaa grafiikkaa omille ruuduilleen aina vain nopeammin ja nopeammin. Suunnittelu- ja mallinnustoimistot tarvitsevat uusia mallinnusohjelmia toimintojen siirtyessä ihmisten mukana pois toimistoista. Tietojen on liikuttava nopeasti toisistaan kaukanankin olevien käyttäjien välillä.

Työntekijöiden siirtyessä etätyöskentelyyn ihmisten välisen kommunikoinnin määrä ja laatu uhkaavat vähetä ja heiketä. Kasvoista kasvoihin tapahtuvaa kommunikointia ei tapahdu enää yhtä suuressa määrin kuin aikaisemmin, eikä puhelin voi tarjota riittävän monimuotoisia yhteydenmuodostusmahdollisuuksia. Tarvitaan korvaavia välineitä kuten kuvapuhelimet, videoneuvottelut tai virtuaalitodellisuus.

Kuvapuhelimien ja videoneuvotteluvälineiden tarjoamat palvelut ovat rajalliset. Kuvapuhelien siirtokapasiteetti on suhteellisen pieni ja monen käyttäjän palaverit ovat teknisesti vaikeita järjestää. Videoneuvotteluissa em. ongelmat on ratkaistu, mutta uusia on ilmaantunut kuten tilojen tarve ja tekniikan nopean kehittymisen aiheuttama välineiden vanheneminen. Virtuaalitodellisuudessa käyttäjät luovat virtuaalihahmon itsestään ja liittyvät tietokoneella toteutettuun yhteisöön, jossa kommunikointi muiden hahmojen välillä on mahdollista.

Virtuaalitodellisuustyökalujen kehittyminen on vielä toistaiseksi alkutekijöissään, mutta sitä alaa tutkitaan erittäin paljon. Tulevaisuudessa kuka tahansa voi ottaa virtuaalihahmon ja liittyä virtuaalitodellisuuteen omalta tietokoneeltaan. Mahdollisina mallinnusstandardeina nykyisen HTML:n (HyperText Markup Language) sijaan voi olla esimerkiksi VRML (Virtual Reality Modelling Language) tai joku vielä ennalta tuntematon kieli. Selainten kehitys jatkuu ennallaan ja nykyiset selaimet saavat uusia kilpailijoita, joskin ne kehittyvät itsekin. Yksi mahdollinen kilpailija on tässä tekstissä lähemmin tarkasteltava Dive.

2. Graafiset selaimet

Nykyiset selaimet kuten Netscape tai Internet Explorer ovat pääasiassa kaksiulotteisia. Tulevaisuudessa kolmiulotteisuutta vaaditaan yhä enemmän, joten WWW- selaimet muuttuvat pikkuhiljaa kolmiulotteisiksi VRML:n tai vastaavan yleismaailmallisen mallinnuskielen yleistyessä.

Grafiikan yleistyminen tuo tullessaan uusia mahdollisuuksia kuvata maailmaa. Kolmiulotteinen mallinnus (CAD yms.) on jo arkipäivää, samoin kuin esim. lentäjien koulutuksessa käytettävät simulaattoritkin. Yhteistä näille on rajoitettu yhtäaikaisten käyttäjien lukumäärä ja tiedon pysyminen paikallisessa koneessa. Ainoastaan uusimmissa peleissä (Doom yms.) voidaan ajatella vastustajan olevan kauempanakin. Niissä on kuitenkin omat puutteensa, sillä ainoastaan rajoitettu käyttäjäkunta voi olla yhteydessä toisiinsa yhtäaikaa.

Kolmiulotteisuus tuo tullessaan erilaisia mahdollisia multimediaratkaisuja jo edellä mainittujen lisäksi. Erilaiset koulutusmahdollisuudet lisääntyvät, koska jokainen opiskelija voi käännellä kappaletta haluamallaan tavalla ja tutkia sitä eri puolilta. Enää ei tarvitse tyytyä siihen, mitä ohjelman tekijä on ajatellut. Voidaan päästä jopa siihen, että koulutus tapahtuu verkossa. Oppilaat ottavat yhteyden omalta koneeltaan palvelimeen, johon myös opettaja kirjoittautuu opettaen ja vastaillen oppilaiden esittämiin kysymyksiin. Tällöin voidaan puhua yksinkertaisesta virtuaalitodellisuudesta.

3. Virtuaalitodellisuus

Virtuaalitodellisuuden (VR, Virtual Reality) voidaan ajatella muodostuvan maailmasta, jossa objektit ja muut käyttäjät stimuloivat vierailijan aisteja. Ihmisen tärkeimpien aistien eli näön ja kuulon simulointi tietokoneella on helppoa. Tunto-, haju- ja makuaistien ärsyttäminen on jo huomattavasti vaikeampaa, eikä niiden simulointia ole edes tutkittu riittävästi sovelluksien aikaansaamiseksi.

Monet ihmiset käsittävät virtuaalitodellisuuden tutkimisen datakypärien, datahanskojen tai erikoispukujen kehittämisenä. Samalla he unohtavat erään itsestäänselvän heidän työpöydällään olevan kehitysympäristön, nimittäin tietokoneen. Nykyiset datakypärät ja -hansikkaat ovat vielä kömpelöitä ja hankalia käyttää ja niiden on havaittu aiheuttavat pitkään käytettyinä terveydellisiä haittoja kuten esimerkiksi huimausta ja päänsärkyä. Käyttäjän ruumista lähellä olevilla laitteilla tai puvuilla on kuitenkin eräitä etuja tietokoneen näyttöön ja kaiuttimiin verrattuna. Nimittäin aisteja voidaan stimuloida paljon tarkemmin ja herkemmin ärsykkein. Voidaan myös ärsyttää aisteja, joita ei muuten pystyttäisi, kuten esimerkiksi tuntoaistia. Tulevaisuudessa teknologian kehittyessä kypärät tulevat pienentymään ja keventymään, joten ehkäpä sitten ne saavuttavat oman käyttäjäkuntansa aivan kuten erikoispuvutkin. Niillä tulee olemaan omat erikoiset käyttösovelluksensa. Suuri yleisö ei ehkä koskaan pääse kokeilemaan, miltä virtuaalitodellisuus voi näyttää ja tuntua. Tietenkin peli- ja viihdeteollisuus ovat toista mieltä.

Virtuaalisen maailman tekeminen tietokoneen ruudulle on jo huomattavasti helpompaa. Mahdollisuudet toteuttaa erilaisia ympäristöjä ovat samat kuin puvuillakin, ainoastaan aistiärsykkeet eivät ole niin voimakkaita ulkoisten häiriötekijöiden vaimentaessa "aistinautintoa". Lentokonesimulaattorit ja eräät pelit voidaan ymmärtää jonkinlaisina pienimuotoisina virtuaalimaailmoina, mutta niissä yhtäaikaisten käyttäjien lukumäärä on rajoittunut muutamaan. Haluttaessa näyttää tehtyä esitystä useammalle käyttäjälle yhtäaikaa tai pitää suurempaa kokousta joudutaan pulaan. Nykyiset pc-tietokoneet eivät pysty laskemaan vaadittavaa grafiikkaa tarpeeksi nopeasti sulavan esityksen aikaansaamiseksi, eikä nykyisen verkon siirtokykykään ole riittävä siirtämään tietoa tarpeeksi nopeasti paikasta toiseen. Käytettäessä yhtä keskuspalvelinta kuormitetaan palvelimesta uloslähtevää linjaa kohtuuttomasti, joten keskuskoneajattelusta joudutaan siirtymään pois.

Nyky-yhteiskunnassa taloudellinen ajattelu valtaa aina vain enemmän ja enemmän tilaa. Matkustaminen kokouksiin vie kallista työaikaa, eikä näin ollen ole kannattavaa. Aikaa työhön saadaan lisää järjestämällä kokoukset puhelimen ja videon välityksellä. Virtuaalitodellisuudessa tapahtuvat kokoukset ovat yksi mahdollisuus. Ihmiset ilmestyvät haluttuun virtuaalipaikkaan oikeaan aikaan, eikä heidän edes ole tarvinnut poistua omasta työhuoneestaan. Näin ollen kaikki tarvittava materiaali on jatkuvasti saatavilla. Sähköisessä muodossa oleva tieto voidaan välittää kaikille osallistujille, tai paperilla olevan tekstin henkilö voi lukea, kirjoittaa tai kuvata videolla osia siitä muille osallistujille. Žäni välittyy kaikille osallistujille ja virtuaalihahmo voi viestiä erilaisia tunteita (iloa, surua, kärsimättömyyttä, jne.) järjestelmän tekijän toteuttamishalujen mukaan.

Tietokantojen visualisointi ja tutkiminen saa uusia ulottuvuuksia. Virtuaali-ihmiset kiertelevät pylväsdiagrammien joukossa ja keskustelevat keskenään tietokannan sisällöstä. Samasta alasta kiinnostuneet toisilleen tuntemattomat ihmiset ympäri maailman saadaan yhteen. Uutta tietokantaa voidaan kerätä siitä, mitä tietoja kukin on tutkinut. Uusi tietokannan tarkastelija voi vaihtaa mielipiteitään virtuaalimaailmasta jo poistuneiden henkilöiden kesken. Esimerkkinä tälläisista ohjelmista voidaan mainita InternetFoyer ja Tecate.

Tällä hetkellä erilaisia virtuaaliympäristöjä kehitetään ja tutkitaan ympärimaailmaa. Esimerkiksi projekteista voisi mainita HPY:n ja Helsingin seudun korkeakoulujen Virtual Helsinki-projekti Helsingin mallintamiseksi ja Dive-, Massive- ja Onlive-tapaamisympäristöt. Jopa VRML-kieli tarjoaa yksinkertaisen virtuaalitodellisuuden kakkosversionsa laajennuksien ansiosta.

Virtuaalitodellisuus näyttää tarjoavan paljon uusia mielenkiintoisia ulottuvuuksia, mutta mitalilla on kaksi puolta. Väheneekö ihmisten välinen luonnollinen kasvoista kasvoihin tapahtuva kommunikointi, alkavatko ihmiset elämään pelkästään virtuaalimaailmassa ja unohtuuko oikea, perinteinen todellisuus?

Tutkijat ympäri maailmaa miettivät tuleeko virtuaalitodellisuuden käyttäytyä, kuten oikea maailma ja olla sidoksissa todellisuuteen. Mikä on esimerkiksi seinien funktio? Ovat ne kiinteitä, läpäisemättömiä kalvoja, vai ovatko ne vain näköesteitä? Tarvitaanko seiniä ylipäänsä ollenkaan? Tämä pieni esimerkki hieman valottaa ongelmia, joita psykologit ja muut tutkijat yrittävät ratkaista.

4. DIVE

Dive (lyhenne sanoista Distributed Interactive Virtual Environment) on hajautettu vuorovaikutteinen virtuaalinen ympäristö, johon eri käyttäjät ympäri maailman voivat liittyä. Dive on saatavisssa monille eri Unix- käyttöjärjestelmille, mm. Silicon Graphicsille, Linuxille, Sunille, Digitalille ja HP:lle, mutta PC/Windows-ympäristöihin Diveä ei ainakaan vielä ole saatavissa. Seuraavassa tarkastellaan lähemmin Diveä sekä sen rakennetta ja toimintaa.

4.1 Yleistä

Dive on ruotsalaisen Stockholm Institute of Computer Sciencen (SICS) kehittämä prototyyppi erilaisten virtuaaliympäristöjen (VE, Virtual Environment), käyttöliittymien ja sovellusohjelmien mallintamiseen jaetuissa kolmiulotteisissa ympäristöissä. Toisin sanoen Dive on tutkimukseen käytettävä prototyyppi virtuaalitodellisuuden luomiseen tietokoneen ruudulle. Se on ennenkaikkea erikoistunut monen yhtäaikaisen käyttäjän väliseen kommunikointiin ja tietojen välittämiseen internetin kautta.

Käyttäjän liittyessä virtuaalitodellisuuteen hänen on otettava jonkinlainen hahmo tai ulkomuoto, jonka muut käyttäjät voivat nähdä. Divessä on muutamia mallihahmoja, joista käyttäjä valitsee mieleisensä, mutta ulkomuodon voi myös laatia aivan itse. Koska liikutaan virtuaalitodellisuudessa, ei hahmolla tarvitse olla minkäänlaista kiinnekohtaa todellisuuteen. Käyttäjä voi siis olla ihminen aivan yhtä hyvin kuin pensas tai puhelinpylväskin. Samoin hahmon ei tarvitse olla sama kokoajan, vaan käyttäjä voi vaihtaa ulkonäkönsä toiseksi ns. lennossa. Muiden vierailijoiden suhtautuminen kyseisiin vaihdoksiin on sitten asia erikseen.

Jokainen Dive-maailmassa vieraileva käyttäjä käynnistää itseasiassa kaksi eri ohjelmaa, jotka huolehtivat visualisoinnista ja yhteyksistä verkon yli. Visualisoija (esimerkiksi Vishnu) piirtää kuvan virtuaalitodellisuudesta käyttäjän kuvaruudulle ja huolehtii äänien tuottamisesta. Monen eri käyttäjän yhtäaikaisen kommunikoinnin mahdollistaa oma verkkoa käsittelevä ohjelma (Diveserver). Itse maailma on sijoitettu aivan tavalliseen URL-osotteeseen, josta se ladataan käyttäjän liittyessä kyseiseen maailmaan.

Liikenne keskupalvelimelta asiakaskoneille kuormittaa palvelimelta ulospäin suuntautuvaa tiedonsiirtoverkkoa. Tämä on yksi syy nykyisten monenkäyttäjän sovellusten rajoitetulle käyttäjämäärälle. Diveä tehdessä ongelmaa on lähdetty ratkaisemaan toiselta puolelta. Tieto virtuaaliympäristön eri objekteista ja kappaleista on hajautettu verkkoon, joten Divessä ei ole omaa keskuspalvelinta. Näin ollen virtuaalimaailmaan liittyneet vierailijat viestivät keskenään ympäristössä tapahtuneista muutoksista. Virtuaaliympäristö ladataan koneen muistiin URL-osoitteesta ainoastaan kerran, sen jälkeen Diveserver päivittää näitä tietoja aivan itsestään.


Kuva 1. Virtuaalinen verkko.

Kuten kuvasta 1 näkyy, jokaisessa vierailijassa on itseasiassa kaksi osaa eli sekä Vishnu-visualisoija että Diveserver-palvelin. Palvelimia ei kuitenkaan tarvita useampia kuin yksi liikuttaessa vain paikallisverkossa kuten yliopiston sisällä. Ulkopuolella olevat osallistujat joutuvat kuitenkin käyttämään omaa palvelintaan. Mikäli sitä ei ole erikseen käynnistetty, vierailija voi liikkua maailmasta toiseen, mutta hän ei näe muita mahdollisesti samassa virtuaaliympäristössä olevia, eikä voi viestiä heidän kanssaan. Palvelin toimii multicast-periaatteella, jolloin kaikki viesti välitetään kaikille muille maailmassa oleville vierailijoille yhtäaikaa. Tästä lisää luvussa 4.2.

Kuten aikaisemmin todettiin, muutokset eri virtuaaliympäristöjen välillä välittyvät automaattisesti. Kappale pysyy siinä, mihin joku on sen jättänyt niin kauan, kuin yksikin vierailija on kyseisessä virtuaalimaailmassa. Viimeisenkin vierailijan jättäessä maailman tehdyt muutokset häviävät ja maailma palautuu alkutilaan.

Käyttäjä voi olla vuorovaikutuksessa erilaisten esineiden, olioiden ja muiden käyttäjien kanssa. Esineisiin voi koskea, jolloin ne tekevät jotain (esimerkiksi hyppäävät ilmaan) tai niitä voi siirtää tai pyörittää. Muiden hahmojen kanssa voi puhua ja välittää tietoja. Esineet voivat myös välittää informaatiota käyttäjille. Esimerkiksi kello voi käydä ja vieraskirja päivittyä automaattisesti. Virtuaaliympäristössä voi siis olla sekä automaattisia prosesseja eli olioita, jotka viestivät sekä keskenään että käyttäjille, että staattisia objekteja. Dive siis mahdollistaa kolmiulotteisen virtuaalitodellisuuden.

4.2 Rakenne

Dive on erittäin joustava rakenteeltaan moduleista koostuvan rakenteensa ansiosta. Pääasiassa Dive on ohjelmoitu C-kielellä, mutta dynaaminen vuorovaikutus ja käyttöliittymä on tehty Tcl/Tk-kielellä. Lähdekoodi käsittää siis sekä C- (.c ja .h) että tcl-tiedostoja (.tcl).

Kuusi perusmodulia ovat runko (core), SID, väylät (threads), grafiikka, äänet ja muut toiminnot. Eri sovelluksia voidaan rakentaa yhdistelemällä tarvittavia yksiköitä yhdeksi osioksi.

Runko (core) käsittää kolme toiminnallisesti erilaista osiota. Objektit-osio esittelee erilaiset objektit ja niiden toiminnallisuudet, kuten alustukset, kosketustoiminnan, jne. Hajauttamisosio (distribution) käsittää eri esiintymien (käyttäjät ja objektit) verkko-toiminnot ja nimipalvelurajapinnan. Tukiosio käsittää useimmat perustietorakenteet ja toiminnot. Se myös hoitaa osoittimet esiintymiin ja ajastuksia, fontit, yleiset grafiikkakirjastot, materiaalit, pinot, listat ja taulukot sekä kaikenlaisia muita yleisesti tarvittuja toimintoja.

SID (SICS Distribution package) on SICS:n kehittämä kommunikointimoduli, jonka tärkein tehtävä on välittää viestejä eri käyttäjien välillä. Yhtäaikaisia käyttäjiä voi olla satoja tai jopa tuhansia. Viestin välitys perustuu multicastiin, jossa yksi ja sama viesti lähtee useampaan eri osoitteeseen samaan aikaan. Tällöin saavutetaan säästöä lähetettävien pakettien lukumäärässä ja kuormitetaan vähemmän verkkoa verrattuna point-to-point -yhteyksiin. Pakettien lähetys perustuu internetistä tuttuihin protokolliin UDP ja IP, eikä siinä näin ollen ole lainkaan virheenkorjausta. SID:in perusajatus on aggressiivinen (eli pakettien lähettämistiheys on suuri) IP-multicast, oliopohjainen kommunikointi ja sovelluskerroksella tapahtuva pakettien kehystäminen.

Väylät (threads) pitävät yhteyttä käyttöjärjestelmään päin. Pääasiassa tämä moduli vastaa koneenläheisestä toiminnasta ja ajastimista.

Grafiikkamoduli vastaa näytön piirtämisestä ja käyttöliittymästä. Se siis huolehtii yleensäkin kaikesta, minkä käyttäjä näkee ruudullaan. Virtuaaliympäristöstä, jossa käyttäjä on vieraana, piirretään kaikki näkyvissä ja piilossa tai muiden takana olevat objektit. Näin ollen Diven grafiikan piirto on suhteellisen hidasta ja se asettaa kovat vaatimukset koneen grafiikkaominaisuuksille. Silicon Graphics onkin yleisimmin käytetty ympäristö juuri edellä mainittujen ominaisuuksiensa ansiosta. Grafiikkakirjastoista Dive tukee GL:ää, OpenGL:ää ja XGL:ää, kuten myös tcl/tk:ta.

Dive tukee kolmiulotteisia ääniä, jotka sen äänimoduli välittää. 3D-äänillä tarkoitetaan avaruuden (tai tässä tapauksessa virtuaalitodellisuudessa) tietystä pisteestä lähtöisin olevia ääniä, jotka sieltä heijastuvat käyttäjän kuuluviin. Siis kauempana olevat äänilähteet ovat vaimeampia kuin lähellä olevat. Diven äänimoduli tukee sekä objektien omia ääniä että käyttäjien välistä kommunikointia.

Kuudentena osana on moduli, joka käsittää kaikki muille moduleille selvästi kuulumattomat ominaisuudet, kuten esimerkiksi hiiren ja näppäimistön hallinnan, Tcl/tk-rajapinnat, tiedoston talletukset, tilastojen keräämisen sekä ulkoiset laiteajurit kuten datahanskat ja kypärät. Dive siis tukee datahanskoja ja kypäriäkin, joskin on huomattavasti yleisempää käyttää Diveä pelkästään näytöltä katsottuna hanskojen ja kypärien puuttumisen takia.

Kuten luvun alussa todettiin, sovelluksia voidaan rakentaa yhdistelemällä yllä mainittuja moduleita. Jo ns. perusmoduleilla (runko, SID, väylät) voidaan muodostaa yksinkertainen sovellus, johon voidaan liittää omaa koodia laajentamaan sen toimintaa. Perusmoduleilla voidaan rakentaa esimerkiksi kello. Vishnu-visualisoija taas koostuu kaikista kuudesta modulista. Näin ollen se tukee 3D-grafiikkaa ja -ääniä, tcl- rajapintoja ja hahmon tietojen välitystä muille käyttäjille. Kuitenkaan Vishnun ei tarvitse olla ainoa visualisoija, vaan kätevä ohjelmointitaitoinen käyttäjä voi rakentaa itselleen oman mieleisensä visualisoijan.

Koska Dive tukee datakypärää, on vishnu-visualisoijaankin rakennettu stereo-näkö. Käyttäjän täytyy valita kumman silmän kautta hän haluaa katsella maailmaa vai käyttäkö hän useista peleistä tuttuja ylä-, sivu- ja takakulmia.

4.3 Ohjelmointi

Monet ihmiset ajattelevat virtuaalitodellisuuden ohjelmoimisen olevan hankalaa. Onhan se sitä, mikäli aloitetaan aivan puhtaalta pöydältä, mutta valmiita moduleita ja prosesseja käyttämällä voidaan rakentaa mitä upeampia virtuaaliympäristöjä. Tähän mennessä on käsitelty ainoastaan toiminnallisia ominaisuuksia ja ei olla vielä paneuduttu Jumalana olemiseen eli virtuaalimaailman luomiseen.

Dive käyttää useita erilaisia tiedostotyyppejä. Maailma- ja objektitiedostot ovat .vr-tarkentimisia, header-tiedostojen tarkennin on .vh, fonttien .fnt ja muut datatiedostot ovat .data-tarkentimisia. Kaikki tiedostot käännetään C- esikääntäjällä ennen suorittamista tai esittämistä, joten kaikki C-esikääntäjälle annetut ohjaus- yms. koodit käyvät myös Diveen.

Maailma- ja objektitiedostoja käytetään graafisen ympäristön määrittelyyn. Maailma-tiedostot määrittelevät maailman parametrit ja funktiot, kun objektitiedostot määrittelevät objektien ulkonäön ja toiminnallisuuden. Liitteessä 1 on esimerkki maailmatiedostosta ja liitteessä 2 objektitiedostosta. Objektin vuorovaikutus käyttäjän kanssa on toteutettu tcl- kielellä, kuten se yleensä Divessä on tapana. Myös C-ohjelmien tekeminen on mahdollista. Tämä on kuitenkin huomattavasti vaikeampaa, koska se vaatii erilaisia moduleita toimiakseen oikein.

Hahmoja (eli käyttäjien vartaloita) voidaan myös määritellä .vr-tiedostoina. Niille voidaan määritellä hieman enemmän ominaisuuksia kuin tavallisille objektitiedostoille, mutta kyseiset ominaisuudet eivät sido käyttäjää millään tavalla. Hän voi myös valita tavallisen objektin hahmokseen.

Fonttitiedostot (.fnt) määrittelevät kuinka kirjaimet on esitettävä 3D-maailmassa. Muut datatiedostot (.data) määrittelevät erilaisia materiaaleja (eli värejä) objekteille ja hahmoille sekä kirjaimiston tunnisteita.

5. Yhteenveto

Virtuaalitodellisuus ja kolmiulotteisen grafiikan esittäminen ovat tulleet jäädäkseen. Tulevaisuudessa yhä useammat sovellukset näyttävät yhä parempaa grafiikkaa ja ovat käyttäjäystävällisempiä. Näiden ominaisuuksien kehitettäminen vaatii erilaisia prototyyppejä ja malleja eri tilanteiden simulointiin ja testaukseen. Dive on vain yksi näistä prototyypeistä. Tämä näkyy monina virheinä ja toteutumattomina (mutta kuitenkin jo valmiiksi dokumentoituina) ominaisuuksina, jotka aiheuttavat paljon virheitä ja outoja tilanteita. Mutta tietäessään virheiden olemassa olon, niihin osaa suhtautua helpommin.

Diveä kehitetään edelleen eri yliopistoissa ja korkeakouluissa ympäri maailman. Nottinghamin yliopistossa Englannissa on tehty Divestä uusia versiota, Massive ja Massive95. Niiden ohjaus tapahtuu hiirellä, kun se Divessä tapahtuu näppäimistöllä. Myös muissa ominaisuuksissa on hieman eroja. Massivet on kuitenkin rakennettu Diven päälle ja ne käyttävät SID- kommunikointimodulia viestinsä välittämiseen. Onlive on vastaava malli PC/Windows-ympäristöön. Siinä on komeampi grafiikka kuin Unix- veljissään, mutta paljon huonompi äänentoisto ja vakaus. VRML:n asemaa tulevaisuudessa ei voi vielä ennustaa, koska uusi kakkosversio toi tullessaan paljon uusia ominaisuuksia. Näiden toimimista käytännössä ei ole vielä minkäänlaisia kokemuksia.

6. Lyhenteitä

CAD Computer Aided Design.
DIVE Distributed Interactive Virtual Reality.
HPY Helsingin Puhelin Oy.
HTML HyperText Markup Language.
IP Internet Protocol.
LAN Local Area Network.
SICS Stockhoml Institute of Computer Science.
SID SICS Distribution Package.
UDP User Datagram Protocol.
URL Uniform Resource Locator.
VE Virtual Environment.
VR Virtual Reality.
VRML Virtual Reality Modelling Language.
WWW World Wide Web.

7. Lähteet

Macedonia, M., Zyda, M., Pratt, D., Brutzman, D., Barham, P.: Exploiting Reality with Multicast Groups, IEEE Computer Graphics and applications, September 1995, pp. 38-45.

Saalasti, Sami: VRML, Matematiikan laitoksen LUK-tutkielma.

Dive:
http://www.sics.se/dive/

Onlive:
http://www.onlive.com/

InternetFoyer:
http://www.crg.cs.nott.ac.uk/Foyer/index.html

Massive ja Massive95:
http://www.crg.cs.nott.ac.uk/~cmg/massive.html

Virtual Helsinki:
http://www.hpy.fi/handout/tiedotus/arena1410.html
Helsingin Sanomat 14.10.1996.

8. Liitteet

Liite 1. Maailmatiedosto .vr
/* world definitions */
world "Studio" {
start v 8 0 -18
info "Telematic Studio, Jyvaskyla, FINLAND"
min v -1e+20 0 -1e+20
max v 1e+20 1e+20 1e+20
background 0.2 0.5 0.7
fog 0.0003
position -20 10 -20
}

Liite 2. Objektiedosto .vr

object {
name "texture sphere"
nobackface off
translation v 54.0 0.7 48.0
material "YELLOW_M"
view 0 {
SPHERE 0.5 0.5 0.5
}
begin.tcl
proc on_interaction {type id stype origin src_id x y z} {
dive_move [dive_self] 0 1.0 0 LOCAL_C
dive_sleep 200
dive_move [dive_self] 0 -1.0 0 LOCAL_C
}
dive_register INTERACTION_SIGNAL DIVE_IA_SELECT [dive_self] "" on_interaction
end.tcl
}