3D-äänen toteutus X3D:ssä ja VRML:ssa



Samankaltaiset tiedostot
Luento 12: XML ja metatieto

Koordinaatistot 1/6 Sisältö ESITIEDOT: reaaliluvut

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

Solmu 3/2001 Solmu 3/2001. Kevään 2001 ylioppilaskirjoitusten pitkän matematiikan kokeessa oli seuraava tehtävä:

Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset

Aaltojen heijastuminen ja taittuminen

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

Muodonmuutostila hum

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. FT Ari Viinikainen

Aaltojen heijastuminen ja taittuminen

K-Lite Codec Pack v2.48 Asennusohje (toimii myös uusissa versioissa)

Resusci Anne Skills Station

Taso 1/5 Sisältö ESITIEDOT: vektori, koordinaatistot, piste, suora

WWW-sivut HTML-kielellä esitettyä hypertekstiaineistoa

9. Vektorit. 9.1 Skalaarit ja vektorit. 9.2 Vektorit tasossa

3.3 Paraabeli toisen asteen polynomifunktion kuvaajana. Toisen asteen epäyhtälö

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

XML prosessori. XML prosessointi. XML:n kirjoittaminen. Validoiva jäsennin. Tapahtumaohjattu käsittely. Tapahtumaohjattu käsittely.

T Vuorovaikutteinen tietokonegrafiikka Tentti

LAS-TIEDOSTON SISÄLTÖ LIITE 2/1

JWT 2016 luento 11. to klo Aulikki Hyrskykari. PinniB Aulikki Hyrskykari

Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset

Uutisjärjestelmä. Vaatimusmäärittely. Web-palvelujen kehittäminen. Versio 1.3

Suora 1/5 Sisältö ESITIEDOT: vektori, koordinaatistot, piste

Vaatimusmäärittely Ohjelma-ajanvälitys komponentti

Kojemeteorologia. Sami Haapanala syksy Fysiikan laitos, Ilmakehätieteiden osasto

Tavallisen videomainoksen sijasta Ruudussa voidaan mainostauolla esittää dynaamisia spotteja.

WWW-ohjelmoinnin kokonaisuus. WWW-OHJELMOINTI 1 Merkkauskielet. Merkkauskielten idea. Merkkauskielet (markup languages) Merkkauskielten merkitys

HTTP-välityspalvelimen käyttö tapahtumien keräämiseen

AV-muotojen migraatiotyöpaja - video. KDK-pitkäaikaissäilytys seminaari / Juha Lehtonen

Lauseen erikoistapaus on ollut kevään 2001 ylioppilaskirjoitusten pitkän matematiikan kokeessa seuraavassa muodossa:

Tampereen yliopisto Tietokonegrafiikka 2013 Tietojenkäsittelytiede Harjoitus

Toinen harjoitustyö. ASCII-grafiikkaa

Luento 3: 3D katselu. Sisältö

Entiteetit erotetaan muusta tekstistä & ja puolipiste. esim. copyright-merkki näkyy sivulla

Ohjeissa pyydetään toisinaan katsomaan koodia esimerkkiprojekteista (esim. Liikkuva_Tausta1). Saat esimerkkiprojektit opettajalta.

2016/06/24 13:47 1/11 Yleiskuvaus

Webinaariin liittyminen Skype for

L models. Käyttöohje. Ryhmä Rajoitteiset

Määrittelydokumentti

HTML5 video, audio, canvas. Mirja Jaakkola

2 Pistejoukko koordinaatistossa

LABORAATIOSELOSTUSTEN OHJE H. Honkanen

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

Verkkosisällön saavutettavuusohjeet 2.0: hyviä ohjeita monimuotoisen sisällön suunnitteluun ja arviointiin

KÄYTTÖOHJE. Servia. S solutions

edocker PUBLISH! -paketinhallinnan käyttöohje 9/2015

PÄIVITÄ TIETOSI OPTIMASTA! KOOSTE

Tiistai klo Jari Eerola

Action Request System

Lohdutus - tietokantadokumentti

Harjoitus 1 -- Ratkaisut

KYMENLAAKSON AMMATTIKORKEAKOULU Tietotekniikan koulutusohjelma / Tietoverkkotekniikka. Joni Korjala APACHE WWW-PALVELIN Seminaarityö 2012

S OPTIIKKA 1/10 Laboratoriotyö: Polarisaatio POLARISAATIO. Laboratoriotyö

Järjestelmäarkkitehtuuri (TK081702) Järjestelmäarkkitehtuuri. Järjestelmäarkkitehtuuri

Johdanto. Agenda. Tuotantoprosessi. Historiallinen kehitys. Konsepti. Tuotantoprosessin vaiheet

Ohjelmoinnin perusteet Y Python

Moodle 2.2 pikaohje. 1. Kirjautuminen ja omat kurssit (Työtilat) 1. Mene internet-selaimella osoitteeseen

JReleaser Yksikkötestaus ja JUnit. Mikko Mäkelä

LUSAS tiedosto-opas. Matti Lähteenmäki

ELM GROUP 04. Teemu Laakso Henrik Talarmo

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä

Jypelin käyttöohjeet» Miten saan peliin pistelaskurin?

23 VALON POLARISAATIO 23.1 Johdanto Valon polarisointi ja polarisaation havaitseminen

Uutiskirjesovelluksen käyttöohje

KESTOMAGNEETTI VAASAN YLIOPISTO TEKNILLINEN TIEDEKUNTA SÄHKÖTEKNIIKKA. Jani Vitikka p87434 Hannu Tiitinen p Dynaaminen kenttäteoria SATE2010

Talousmatematiikan perusteet: Luento 12. Lineaarinen optimointitehtävä Graafinen ratkaisu Ratkaisu Excel Solverilla

My easyfairs -palvelun käyttö

Symmetrioiden tutkiminen GeoGebran avulla

Tutkitaan sitten HTML-dokumenttien anatomiaa, jotta päästään käsiksi rakenteisten dokumenttien käsitteistöön esimerkkien kautta.

1 Asentaminen. 2 Yleistä ja simuloinnin aloitus 12/

Webforum. Version 15.1 uudet ominaisuudet. Päivitetty:

ARVO - verkkomateriaalien arviointiin

Menetelmäraportti - Konfiguraationhallinta

Muutokset suoran sanoma-asioinnin webservicepalvelun

Paikkatiedot ja Web-standardit

Sisällys. 18. Abstraktit tietotyypit. Johdanto. Johdanto

Kotisivuohjeet. Eteläpohjalaiset Kylät ry. Sivupohjien rakenne

Google-dokumentit. Opetusteknologiakeskus Mediamylly

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

Prospektini. Usein kysytyt kysymykset SISÄLLYS

Arvot ja toiminnan identiteetti / luonne. Michael Rossing, kehittämis- ja viestintäpäällikkö

Matematiikan taito 9, RATKAISUT. , jolloin. . Vast. ]0,2] arvot.

Järjestelmäarkkitehtuuri (TK081702) Web Services. Web Services

Nelli-portaali ja verkko-oppimisympäristöt

6.8 Erityisfunktioiden sovelluksia

VAATIMUSMÄÄRITTELY Virtuaaliyhteisöjen muodostaminen Versio 1.0 (luonnos 4)

Dynamiikan hallinta Lähde: Zölzer. Digital audio signal processing. Wiley & Sons, Zölzer (ed.) DAFX Digital Audio Effects. Wiley & Sons, 2002.

EASY Tiedostopalvelin - mobiilin käyttöopas

Datatähti 2019 loppu

Pong-peli, vaihe Aliohjelman tekeminen. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 3/7. Tämän vaiheen aikana

Racket ohjelmointia osa 2. Tiina Partanen Lielahden koulu 2014

Epooqin perusominaisuudet

Työ tehdään itsenäisesti yhden hengen ryhmissä. Ideoita voi vaihtaa koodia ei.

RYHMÄKERROIN ÄÄNILÄHDERYHMÄN SUUNTAAVUUDEN

Tämän värilaatuoppaan tarkoitus on selittää, miten tulostimen toimintoja voidaan käyttää väritulosteiden säätämiseen ja mukauttamiseen.

4. Lausekielinen ohjelmointi 4.1

Ohjelmistojen mallintaminen, mallintaminen ja UML

Amazon Web Services (AWS) on varmaankin maailman suosituin IaaS-tarjoaja. Lisäksi se tarjoaa erilaisia PaaS-kategoriaan kuuluvia palveluita.

Transkriptio:

3D-äänen toteutus X3D:ssä ja VRML:ssa Elina Vartiainen HUT, Tietoliikenneohjelmistojen ja multimedian laboratorio evartiai@cc.hut.fi Tiivistelmä Tämä seminaarityö tutkii 3D-äänen toteutusta X3D:ssä ja VRML:ssa. VRML on 3D-formaatti, jonka avulla voidaan kuvata kolmiulotteisia objekteja ja niiden yhdistämistä interaktiivisiksi näkymiksi ja maailmoiksi. VRML:ssa äänet ovat toteutettu Sound-, AudioClip- ja MovieTexturesolmujen avulla. X3D on standardi, joka mahdollistaa 3D-maailmat Web:ssä. X3D korvaa VRML:n ja pyrkii ratkaisemaan VRML:n rajoitukset mutta on myös yhteensopiva VRML:n kanssa. X3D:ssä äänet on toteutettu abstraktien tyyppien sekä Sound- ja AudioClip-solmujen avulla. Contigra on arkkitehtuuri, joka pohjautuu X3D-formaattiin. 1

1 JOHDANTO Tämä seminaaripaperi on osa kurssia Digitaalisen median tutkimusseminaari (T- 111.590), joka järjestetään Teknillisessä korkeakoulussa syyslukukaudella 2002. Seminaarin aihe on 3D-ääni ja sen renderöinnin eri osa-alueet, niiden ongelmat ja asioiden suhteellinen tärkeys. Seminaaripaperin aihe on 3D-äänen toteutus Virtual Modelling Language:ssa (VRML) ja Extensible 3D:ssä (X3D). VRML on 3D-formaatti, jonka avulla voidaan kuvata kolmiulotteisia objekteja ja niiden yhdistämistä interaktiivisiksi näkymiksi ja maailmoiksi. X3D on standardi, joka mahdollistaa 3D-maailmat Web:ssä. X3D korvaa VRML:n ja pyrkii ratkaisemaan VRML:n rajoitukset mutta on myös yhteensopiva VRML:n kanssa. 2 VRML YLEISESTI Virtual Reality Model Language eli VRML on esitelty seuraavissa kappaleissa. 2.1 Mikä on VRML? Virtual Reality Model Language eli VRML mahdollistaa kolmiulotteisten objektien kuvaamisen ja niiden yhdistämisen interaktiivisiksi näkymiksi ja maailmoiksi (Web3D Consortium FAQ, 2002). Virtuaalimaailmoja, jotka yhdistelevät kolmiulotteista grafiikkaa, multimediaa ja interaktiivisuutta, voidaan käyttää WWW:n kautta ja erityisesti HTTP:n avulla. VRML on tekstipohjainen ja yksikertainen tiedostoformaatti, joka yhdistelee kolmiulotteista grafiikkaa ja multimediaa. Se ei ole virtuaalimaailma, koska VRML:een ei liity esimerkiksi kolmiulotteista kypäränäyttöä tai syöttölaitetta. VRML ei myöskään ole mallinnuskieli, koska siihen ei kuulu geometrisiä mallinnusprimitiivejä tai mekanismeja vaan ominaisuuksia, jotka eivät kuulu enää mallinnuskielen piiriin. 2.2 VRML:n eri versiot VRML 1.0 versioon sisältyy staattiset 3D-maailmat, jotka koostuvat staattisista objekteista (Nadeu, 1997). Staattiset objektit voivat olla linkattuja muihin objekteihin kuten myös HTML-dokumentteihin. Interaktio tapahtuu vain linkattujen objektien avulla, joiden kautta voi siirtyä objektista toiseen tai toiselle HTML-sivulle. VRML 1.0:sta kaavailtiin laajennettua versiota 1.1, mutta tätä ei koskaan toteutettu. VRML 2.0:ssa objekteja voi animoida ja ne vastaavat tapahtumiin, jotka voivat perustua tiettyihin ajankohtiin tai olla käyttäjän itsensä asettamia. VRML 2.0 versiossa voidaan käyttää näkymissä myös multimedia-objekteja, kuten esimerkiksi ääniä ja videopätkiä. VRML 97 on International Standards Organization:a (ISO) varten tehty versio VRML2 2.0:sta, jossa spesifikaatio kirjoitettiin suurimmalta osin uudestaan asioiden selkiyttämiseksi. Myös muutama pieni muutos lisättiin määrittelyyn. Tässä 2

seminaaripaperissa on käytetty VRML 97 version määrittelyä (VRML97 and VRML97 EAI International Standards ISO/IEC, 2002). 2.3 VRML:n rakenne VRML-tiedosto sisältää vähintään seuraavat asiat: Tiedosto-otsakkeen Kommentteja Solmuja, jotka sisältävät näkymän informaation Kenttiä, jotka ovat muutettavia solmun attribuutteja Arvoja, jotka ovat attribuuttien arvot Esimerkki VRML-tiedostosta on esitetty taulukossa 1. Taulukko 1. Esimerkki VRML-tiedostosta. #VRML 2.0 #Sylinteri Shape { appereance Appereance { material Material { geometry Geometry { height 3.0 radius 2.0 VRML 2.0 version tiedostot alkavat #VRML 2.0 otsakkeella, jonka täytyy olla ensimmäisellä rivillä tekstitiedostossa. #Sylinteri merkintä on kommentti. Seuraavaksi on kuvattu objektin muoto (Shape-solmu), jolla on geometriset (Geometrysolmu) sekä muut ulkonäölliset (Appereance-solmu) ominaisuudet. 3 ÄÄNIEN TOTEUTUS VRML:SSA Seuraavissa kappaleissa on esitelty 3D-äänen toteutusta VRML 97:ssa ensin käsittelemällä Sound-solmu, sen jälkeen AudioClip-solmu ja lopuksi MovieTexturesolmu. Lisäksi tutkitaan, miten äänen priorisointi, heikentyminen sekä spatialisointi on toteutettu VRML:ssa. 3.1 Sound-solmu VRML:ssa Sound-solmu on kuvattu taulukon 2 mukaisesti. 3

Taulukko 2. VRML:n Sound-solmu. Sound { exposedfield SFVec3f direction 0 0 1 # (-, ) exposedfield SFFloat intensity 1 # [0, 1] exposedfield SFVec3f location 0 0 0 # (-,) exposedfield SFFloat maxback 10 #[0, ] exposedfield SFFloat maxfront 10 #[0, ] exposedfield SFFloat minback 1 #[0, ] exposedfield SFFloat minfront 1 #[0, ] exposedfield SFFloat priority 0 #[0, 1] exposedfield SFNode source NULL field SFBool spatialize TRUE Sound-solmu määrittelee äänen paikan VRML-maailmassa. Ääni sijaitsee paikallisen koordinaattijärjestelmän pisteessä ja lähettää ääntä kuuntelualueelle, jonka määrittelee kaksi ellipsiä. Nämä ellipsit ovat orientoituneet direction-kentän määräämässä suunnassa. Ellipsien muotoja voidaan muokata antamaan enemmän tai vähemmän suunta-fokusta äänen sijainnista. Äänilähteen määrittelee source-kenttä. Jos source-kenttää ei ole määritelty, Soundsolmu ei lähetä ääntä ollenkaan. Source-kenttä voi olla joko AudioClip-solmu tai MovieTexture-solmu, jotka käsitellään kappaleissa 3.2 ja 3.3. Intensity-kenttä kertoo Sound-solmun äänen voimakkuuden desibeleissä. Arvot voivat vaihdella 0.0:sta 1.0:aan ja intensity-kenttä määrittelee kertoimen, jota käytetään skaalaamaan äänilähteen normalisoitu näytedata äänentoiston aikana. Jos äänen intensiteetti on 1.0, Sound-solmu lähettää ääntä maksimaalisella äänekkyydellä. Jos taas intensiteetti on 0.0, solmu ei lähetä ääntä ollenkaan. Näiden arvojen välillä äänen voimakkuus laskee lineaarisesti annetusta alkuarvosta nollaan. Priority-kentän avulla kerrotaan selaimelle, että mitä ääniä sen tulee soittaa, jos Soundsolmuja on paljon ja järjestelmän resurssit ovat rajoitetut. Kappale 3.4 esittelee algoritmin, jota voidaan käyttää priorisointia tehdessä. Priority-kentän arvot vaihtelevat 0.0:sta 1.0:aan, jolloin 1.0 on korkein prioriteetti ja 0.0 alhaisin. Äänilähteen sijainti määritellään location-kentän avulla, joka kertoo äänilähteen paikan paikallisessa koordinaattijärjestelmässä. Sound-solmun tuottama ääni on kuultavissa, jos se on osa läpi kuljettavaa maailmaa. Sound-solmulla on sisempi ellipsi, joka määrittelee tilavuuden, jossa äänen maksimaalinen taso on kuultavissa (kuva 1). Tämän ellipsin sisällä normalisoitu näytedata on skaalattu intensity-kentällä, eikä heikentymistä esiinny. Sisempi ellipsi on määritelty venyttämällä direction-kentän määräämää vektoria location-kentän verran. Minback- ja minfront-kentät määrittävät etäisyydet location:n edessä ja takana direction-kentän määräämän vektorin suuntaisesti. Ellipsin toinen fokuspiste on location-kentän määräämässä pisteessä ja leikkaa direction-kentän määräämää vektoria minback- ja minfront-kenttien määräämissä kohdissa. 4

Kuva 1. Sound-solmun geometria (2002, http://www.web3d.org/specifications/vrml97/part1/nodesref.html#figure6.14). Sound-solmun ulompi ellipsi määrittelee tilavuuden, joka rajaa äänen kuuluvuutta. Ääntä ei kuulla ellipsin ulkopuolella. Ulompi ellipsi on määritelty venyttämällä direction-kentän määräämää vektoria location-kentän verran. Maxback- ja maxfrontkentät määrittävät etäisyydet location:n edessä ja takana direction-kentän määräämän vektorin suuntaisesti. Ellipsin toinen fokuspiste on location-kentän määräämässä pisteessä ja leikkaa direction-kentän määräämää vektoria maxback- ja maxfrontkenttien määräämissä kohdissa. MinFront-, maxfront-, minback-, ja maxback-kentät ovat määritetty paikallisissa koordinaateissa ja ovat suurempia tai yhtä suuria kuin 0.0. MinBack:n lisäksi tulee olla pienempi tai yhtä suuri kuin maxback, samaten kuin minfront:n täytyy olla pienempi tai yhtä suuri kuina maxfront. Ellipsien parametrit ovat määritelty paikallisessa koordinaattijärjestelmässä, mutta ellipsien geometriaan vaikuttaa transformaatiot. Kahden ellipsin välillä äänen heikkeneminen on suhteellista, ja äänen heikkeneminen on 0 desibeliä minimi-ellipsissä kasvaen lineaarisesti 20 desibeliin maksimi-ellipsissä. Äänen voimakkuus on vapaavalintainen. Heikentyminen voidaan laskea seuraavasta kaavasta: attenuation = -20 x (d / d ) (1) missä d on etäisyys äänilähteestä katsojaan eli minimi-ellipsin rajalta katsojaan, ja d etäisyys minimi-ellipsistä maksimi-ellipsiin äänilähteestä katsojaan menevän vektorin suuntaisesti. Spatialize-kenttä määrittelee, onko ääni suunnallisesti sijoitettu katsojan suhteen. Jos spatialize-kentän arvo on TRUE ja katsoja on sijoitettu sisemmän ja ulomman ellipsin väliin, katsojan suunta ja suhteellinen sijainti Sound-solmun suhteen täytyy ottaa huomioon ääntä toistettaessa. Jos kentän arvo on FALSE, suunnalliset tehosteet jätetään huomioimatta, mutta elliptiset ulotteisuudet ja intensiteetti vaikuttavat edelleen äänen 5

voimakkuuteen. Jos äänilähde on monikanavainen, lähteen tulisi säilyttää kanavien erottelu äänentoistossa. 3.2 AudioClip-solmu AudioClip-solmu määrittelee audiodatan, johon muut solmut voivat viitata tarvitessaan äänilähteen. AudioClip-solmu on kuvattu VRML:ssa taulukon 3 mukaisesti. Taulukko 3. VRML:n AudioClip-solmu. AudioClip { exposedfield SFString description "" exposedfield SFBool loop FALSE exposedfield SFFloat pitch 1.0 # (0,) exposedfield SFFloat starttime 0 #[-, ] exposedfield SFFloat stoptime 0 #[-, ] exposedfield MFString url [] eventout SFTime duration_changed eventout SFBool isactive Description-kenttä määrittelee äänilähteen tekstuurikuvauksen. Selain voi halutessaan esittää description-kentän, mutta se ei ole välttämätöntä. AudioClip-solmun url-kenttä määrittelee URL:n, josta ääni ladataan. Selainten tulisi tukea vähintään WAV-formaattia, mutta myös MIDI-formaatin tukeminen on suositeltavaa. Loop-, starttime-, stoptime- sekä isactive-kentät ovat aikasidonnaisia. AudioClipsolmun sykli on kesto sekunneissa, joka tarvitaan ääninäytteen soittamiseen kertaalleen määrätyllä pitch-kentän arvolla. Pitch-kenttä määrittelee kertojan nopeudelle, jolla ääninäytettä soitetaan. Kentän arvo voi olla vain positiivinen nolla ja negatiiviset arvot antavat määrittelemättömiä tuloksia. Kentän arvon muuttaminen vaikuttaa sekä äänenkorkeuteen sekä äänentoiston nopeuteen. Esimerkiksi, jos pitch-kentän arvo on 2.0, ääni soitetaan yhtä oktaavia korkeampaa ja kaksinkertaisella nopeudella. Näytteistetylle äänelle pitch-kenttä muuttaa näytteenottonopeuden, jolla ääntä soitetaan. Duration_changed-kenttä on eventout-tapahtuma, joka lähetetään joka kerta, kun uusi arvo on saatavilla normaalia kestoa varten. Tavallisesti näin käy, kun käytetty url-kentän arvo muuttuu ja äänidata täytyy ladata uudelleen, eli äänilähde on muuttunut. Kesto on ajanpituus sekunneissa yhdelle äänen syklille, jonka pitch-kentän arvo on asetettu 1.0:ksi. Pitch-kentän arvon muuttaminen ei tuota duration_changed-tapahtumaa. Jos duration_changed-kentän arvo on 1, äänidataa ei ole vielä ladattu tai sitä ei ole saatavilla jostain syystä. 6

IsActive-kenttää voivat käyttää muut solmut määrittämään, onko ääninäyte aktiivinen. Jos AudioClip on aktiivinen, se soittaa äänen tietyllä ajanhetkellä, esimerkiksi paikallisessa aikajärjestelmässä näytteen 0 ajanhetkellä 0: t = (now starttime) modulo (duration / pitch) (2) 3.3 MovieTexture-solmu VRML:ssa MovieTexture-solmu on kuvattu taulukon 4 mukaisesti. Taulukko 4. VRML:n MovieTexture-solmu. MovieTexture { exposedfield SFBool loop FALSE exposedfield SFFloat speed 1 exposedfield SFTime starttime 0 exposedfield SFTime stoptime 0 exposedfield MFString url [] field SFBool repeats TRUE field SFBool repeatt TRUE eventout SFFloat duration_changed eventout SFBool isactive MovieTexture-solmu määrittelee aikasidonnaisen tekstuurikartan ja parametrit video- ja tekstuurimappausta varten. MovieTexture-solmua käytetään myös määrittelemään Sound-solmun äänidata, jolloin MovieTexture-solmua ei käytetä rendaukseen. Tekstuurikartat määritellään kaksiulotteisessa koordinaattijärjestelmässä, jonka molemmat akselit ulottuvat 0.0:sta 1.0:aan. Kuvan alareuna vastaa tekstuurikartan S- koordinaattiakselia ja vasen reuna T-koordinaattiakselia. Tekstuuurikartan koordinaattijärjestelmä on esitelty kuvassa 2. Kuva 2. MovieTexture-solmun koordinaattijärjestelmä (2002, http://www.web3d.org/technicalinfo/specifications/eai/part1/nodesref.html#figure6.12 ). 7

Url-kenttä, joka määrittelee elokuvadatan, tukee MPEG1-Systems-tiedostoformaattia (joko audio tai video) tai MPEG1-Video-tiedostoformaattia (vain video). Sound-solmun source-kenttä voi viitata MovieTexture-kenttään samaten kuin Appereance-solmun texture-kenttä. Kun elokuva saadaan ladattua, duration_changed-tapahtuma lähetetään, joka ilmoittaa elokuvan keston sekunneissa. Tämä eventout-arvo voidaan lukea, jotta elokuvan kesto saadaan määritettyä. Jos arvo on -1, elokuvaa ei ole vielä ladattu tai keston arvo ei ole saatavilla jostain syystä. Loop-, starttime-, stoptime- sekä isactive-kentät ovat määritelty samoin kuin AudioClip-solmun vastaavat kentät kappaleessa 3.2. Speed-kenttä ilmoittaa, kuinka nopeasti elokuva esitetään. Jos arvo on 2, elokuva näytetään kaksinkertaisella nopeudella. Negatiivinen arvo ilmoittaa, että elokuva soitetaan takaperin. Jos MovieTexture-solmu ei ole aktiivinen, kun elokuva aluksi ladataan, ensimmäinen kehys näytetään, jos speed-kentän arvo on ei-negatiivinen. Jos kentän arvo on negatiivinen, viimeinen kehys esitetään. Jos speed-kentän arvo on 0, MovieTexture-solmu näyttää kehystä 0. Positiivisille speed-kentän arvoille, MovieTexture-solmu esittää elokuvan kehyksen ajanhetkellä t: t = (now starttime) modulo (duration/speed)) (3) Jos speed-kentän arvo on negatiivinen, MovieTxture-solmu esittää kehyksen ajanhetkellä t: t = duration ((now starttime) modulo duration/speed ) (4) Kun MovieTexture-solmu muuttuu ei-aktiiviseksi, sillä hetkellä esitetty kehys jää solmun tekstuuriksi. RepeatS- ja RepeatT-kentät kertovat, toistetaanko (arvo TRUE) vai venytetäänkö tekstuuria kattamaan koko teksturoitava alue S- ja T-koordinaattiakselien mukaisesti. 3.4 Äänen prioriteetti, heikentyminen ja spatialisointi Äänien priorisointia käytetään, jos selaimella ei ole resursseja soittaa kaikkia aktiivisia ääniä. Äänet priorisoidaan järjestettyyn listaan seuraavia lajittelusääntöjä käyttäen: 1. Vähenevään priority-järjestykseen 2. Äänille, joilla prioriteetti on suurempi kuin 0.5, lasketaan ensin now-starttime ja järjestetään kasvavaan järjestykseen 3. Vähenevään intensity-järjestykseen katsojan pisteessä (intensity * intensiteetin heikentyminen) missä priority on Sound-solmun priority-kentän arvo, starttime on source-kentän määrittelemän äänilähteen starttime-kentän arvo. Intensiteetin heikentyminen viittaa intensiteetti-kertojaan, joka saadaan johdettua sisemmän ja ulomman ellipsin välisestä lineaarisesta heikentymisestä. Äänille, joilla on korkea prioriteetti, käytetään 8

lajittelusääntöä 2. Tällöin uudet äänet saadaan kuuluviin, vaikka selaimella olisi kaikki resurssit käytössään. Lajittelusääntöä 2 ei käytetä äänille, joilla on normaali prioriteetti, vaan tällöin äänet järjestetään lajittelusääntö 3:n avulla. Selain toistaa niin monta ääntä järjestetystä listasta kuin sen resurssit sallivat. Myös latenssin tulee pysyä sallituissa rajoissa. Äänen heikentymisen täytyy tapahtua lineaarisesti, jotta äänen voimakkuus vähenisi lineaarisesti, kun katsoja liikkuu sisemmästä äänen ellipsistä ulompaan äänen ellipsiin. Desibelimäärä voi vaihdella 0 desibelistä minimi-ellipsissä 20 desibeliin maksimiellipsissä. Selaimet voivat tukea äänien paikallistumista avaruudessa, jos äänien spatialize-kentän arvo on TRUE ja äänikirjastot sallivat tämän. Selaimet tukevat vähintään stereopanorointia, joka perustuu katsojan ja äänilähteen väliseen kulmaan. Tämä kulma saadaan projisoimalla Sound-solmun location-kentän arvo katsojan XZ-tasoon. Määrittämällä Z-akselin ja vektorin, joka ylettyy katsojasta transformoituun locationkentän arvoon, välisen kulman asteikolla [-π, π] kiertosuunnan ollessa myötäpäivään, voidaan pan-arvo määrittää asteikoilla [0.0, 1.0] (kuva 3) seuraavasti: pan = sin (angle) / 2 + 0.5 (5) Oikea ja vasen kanava saadaan laskettua seuraavista kaavoista: leftpanfactor = 1 pan 2 (6) rightpanfactor = 1 (1 pan) 2 (7) Kuva 3. Stereo-panorointi (2002, http://www.web3d.org/technicalinfo/specifications/eai/part1/conformance.html#figure7.1). Tätä tekniikkaa käytettäessä äänen voimakkuutta muokataan vielä intensity-kentän arvolla sekä välimatkan aiheuttamalla heikentymisellä, jotta saavutetaan paikallistamaton ääniulostulo. Ääniulostulo skaalataan lopuksi leftpanfactor:lla sekä 9

rightpanfactor:lla, jonka lopputuloksena saadaan lopulliset vasen ja oikea ulostulosignaali. 4 X3D YLEISESTI Extensible 3D eli X3D on käsitelty yleisellä tasolla seuraavissa kappaleissa (X3D (Extensible 3D) Frequently Asked Questions (FAQ), 2002). 4.1 Mikä on X3D? X3D on standardi, joka mahdollistaa 3D-maailmat Web:ssä. Se on laajennettava standardi, jota sisällöntuotantotyökalut, selaimet ja muut 3D-sovellukset pystyvät tukemaan. X3D on teknologia, jota käytetään MPEG 4:n 3D-tuessa. X3D korvaa VRML:n olemalla kuitenkin VRML:n kanssa yhteensopiva ja pyrkii ratkaisemaan VRML:n rajoitukset seuraavasti: X3D on täysin määritelty, joten sisältö on täysin yhteensopivaa. X3D on laajennettavissa, joten sitä voidaan käyttää tukemaan esimerkiksi uusimpia streamaus- ja renderöinti-laajennuksia. X3D tukee monia enkoodaus-algoritmeja ja API:a, joten se pystytään helposti liittämään Web-selaimiin esimerkiksi XML:n avulla. 4.2 X3D:n rakenne X3D on VRML 97 jaettuna komponentteihin. Tämän avulla X3D:hen pystyy lisäämään komponentteja, joiden avulla VRML:n toiminnallisuutta pystytään kasvattamaan. VRML-tiedosto (taulukko 1) voidaan muuntaa X3D-tiedostoksi kirjoittamalla tiedostoon kommenttirivi #X3D profile:base. Jos sisällössä on ominaisuuksia, joita ei löydy standardi VRML-määrittelystä, tiedostoon lisätään myös rivi, joka voisi olla esimerkiksi: #X3D component:streaming:1. Tällä tavoin selain tietää, että sisältö tarvitsee ykköstason streamaus-toiminnallisuuden. Sisältö voi tässä tapauksessa olla kokoelma solmuja, jotka tukevat streamausta tai API-tason lisäpalvelu. X3D:ssä komponentit voidaan lisäksi ryhmitellä profiileihin, jotka sisältävät monia eri toiminnallisuuksia. Profiili voi myös sisältää useiden profiilien toiminnallisuuden. X3D:ssä on valinnainen XML-enkoodaus, joka tarjoaa mekanismin, jonka avulla X3D pystytään liittämään muihin Web-teknologioihin. 5 ÄÄNIEN TOTEUTUS X3D:SSÄ Seuraavissa kappaleet käsittelevät 3D-äänen toteutusta X3D:ssä ensin tutkimalla abstrakteja tyyppejä, ja sen jälkeen Sound- ja AudioClip-solmu. Lisäksi tarkastellaan, miten äänen priorisointi, heikentyminen sekä spatialisointi on toteutettu X3D:ssä (Extensible 3D (X3D) International Standard ISO/IEC, 2002). 10

5.1 Abstraktit tyypit X3DSoundNode-solmu on abstrakti solmu ja perusta kaikille äänisolmuille X3D:ssä. Se voidaan esittää taulukon 5 mukaisesti. Taulukko 5. X3D:n X3DSoundNode-solmu. X3DSoundNode : X3DchildNode { X3DSoundSourceNode-solmu on myös abstrakti solmu ja sen tehtävänä on olla perusta kaikki solmutyypeille, jotka lähettävät audiodataa. Solmun rakenne on taulukon 6 mukainen. Taulukko 6. X3D:n X3DSoundSourceNode-solmu. AudioClip : X3DSoundSourceNode, X3DUrlObject { SFString [in, out] description "" SFBool [in, out] loop FALSE SFFloat [in, out] pitch 1.0 (0, ) MFString [in, out] url [] [urn] SFBool [out] isactive 5.2 Sound-solmu Sound-solmu määrittelee äänen paikan X3D-maailmassa. Solmu on esitelty taulukossa 7. Taulukko 7. C3D:n Sound-solmu. Sound : X3DSoundNode { SFVec3f [in,out] direction 0 0 1 (-, ) SFFloat [in,out] intensity 1 [0, 1] SFVec3f [in,out] location 0 0 0 (-,) SFFloat [in,out] maxback 10 [0, ] SFFloat [in,out] maxfront 10 [0, ] SFFloat [in,out] minback 1 [0, ] SFFloat [in,out] minfront 1 [0, ] SFFloat [in,out] priority 0 [0, 1] SFNode [in,out] source NULL [X3DSoundSourceNode] SFBool [] spatialize TRUE 11

Kenttien merkitykset ovat samat kuin VRML:n Sound-solmun vastaavat. Kentät on selitetty kappaleessa 3.1. 5.3 AudioClip-solmu AudioClip-solmu määrittelee audiodatan, johon Sound-solmu voi viitata. AudioClipsolmun rakenne on taulukon 8 mukainen. Taulukko 8. X3D:n AudioClip-solmu. AudioClip : X3DSoundSourceNode, X3DUrlObject { SFString [in, out] description "" SFBool [in, out] loop FALSE SFFloat [in, out] pitch 1.0 (0, ) SFTime [in, out] starttime 0 (-, ) SFTime [in, out] stoptime 0 (-, ) MFString [in, out] url [] [urn] SFTime [out] duration_changed SFBool [out] isactive Kenttien merkitykset ovat samat kuin vastaavien VRML:n AudioClip-solmussa. Nämä on selitetty kappaleessa 3.2. 5.4 Äänen prioriteetti, heikentyminen ja spatialisointi X3D:ssä käytetään samoja tekniikoita äänen prioriteettien, heikentymisen sekä spatialisoinnin määrittämiseen kuten VRML:ssakin. Näitä asioita käsiteltiin kappaleessa 3.4. 6 CASE X3D:STÄ Contigra on arkkitehtuuri, jonka avulla voidaan rakentaa joko itsenäisiä tai Webpohjaisia ohjelmia (Dachselt et al, 2002). Sen toteutus perustuu täysin deklaratiivisiin XML-dokumentteihin, jotka kuvaavat komponenttien toteutuksen, rajapinnan sekä komponentin konfiguraation ja 3D-käyttöliittymien ja virtuaaliympäristöjen koostumuksen. Contigrassa käytetään X3D:tä näkymien luonnin perusteena, vaikkakin sovellukset voidaan kääntää myös muita 3D-teknologioita varten. X3D valittiin, koska siinä on joustava XML-enkoodaus ja älykäs 3D-selain. Lisäksi 3D on modulaarinen, koska komponentit pystytään jakamaan profiileihin. Contigra-komponentti ei ole suoritettavaa binääri-koodia, vaan se on määritelty toteutuksena, joka perustuu näkymien sekä komponentti-rajapintojen dokumentteihin. 12

Kolmiulotteisen, komponentteihin perustuvan sovelluksen kehitys vaatii aktiviteetteja eri abstraktio- sekä kehitys-tasoilla. Nämä tasot on esitelty kuvassa 4. Kuva 4. Contigra-arkkitehtuurin tasot ja niihin liittyvät tehtävät ja työkalut (Dachselt et al, 2002). Development-tasolla luodaan yksinkertaiset tai yhdistetyt komponentit. Seuraava eli Distibution-taso ottaa vastaan pakattujen komponenttien joukon, jossa vain komponenttien rajapinnat ovat näkyviä ja toteutus jää kapseloiduksi. Komponentit voidaan jakaa eri puolille WWW:tä ja säilyttää tietokannoissa. Distribution-tasolla valitaan myös tarvittavat komponentit, jotka otetaan käyttöön Configuration & Assembly tasolla. Tähän tasoon liittyvät tehtävät sisältävät komponenttien konfiguroimista, koostamista ja liittämistä monimutkaisempien 3D-ohjelmien tekemiseksi. Lopullinen sovellus on valmis Runtime-tasolla, jolla sovellus voidaan myös sovittaa nykyiseen järjestelmän tehokkuuteen tai käyttäjän mieltymyksiin. VIITTEET Dachselt Raimund, Hinz Michael, Meißner Klaus. 2002. Contigra: an XML-based architecture for component-oriented 3D applications. Proceeding of the seventh international conference on 3D Web technology 2002, Tempe, Arizona, USA. ACM Press. Pages: 155-163. http://doi.acm.org/10.1145/504502.504527 Extensible 3D (X3D) International Standard ISO/IEC 19775:200x Committee Draft Preview. http://www.web3d.org/taskgroups/x3d/x3dspec_cd_preview/index.html Nadeu, David R. 1997. VRML feature summary. [Viitattu 10.12.2002]. http://www.sdsc.edu/doct/publications/a6/intro_vrml.htm 13

VRML97 and VRML97 EAI International Standards ISO/IEC 14772-1:1997, ISO/IEC 14772-2:2002 and Amendment 1. http://www.web3d.org/technicalinfo/specifications/eai/index.html Web3D Consortium FAQ. [Viitattu 10.12.2002]. http://www.web3d.org/faq/v_faq.htm X3D (Extensible 3D) Frequently Asked Questions (FAQ). [Viitattu 10.12.2002]. http://www.web3d.org/taskgroups/x3d/faq/index.html 14