53
SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA RAZVOJ APLIKACIJA ZA OSTVARIVANJE VIRTUALNE STVARNOSTI Diplomski rad Autor: Krešimir Prcela Zagreb, rujan 2002. Snimi izvorni kod aplikacije (VR_ver223_source.zip ) Snimi izvršni kod aplikacije (VR_ver223_release.zip ) SADRŽAJ 1. Virtualna stvarnost 2. Cilj diplomskog rada 3. Uređaji za ostvarivanje virtualne stvarnosti 3.1. Ulazni uređaji 3.2. Izlazni uređaji

virtualna stvarnost

  • Upload
    edo7474

  • View
    40

  • Download
    7

Embed Size (px)

DESCRIPTION

bb

Citation preview

566565

SVEUILITE U ZAGREBU

FAKULTET ELEKTROTEHNIKE I RAUNARSTVA

RAZVOJ APLIKACIJA ZA OSTVARIVANJE VIRTUALNE STVARNOSTI

Diplomski rad Autor: Kreimir

Prcela

Zagreb, rujan 2002.

Snimi izvorni kod aplikacije (VR_ver223_source.zip)Snimi izvrni kod aplikacije (VR_ver223_release.zip)

SADRAJ

1. Virtualna stvarnost 2. Cilj diplomskog rada 3. Ureaji za ostvarivanje virtualne stvarnosti 3.1. Ulazni ureaji 3.2. Izlazni ureaji 3.3. Virtualni sustavi 3.4. Ureaji koriteni u aplikaciji 4. Realizacija virtualne scene

HYPERLINK "http://www.zemris.fer.hr/predmeti/rg/diplomski/02Prcela/" \l "4.1" 4.1. Matematiki opis virtualne scene 4.2. Pogreka praenja mete 4.3. Programsko ostvarenje virtualne scene 5. Korisnik i aplikacija virtualne stvarnosti 6. Povezanost aplikacije i sklopovlja 6.1. Povezanost aplikacije sa grafikim sklopovljem 6.2. Povezanost aplikacije sa davaem orijentacije 6.2.1. Detektiranje davaa orijentacije 6.2.2. Oitavanje orijentacije 6.2.3. Prekid komunikacije 7. Koritenje aplikacije 8. Dijagram toka programa 9. Opis ulaznih i izlaznih datoteka 9.1. Ulazne datoteke 9.2. Izlazne datoteke 10. Rezultati 10.1. Kanjenje 10.2. Pogreka praenja mete 11. Primjena virtualne stvarnosti 12. Daljnji razvoj aplikacije 13. Zakljuak 14. Literatura Dodatak A. Dodatak B. Dodatak C. Dodatak D. 1. VIRTUALNA STVARNOST

Jedna od definicija virtualne stvarnosti glasi:

"Virtualna stvarnost je nain na koji ljudi vizualiziraju stvarnost, upravljaju i komuniciraju sa raunalom i vrlo sloenim podacima".

Ve od razvoja prvih raunala ovjek je pokuavao stvoriti virtualnu sliku svijeta kojeg bi na jednak nain, kao i stvarni svijet, mogao doivjeti svim osjetilima i u kojem bi mogao svojom virtualnom prisutnou sudjelovati u procesima koji ga mijenjaju i oblikuju. Iako jo nije u potpunosti ostvarena, ova ideja zajedno sa tehnologijom, polako, u dugom nizu godina pretvara se u stvarnost i postie sve veu primjenu u mnogim podrujima ljudske djelatnosti.

Osnovna uloga koju ima virtualna stvarnost je pojednostavljenje upravljanja sloenim procesima, tako da virtualna stvarnost bude na vioj razini od samog raunala. ovjeku je prirodnije upravljati nekim procesom boravei u virtualnoj okolini nego da upravlja raunalom. Upravo ta injenica ini virtualnu stvarnost toliko zanimljivom i privlanom za istraivanje.

Virtualni svijet moe biti raunalno oblikovan trodimenzionalni tehniki ili arhitektonski model, znanstvena simulacija ili npr. pogled u bazu podataka. Razvijeni su mnogi programski alati za dizajniranje virtualnih svjetova koji ne moraju biti samo kopija realnog svijeta, nego i objekti iz mate kojima dajemo realne fizikalne ili psihike osobine.

Izraeni su razliiti ureaji koji u komunikaciji sa raunalom omoguuju ovjeku interakciju i percepciju virtualnog svijeta. Ureaji za percepciju nazivaju se jo i izlazni jer im raunalo alje generirane informacije o slici, zvuku, sili, mirisu, temperaturi, o svemu onome to ovjek moe percipirati, a sama svrha tih ureaja je pretvoriti te informacije u oblik koji je prilagoen ovjekovim osjetilima. Ureaji za interakciju ili ulazni ureaji, alju raunalu pretvorene informacije o ljudskim pokretima, ljudskom govoru, pulsu i slino. Svi ureaji nastoje se to bolje objediniti u jedan virtualni sustav kako bi ovjek to potpunije percipirao i interaktirao u virtualnom svijetu.

U ovom radu pokuao sam se to bolje upoznati sa ovim ureajima, i pokuao sam ostvariti virtualnu scenu. Takoer sam elio izvesti mjerenja s kojima bi ispitao koliko je korisnik virtualno prisutan i koji sve tehniki uvjeti moraju biti ispunjeni da bi se uope moglo govoriti o nekakvom ostvarenju virtualne stvarnosti.

2. CILJ DIPLOMSKOG RADACilj diplomskog rada je poblie upoznavanje sa pojmom virtualne stvarnosti i njeno praktino ostvarenje. Da bi ostvario ovaj cilj morao sam najprije prouiti programske alate za izradu aplikacija koje bi simulirale virtualnu stvarnost i koje bi omoguile komunikaciju sa virtualnim ureajima. Za programsku realizaciju trodimenzionalnih sustava danas se najvie koriste DirectX i OpenGL. Teko je rei koji je od ova dva grafika alata napredniji. Oba alata se iz verzije u verziju unapreuju i postaju sve jednostavniji za upotrebu. Njihove biblioteke integriraju se u programske jezike kao to su Microsoft Visual C++, Visual Basic, Borland C++ Builder i drugi. Zbog ranijeg iskustva i zbog injenice da je programski jezik C++ Builder na vioj razini od programskog jezika Microsoft Visual C++, te i time jednostavniji za programiranje, odluio sam se za pisanje koda u C++ Builderu u kojem sam koristio OpenGL biblioteke. Da bi povezao razne virtualne ureaje sa aplikacijom prouio sam gotove programe i biblioteke koje dolaze sa samim ureajima.

Sa izraenom aplikacijom konani cilj bio je i snimanje korisnika koji se nalazi u dinaminoj virtualnoj sceni. Na glavu korisnika se postavi virtualni ureaj HMD (Head Mounted Display - kaciga sa ugraenim davaem orijentacije i LCD zaslonima) i korisnik treba pokretima glave pratiti metu koja se kree po virtualnoj sceni. Za vrijeme simulacije mjeri se koliku je prosjenu greku korisnik radio napravio pri razliitim uvjetima, te sam matematikom analizom tih podataka elio vidjeti koliko je korisnik brzo i tono mogao pratiti metu, te koji tehniki uvjeti moraju biti zadovoljeni, da bi promatra bio to manje ometan i prisutan u virtualnoj stvarnosti.

3. UREAJI ZA OSTVARIVANJE VIRTUALNE STVARNOSTIUreaji za ostvarivanje virtualne stvarnosti mogu se po nainu komunikacije sa raunalom podijeliti na ulazne i izlazne. Ulazni ureaji omoguavaju nam interakciju, a izlazni percepciju virtualne stvarnosti.

3.1. ULAZNI UREAJI

- 3D mievi (spacemouse) i prostorne kugle (spaceball) - slue za precizno kretanje i izmjenu virtualne scene.

- 3D digitalni dava koordinata (digitizer) - daje koordinate toke u stvarnom prostoru. Koristi se za izgradnju virtualne scene.

Slika 3.1. 3D miSlika 3.2. Prostorna kugla

- davai orijentacije (tracker ili tracking device) - daju informacije o orijentaciji. Imaju 3 stupnja slobode , tj. daju 3 kuta (azimut, elevacija i kut inklinacije). Neki bolji modeli daju i informaciju poziciji (koordinate poloaja). Davai orijentacije mogu biti: elektromagnetski, mehaniki, optiki, akustiki, infracrveni i inercijalni.

Slika 3.3. Digitalni dava koordinata - digitizerSlika 3.4. Dava pozicije - tracker

- davai pozicije oka - prate poziciju centra vidnog polja (fovea) na retini. Na temelju smjera gledanja mogu se obavljati razne akcije: promjena virtualne scene, navigacija itd.

- rukavica (cyber glove) - rukavica daje informaciju o poloaju ovjekove ake.

- mehanika ruka - privrsti se za ovjekovu ruku i daje informaciju o njenom poloaju. Jednim dijelom ovo je i izlazni ureaj jer prima iz raunala povratnu informaciju o sili i sa tom silom djeluje na ruku.

Slika 3.5. Rukavica - Cyber gloveSlika 3.6. Mehanika ruka

- kibernetiko odijelo (cyber suite) - odijelo koje beinim nainom alje informacije o poloajima zglobova ljudskog tijela. NASA ga koristi za testiranje biomehanike astronauta za vrijeme svemirskih letova.

Slika 3.7. Kibernetiko odijelo - cyber suite

3.2. IZLAZNI UREAJI

- stereo naoale (stereo glasses) - naoale sa LCD zaslonima koji prikazuju razliite slike za lijevo i desno oko to daje percepciju trodimenzionalnosti . Sinhroniziraju se sa monitorom tako da se na monitoru naizmjenino prikazuju slika lijevog i slika desnog oka. Mogue je ostvariti brzine do 140 slika po sekundi. Slika 3.8. Stereo naoale

- head mounted display - HMD - kaciga sa ugraenim zaslonima ispred svakog oka, slualicama i davaem pozicije i orijentacije. Postoji HMD sa potpunom i mijeanom virtualnom stvarnosti. Kod izvedbe HMD-a sa potpunom virtualnom stvarnosti korisnik vidi na zaslonu samo sliku virtualnog svijeta, dok kod HMD-a sa mijeanom stvarnosti korisnik kroz polu prozirni zaslon vidi sliku pravog svijeta, dok se na samom zaslonu prikazuje virtualna slika. Najee ta virtualna slika predstavlja informaciju o realnom svijetu. Npr. tu izvedbu HMD-a koriste piloti kojima se npr. na zaslonu daju informacije o pravom poloaju mete. Slika 3.9. HMD sa potpunom virtualnom stvarnostiSlika 3.10. HMD sa mijeanom virtualnom stvarnosti

- cyber dodir (cyber touch) - osim to davaju poloaj informaciju o poloaju prstiju, ove rukavice imaju ugraene na vrhu svakog prsta vibracijske stimulatore koji slue za prenoenje osjeta opipa.

Slika 3.11. Cyber touch

- ureaji za generiranje 3D zvuka - korisnik moe locirati odakle dolazi zvuk. Danas su vrlo raireni i cijenom pristupani. Besplatan alat za generiranje trodimenzionalnog zvuka koji se moe integrirati u C++ aplikacije je Open Audio Library.

- ureaji za generiranje mirisa, temperature

- ureaji za generiranje sile - razliiti tipovi ureaja koji se uglavnom koriste za zabavuSlika 3.11.a. Igraa palica sa povratnom silom (force feedback joystick)Slika 3.11.b. Stolica sa ugraenim mehanizmom za povratnu siluSlika 3.11.c. Odijelo sa povratnom silom (simulacija borilakih sportova)

3.3. VIRTUALNI SUSTAVI

Uz pomo ovih ureaja izgraeni su razni virtualni sustavi (VR systems). Jedan od takvih sustava je CAVE (peina, spilja) izraen na sveuilitu u Chicagu. To je prostor veliine sobe u kojoj je na zidove i na strop projicirana stereo slika virtualnog svijeta. U tom prostoru moe se istovremeno nalaziti vie korisnika sa stereo naoalama. Korisnici imaju podijeljene uloge u virtualnom svijetu. Prostor je ujedno i trodimenzionalno ozvuen. Korisnici se po virtualnoj sceni kreu sa malim tapiem (wand) kojeg dre u ruci. Na tapiu je integriran dava pozicije (tracker) koji omoguava usmjereno kretanje. Unutar tog prostora korisnici se mogu i normalno kretati.

Slika 3.12. Model virtualnog sustava CAVE

Slika 3.13. Virtualni sustav CAVE

Zanimljivi su i distribuirani virtualni sustavi koji se sastoje od vie umreenih raunala i jednog zajednikog virtualnog svijeta. Korisnici mogu biti i fiziki vrlo udaljeni. Na ovaj nain mogue je raditi sloene simulacije sa vie uesnika i sa njihovom interakcijom. Ovakvi distribuirani virtualni sustavi pogodni su za vojne svrhe. Jedini problem kod ovakvih sustava je meusobna sinhronizacija razliitih raunala.

Jo jedan oblik virtualnih sustava je i teleprisutnost ili virtualna prisutnost (telepresence, virtual presence). Svrha ovakvih sustava je virtualna prisutnost osobe na udaljenoj lokaciji od stvarne fizike prisutnosti. Ovakav sustav koristi se u medicini. Kirurg koji je fiziki udaljen od pacijenta virtualno moe upravljati operacijskim ureajima. Jedan od uvjeta za izvedivost ovakve simulacije u realnom vremenu je brza komunikacijska mrea. NASA koristi telerobotiku za istraivanje svemira. Robot ima ugraene kamere, moe se beino upravljati i ima ostali pribor za kopanje po svemirskim povrinama.

3.4. UREAJI KORITENI U APLIKACIJIJedan od ureaja za prikaz virtualne stvarnosti koji se moe detektirati u ovoj aplikaciji je VFX 3D HMD. Ovaj ureaj ima ugraen dava orijentacije koji daje orijentaciju glave i ima dva zaslona koji slue za adekvatan prikaz scene ovisno o orijentaciji glave.

Slika 3.14. VFX 3D HMDSlika 3.15. VFX 3D HMD sa adekvatnom opremom

Tehnike karakteristike ovog ureaja:2 LCD zaslona dijagonale 0.7", 16 bitna boja, irina vidnog polja 35. LCD zasloni imaju izvod koji se zajedno sa monitorom spaja na izlaz iz grafike kartice. Mogu raditi i u stereo nainu. Dava orijentacije ima 3 senzora: rotacija lijevo/desno (Yaw - kut oko Y osi, 360, preciznost 0.1), rotacija gore/dole (Pitch - kut oko X osi, 70, preciznost 0.1) i naginjanje lijevo/desno (Roll - kut oko Z osi, 70, preciznost 0.1). Sve 3 vrijednosti su u 12 bitnom formatu. Komunicira preko serijskog ulaza (porta). Takoer ima ugraene slualice koje se spajaju na izlaz iz zvune kartice (Line Out).

Aplikacija prepoznaje i neke davae orijentacije serije Intersense. To su IS-300, IS-600, IS-900, IS-1200, InertiaCube2 i sve verzije InterTrax-a. Uz te davae orijentacije dolaze i biblioteke koje se lako integriraju u programski kod.

Dava orijentacije IS-300 testiran je sa ovom aplikacijom. Daje vrijednosti za 3 prostorna kuta, spaja se na serijski ulaz i moe raditi brzinom prijenosa do 115,200 kb/s, maksimalna osjetljivost na kutnu brzinu je 1,2/ms, kutna rezolucija je 0.02 i kutna tonost je 1.0. Modeli IS-600 i IS-900 su slini ovom modelu, dok model IS-1200 je specifian po tome to ima 6 stupnjeva slobode.

Slika 3.16. Dava orijentacije IS-300

Jo jedan zanimljiv model koji je testiran je i dava orijentacije Intertrax2. Ima tri stupnja slobode (Pitch 80, Yaw 180, Roll 90), kanjenje oko 4 ms, kutna preciznost mu je 0.02, maksimalna osjetljivost na kutnu brzinu je 0,72/ms.

Slika 3.17. Dava orijentacije InterTrax2Slika 3.18. Naoale i-glasses SVGA

Naoale koje sam testirao uz ovaj dava orijentacije (i-glasses SVGA) imaju irinu vidnog polja od 26,5, mogu raditi u rezoluciji 640x480 i 800x600 pri frekvencijama od 56-100Hz, sa 18 bitnom bojom.

4. REALIZACIJA VIRTUALNE SCENE

4.1. MATEMATIKI OPIS VIRTUALNE SCENE

Virtualni promatra nalazi se u trodimenzionalnoj virtualnoj sceni. Svi objekti na sceni sastavljeni su od vrhova koji imaju svoje koordinate u globalnom koordinatnom sustavu scene. Poloaj promatraa u globalnom koordinatnom sustavu odreen je jednom tokom i s tri prostorna kuta.

Slika 4.1. Promatra u virtualnom sustavu

Nakon to promatraa translatiramo u neku toku virtualne scene (slika 4.2.), koju emo oznaiti sa O'(tx,ty,tz), trebamo ga jo rotirati za vrijednosti kutova za koje je promatra okrenuo glavu, tj. one kutove koje oitamo sa davaa orijentacije. Dava orijentacije daje tri kuta koje emo oznaiti sa , i . Kut g predstavlja prvu inklinaciju ili rotaciju promatraeve glave u pozitivnom smjeru oko njegove osi z' (Slika 4.3.). Pozitivni smjer rotacije odreen je pravilom desne ruke.

Slika 4.2. Translacija promatraa iz ishodita sustava scene Slika 4.3. Rotacija promatraa oko vlastite osi z'

Sada pravimo drugu rotaciju promatraa koja predstavlja elevaciju ili okretanje glave u smjeru gore i dole. Rotiramo koordinatni sustav promatraa oko njegove trenutne osi x' za kut (Slika 4.4.). Konano, radimo treu rotaciju oko osi y' za kut koja predstavlja rotaciju glave lijevo i desno (Slika 4.5.).

Slika 4.4. Rotacija promatraa oko vlastite osi x'Slika 4.5. Rotacija promatraa oko vlastite osi y'

Da bi iscrtali na zaslon scenu onako kako je vidi promatra, moramo svim objektima u sceni preraunati koordinate iz sustava scene u sustav promatraa. Ovaj postupak suprotan je od prethodnog. Npr. ako poznajemo koordinate vrha M(mx,my,mz) u sustavu scene, trebamo najprije napraviti translaciju suprotnu od one u prethodnom postupku (Slika 4.7.).

Slika 4.6. Toka M u sustavu scene i promatraaSlika 4.7. Translacija toke M u smjeru -tx, -ty i -tz

Sada radimo rotaciju oko osi z za kut -. Ova rotacija je suprotna od one oko osi z'.

Slika 4.8. Rotacija oko osi z za kut -Slika 4.9. Rotacija oko osi x za kut -

Zatim rotiramo promatraa oko osi x za kut -.

Konano radimo i zadnju rotaciju oko osi y u negativnom smjeru za kut -.

Slika 4.10. Rotacija oko osi y za kut -Slika 4.11. Konani poloaj vrha M

Openito odnose bilo kojeg vrha M(mx,my,mz) i njegovog transformiranog vrha M'(mx',my',mz') u sustavu promatraa moemo opisati sljedeom jednakou:

gdje su sa R oznaene pripadne matrice rotacije, a sa T matrica translacije. Ako uvrstimo predznak minus unutar samih matrica dobije se:

Mnoenjem ovih matrica izraunaju se elementi konane matrice transformacija:

T11=coscos-sinsinsinT12=cossin+sinsincosT13=-sincosT14=-(txT11+tyT12+tzT13)T21=-cossinT22=coscosT23=sinT24=-(txT21+tyT22+tzT23)T31=sincos+cossinsinT32=sinsin-cossincosT33=coscosT34=-(txT31+tyT32+tzT33)T41=0T42=0T43=0T44=1

Ovaj postupak naziva se Eulerova transformacija, a pripadni kutovi , i Eulerovi kutovi [Vince, 1995].

4.2. POGREKA PRAENJA METE

Zahtjev koji se postavlja promatrau je to preciznije praenje mete, tj. promatra se mora zakrenuti tako da se sredite mete poklapa sa sreditem zaslona. Ako sa jednim pravcem oznaimo smjer gledanja, a sa drugim smjer od oita prema sreditu mete, greka koju promatra uini predstavljena je veliinom kuta kojeg zatvaraju ta dva pravca. Pri tome udaljenost mete od promatraa nije bitna jer pogreka ostaje ista (Slika 4.12).

Slika 4.12. Pogreka praenja meteSlika 4.13. Referentni smjer gledanja

Kutna pogreka moe se lako izraunati ako su poznati vektori koji odreuju ova dva pravca. Vektor iz oita prema meti predstavljen je sa dva poznata vrha. Vektor smjera gledanja odreen je pomou dva kuta koja se oitaju sa davaa orijentacije. Referentni smjer gledanja je u smjeru negativne z osi, a os y predstavlja vertikalnu os promatraa . Smjerovi rotacija koje daje dava orijentacije i referentni smjer gledanja promatraa prikazan je na slici 4.13.

Dvije rotacije promatraa, za kutove i koji su oitani sa davaa orijentacije, imaju za posljedicu promjenu smjera gledanja. Rotacijom jedininog vektora koji predstavlja smjer gledanja dobijemo novi vektor smjera gledanja v. Na slici 4.14. napravljene su rotacije za kut - i . Sa VP oznaen je virtualni promatra, a sa x, y i z osi koje su paralelne sa osima sustava virtualne scene.

Slika 4.14. Promjena smjera gledanja nakon dvije rotacije

Iz slike lako izraunamo komponente vektora v:

vy=sin(-)=-sinvx=cos(-)sin=cos(-)sin=-cossinvz=-(cos(-)cos())=coscos

Ako sa u oznaimo jedinini vektor smjera od oita prema meti konana kutna pogreka koju uini promatra je:

Da bi izraunali horizontalnu i vertikalnu pogreku, tj. vertikalno i horizontalno kutno odstupanje mete, analogno prethodnom opisu, takoer je potrebno i poloaj mete opisati pomou dva kuta.

Slika 4.15. Poloaj mete odreen je sa dva kuta

Na slici ova dva kuta oznaena su sa i . Vrijednosti ovih kutova nalaze se u sljedeim intervalima:

Kao i za vektor smjera gledanja vrijede ove jednadbe:uy=-sinux=-cossinuz=coscos

Odavde se izvedu vrijednosti za i :

Za izraunati kut nemamo nikakvih problema jer je dobiveno rjeenje iz zadanog intervala. Meutim za kut 0 dobivaju se vrijednosti iz intervala to zadovoljava samo uz uvjet da je uzLabel1->Caption="Pokusavam detektirati VFX 3D tracker..."; if (VFXLoadDll()==VFX_OK) { TrackerDetected=true; Tracker=VFX3D_TRACKER; Form6->Label1->Caption="Tracker VFX3D je detektiran."; } }//pokusaj detektirati InterSense trackerif(!TrackerDetected){/* Detect first tracker. If you have more than one InterSense device and would like to have a specific tracker, connected to a known port, initialized first, then enter the port number instead of 0. Otherwise, tracker connected to the rs232 port with lower number is found first. USB devices are always found first. */

Form6->Label1->Caption="Pokusavam detektirati InterSense tracker...";handle = ISD_OpenTracker( NULL, 0, FALSE, FALSE ); //automatsko detektiranje trackera

//ako nije detektiran trackerif(handle > 0){

TrackerDetected=true;Tracker=INTERSENSE_TRACKER;Form6->Label1->Caption="Tracker InterSense je detektiran.";

}

}//ako nije detektiran nijedan trackerif(!TrackerDetected) Form6->Label1->Caption="Tracker nije detektiran!";

}//-----------------------------------------------------------------------------

U kodu podebljanim slovima oznaene su funkcije koje detektiraju dava orijentacije i koje su integrirane u DLL datoteke.

Opis ISD_OpenTracker() funkcije: typedef int ISD_TRACKER_HANDLE;...ISD_TRACKER_HANDLE ISD_OpenTracker( HWND hParent, DWORD commPort, BOOL infoScreen, BOOL verbose ); Funkcija ISD_OpenTracker vraa vrijednost 0 ako nije uitan DLL ili -1 ako je dolo do greke prilikom detektiranja InterSense davaa orijentacije. Inae vraa identifikacijski broj ureaja (tipa int). Ukoliko se eli izvriti automatsko detektiranje potrebno je postaviti vrijednost commPort=0. Ostali argumenti nemaju znaajniju ulogu.

Opis VFXLoadDll() funkcije:extern long VFXLoadDll( void );

Funkcija VFXLoadDLL() uitava DLL i detektira VFX 3D kacigu i vraa vrijednost VFX_OK ako je to uspjeno obavila. Inae funkcija vraa toan tip greke koji se desio. Tipovi greaka su navedeni u datoteci VFXsdk.h.

6.2.2. OITAVANJE ORIJENTACIJEOitavanje kutova sa davaa orijentacije rijeeno je u sljedeem bloku://---------------------------------------------------------------------------//--- GetTrackerAngles - sprema polozaj trackera u AngleX, AngleY i AngleZ --//---------------------------------------------------------------------------

void __fastcall TForm1::GetTrackerAngles(float &AngleX, float &AngleY, float &AngleZ){if(TrackerDetected && Tracker==INTERSENSE_TRACKER){ISD_GetTrackerData( handle, &data );AngleX=-data.Station[0].Orientation[1]-AngleX0;AngleY=data.Station[0].Orientation[0]-AngleY0;AngleZ=data.Station[0].Orientation[2]-AngleZ0;}

if(TrackerDetected && Tracker==VFX3D_TRACKER){long yaw,pitch,roll;VFXGetTracking( &yaw, &pitch, &roll );// yaw in range 0 - 655535, horizontal direction// yaw 0 = -179.99 deg// yaw 32768 = 0 deg// yaw 65535 = 180.00 degAngleY=-((((float)yaw*360)/65535)-180)-AngleY0;// pitch range is 20025 - 45511, head up-down// pitch 45511 = 70 deg// pitch 20025 = -70 deg// it must be minus from some reason ??AngleX=-(((float)pitch*360)/65535)+180-AngleX0;// roll shuld handled as pitchAngleZ=(((float)roll*360)/65535)-180-AngleZ0;}}//-----------------------------------------------------------------------------

Podebljanim slovima oznaene su funkcije koje daju orijentacijske kutove. Ukoliko je detektiran InterSense dava orijentacije funkcija ISD_GetTrackerData( handle, &data ) oitava orijentaciju i poloaj i sprema ih u strukturu data.ISD_DATA_TYPE data;typedef struct{float Orientation[4]; /* Supports both Euler and Quaternion formats */float Position[3]; /* Always in meters */...

} ISD_STATION_DATA_TYPE;

typedef struct{ISD_STATION_DATA_TYPE Station[ISD_MAX_STATIONS];

} ISD_DATA_TYPE;

Varijabla Orientation[4] sadri vrijednosti trenutnog zakreta glave oko prostornih osi i vrijednosti tih kutova su izraene u stupnjevima. Varijabla Position[3] daje koordinate pozicije ukoliko se radi o davau orijentacije i pozicije (6DOF - dava ima 6 stupnjeva slobode).Ako je VFX 3D dava orijentacije ranije detektiran funkcija VFXGetTracking( &yaw, &pitch, &roll) oitava kutove i sprema ih u varijable prostornih kutova yaw, pitch i roll. Te vrijednosti tipa long potrebno je naknadno pretvoriti u stupnjeve, kao to je prikazano u kodu. Konane ispravljene vrijednosti kutova spremaju se u varijable float AngleX, float AngleY i float AngleZ.

6.2.3. PREKID KOMUNIKACIJEPrilikom naputanja aplikacije potrebno je osloboditi dava orijentacije. Ovdje je izesen dio koda kojim se to ostvaruje://-----------------------------------------------------------------------------if(TrackerDetected && Tracker==INTERSENSE_TRACKER){if(ISD_CloseTracker( handle )!=0)MessageBox(NULL,"Unable to free InterSense drivers" ,"Error", MB_ICONERROR);}

if(TrackerDetected && Tracker==VFX3D_TRACKER){if ( VFXFreeDll() != VFX_OK)MessageBox(NULL,"Unable to free VFX3D drivers", "Error", MB_ICONERROR);}//-----------------------------------------------------------------------------

Funkcija ISD_CloseTracker() ukoliko je uspjeno zatvorila InterSense dava orijentacije i oslobodila DLL vraa vrijednost 0, dok funkcija VFXFreeDLL() vraa vrijednost VFX_OK ukoliko je oslobodila VFX dava orijentacije i njegov DLL.

7. KORITENJE APLIKACIJE

Prije samog pokretanja aplikacije potrebno je imati instaliranu svu potrebnu opremu za prikaz virtualne stvarnosti. Ako su pravilno instalirani davai orijentacije, aplikacija prilikom pokretanja javlja poruku u sljedeem prozoru:

Iz ponuenog izbora biramo dava orijentacije koji emo koristiti. Ne moemo istovremeno koristiti dva davaa orijentacije. Ukoliko nije detektiran nijedan dava orijentacije moramo odabrati tipku "I don't want to use tracker". U tom sluaju moemo se koristiti tipkovnicom kako bi upravljali virtualnog promatraa.

Nakon toga otvara se osnovna forma sa glavnim izbornikom.

Sve postavke simulacije postavljene su na standardne vrijednosti tako da se simulacija moe odmah pokrenuti. Simulacija se pokree pritiskom na kombinaciju tipki Ctrl+R ili iz glavnog izbornika (Simulation->Run).

Simulacija se zaustavlja sa tipkom Esc ili iz izbornika (Simulation->Stop). Meta se poinje kretati pritiskom na funkcijsku tipku F3, a zaustavlja se sa tipkom F4. Snimanje kutova sa davaa orijentacije u memoriju pokree se sa tipkom F5, a zaustavlja sa F6. Ukoliko nije ukljuena opcija Save data to file podaci o kutovima se nakon zaustavljana simulacije nee spremiti u izlaznu datoteku. U standardnim postavkama nije ukljuena ova opcija tako da u ovom sluaju podaci nee biti spremljeni.

Unutar ovog prozora nalaze se informacije o trenutnom okviru. To su brzina simulacije (izraeno u FPS), orijentacija i poloaj promatraa, vektor smjera gledanja i vektor koji opisuje metu, vrijeme proteklo od poetka snimanja kretanja promatraa i ukupna, vertikalna i horizontalna pogreka.

Prozor za mijenjanje postavki dobijemo u glavnom izborniku klikom na Simulation -> Options.

Prozor sa postavkama sastoji se od vie okvira (panela). U okviru Screen Mode odabiremo rezoluciju zaslona na kojoj e se izvravati simulacija. Prilikom zaustavljanja simulacije vraamo se u standardnu rezoluciju. Za sve rezolucije osim standardne radi se sa 16 bitnom bojom.

U okviru Target odabiremo nain kretanja mete (targeta). Sa prva dva radio gumba unutar ovog okvira odaberemo jednu od dvije ponuene parametarske krivulje po kojima se kree meta. Ispod Target okvira podeavamo amplitude i krunu frekvenciju (w) za zadanu krivulju. Treim radio gumbom odabiremo skokovito kretanje mete. Za to je potrebno unutar okvira Target file odabrati neku ulaznu datoteku u kojoj su definirani poloaji mete tijekom simulacije.

Opcijom Show info prikazujemo informacije o trenutnom okviru za vrijeme simulacije. Opcijom Extended sight mijenjamo vidljivost proirenog kursora. Toka u koju gledamo oznaena je sa kursorom koji se sastoji od tri osi. Tako korisniku sa HMD-om bez obzira na njegov poloaj plava os uvijek predstavlja vertikalu, zelena os horizontalu, a crvena dubinu tj. smjer z osi. Sa opcijom Show Origin postaje vidljivo ishodite koordinatnog sustava scene.

U okviru Simulation odabiremo datoteku u koju e se spremati podaci o poloaju i orijentaciji promatraa. U polje Number of data blocks unosimo broj blokova simulacije koji emo snimiti. Svaki blok ima 1024 okvira (framea).

U okviru Model navodimo datoteku u kojoj se nalazi model glave i podeavamo parametre za osvjetljenje, sjenanje i boju tog modela. Ovaj model zorno prati trenutnu orijentaciju glave.

Datoteka u kojoj je opisana scena odabire se u okviru Scene. Za sada izraene su tri razliite virtualne scene "simple scene.txt", "room.txt" i "new world.txt". Izraena je posebna aplikaciju za modeliranje scene "new world.txt". Ova aplikacija opisana je u dodatku C.

Slika 7.1. Simple Scene

Slika 7.2. Room

Slika 7.3. New world

Klikom na dugme Tracker u okvir tracker otvara se prozor sa postavkama davaa orijentacije.

Kada korisnik postavi glavu u normalni poloaj sa tipkom Reset angles sva tri kuta postavljamo na 0. Sa tipkama Start test i Stop test moemo testirati da li dava orijentacije ispravno radi. Sa tipkom Configure dobivamo detaljnije podatke o konfiguraciji davaa orijentacije ukoliko je jedan od modela serije Intersense.

Po zavretku simulacije datoteku sa izmjerenim podacima o pokretima glave otvaramo iz glavnog izbornika klikom na View->Data.

8. DIJAGRAM TOKA PROGRAMA

Slika 8.1. Dijagram toka programa

Aplikacija se moe podijeliti u nekoliko vanijih programskih blokova kao to je prikazano na slici 8.1. Svaki od ovih blokova poziva se sa nekim dogaajem, koji moe biti aktiviran od strane korisnika ili od samog operativnog sustava.

Kod pokretanja aplikacije, nakon to je kreirana osnovna forma, poziva se blok, tj. funkcija FormCreate(). U ovom bloku inicijalizirane su globalne varijable osnovne forme. Kod zatvaranja aplikacije na identian nain poziva se funkcija FormDestroy(). U ovom bloku oslobaamo zauzetu memoriju, oslobaamo dava orijentacije ukoliko je detektiran, oslobaamo OpenGL prozor i vraamo radnu rezoluciju monitora.

Korisnik generira dogaaje kao to su pokretanje i zaustavljanje simulacije, otvaranje forme sa postavkama, otvaranje forme sa izlaznim podacima, zatvaranje aplikacije i slino. Pokretanje simulacije alocira potrebnu memoriju, ita podatke o virtualnom svijetu iz ulaznih datoteka, otvara OpenGL prozor za iscrtavanje i postavlja parametre scene kao to su osvjetljenje, nain sjenanja itd. Zaustavljanje simulacije je obratno. Oslobaa se alocirana memorija i zatvara se OpenGL prozor.

Slika 8.2. Zaustavljanje simulacije

U aplikaciji postoji i blok ApplicationEvents1Idle() koji nije izazvan nijednim dogaajem i koji se uvijek izvrava. U njemu se nalazi sama petlja simulacije koja se poziva ukoliko je korisnik pokrenuo simulaciju i ako je zavreno iscrtavanje trenutnog okvira. Petlja simulacije oitava orijentaciju korisnika sa davaa orijentacije, oitava akcije sa tipkovnice, rauna pogreke praenja mete, rauna proteklo vrijeme od poetka simulacije, sprema traene podatke trenutnog okvira u memoriju, iscrtava scenu na zaslon i provjerava da li je gotova simulacija.

Slika 8.3. Simulacija jednog okvira

U ovom istom bloku izvrava se testiranje davaa orijentacije koje je pokrenuto iz prozora sa postavkama.

Da korisnik ne mora traiti unutar postavki kako da detektira dava orijentacije to je uinjeno prilikom samog pokretanja aplikacije. Ovo se pokazalo i puno praktinijim rjeenjem kod izvoenja veeg niza mjerenja sa istim davaem orijentacije.

9. OPIS ULAZNIH I IZLAZNIH DATOTEKA

9.1. ULAZNE DATOTEKEJedna od ulaznih datoteka je datoteka sa opisom modela glave. Prilikom izvoenja simulacije poloaj modela glave odreen je poloajem davaa orijentacije. Datoteka koja predstavlja model glave ima ovakvu strukturu (model_glave.ob):

broj toaka nbroj poligona p

x0 y0 z0x1 y1 z1...xn yn zn

V00 V01 V02V10 V11 V12...Vp0 Vp1 Vp2

Ovaj model predstavljen je skupom od n toaka i svaka toka ima koordinate x, y i z. Poligoni su trokuti iji su vrhovi upravo u skupu zadanih toaka. Ukupno postoji p poligona u modelu. Svaki vrh poligona predstavljen je jednom tokom. Npr. ukoliko je V71=5 to znai da e prvi vrh sedmog poligona biti toka opisana koordinatama (x5,y5,z5).

Ostale parametre modela kao to su boja modela, tip sjenanja, izvor svjetlosti za model itd. korisnik moe podeavati u aplikaciji. Primjer modela glave koji se nalazi u datoteci glava.ob sastavljen je od 5828 vrhova i 11370 poligona. Simulacija dosta gubi na brzini ukoliko se iscrtava ovaj model glave na zaslon, a to ba i nije poeljno jer se tako korisniku znatno oteava kretanje i snalaenje u sceni. Veliina te datoteke je 340 KB.

Slika 9.1. Mrea poligona koji ine model glave

Druga ulazna datoteka je datoteka sa kojom se popunjava struktura virtualne scene (opis_scene.txt).//komentari se mogu stavljati u datoteci sa//dvije kose crte na poetku reda//slobodno se mogu preskakati redovi//datoteka ima nastavak .txtbroj teksturaNUMTEXTURES ntex

//datoteke iz kojih se itaju tekstureFILE ime0.bmpFILE ime1.bmp...FILE imentex.bmp

//broj objekata u sceniNUMOBJECTS nobj

//pozicija promatraaPOSX: pozx POSY: posy POSZ: posz

//opis objektaOBJECT 0{//opcionalno izvoenje opengl naredbi za zadani objekat[OPENGL_COMMANDS numcomm{openglcommand0(parametri)openglcommand1(parametri)...openglcommandnumcomm(parametri)}]TEXTURE t0NUMVERTEX nver0NUMPOLIES npol0POSITION x0 y0 z0

x0 y0 z0 u0 v0x1 y1 z1 u1 v1...xnver0 ynver0 znver0 unver0 vnver0

V00 V01 V02V10 V11 V12...Vnpol00 Vnpol01 Vnpol02}...//opis zadnjeg objektaOBJECT nobj{...}Za razliku od modela glave jedan objekt u sceni sastavljen je od vertexa. Vertex je predstavljen koordinatama x,y,z i sa dva parametra u i v. Parametri u i v govore koja toka u nekoj teksturi pripada zadanom vrhu. Svaki objekt ima indeks na pripadnu teksturu koja je zapisana u slikovnoj (bitmap) datoteci i za svaki objekt na sceni mogu se dodati i neke OpenGL naredbe koje se izvravaju u kodu prije samog iscrtavanja dotinog objekta.

Primjer ulazne datoteke je new_world.txt. Sastoji se od 4 objekta, 4 teksture i 363 vertexa. Veliina datoteke je 19 KB. Sve slikovne datoteke moraju se nalaziti u istoj mapi u kojoj je datoteka sa opisom scene. Primjer datoteke sa opisom scene u kojoj su raena mjerenja nalazi se u dodatku A.

Ukoliko ne elimo da se meta ne kree po tono definiranoj matematikoj krivulji nego da se skokovito kree po zadanim tokama potrebno je u postavkama ukljuiti opciju Custom step i odabrati ulaznu datoteku sa zadanim tokama i vremenima zadravanja u svakoj toki.

Opis ulazne datoteke za kretanje mete:

NUMPOSITIONS N t0 x0 y0 z0t1 x1 y1 z1...tN xN yN zN

Primjer ulazne datoteke je target.txt i nalazi se u dodatku B.

9.2. IZLAZNE DATOTEKE

Za vrijeme izvoenja simulacije sve informacije o trenutnom poloaju davaa orijentacije spremaju se u memorijski meuspremnik (buffer). Na kraju simulacije meuspremnik se moe spremiti u odabranu izlaznu datoteku. Ovako izgleda struktura izlazne datoteke:

AngleX0 AngleY0 AngleZ0 Timer0 V0 H0 Error0 Theta0 Fi0AngleX1 AngleY1 AngleZ1 Timer1 V1 H1 Error1 Theta1 Fi1...AngleXNB*1024 AngleYNB*1024 AngleZNB*1024 TimerNB*1024 VNB*1024 HNB*1024 ErrorNB*1024 ThetaNB*1024 Fi NB*1024

Svaki redak predstavlja poloaj davaa orijentacije i vrijeme koji su uzeti u jednom okvir (frameu). Poloaj davaa orijentacije prikazan je kutovima AngleX, AngleY i AngleZ koji su izraeni u stupnjevima. Vrijeme je prikazano u sekundama na tri decimale. Vrijeme je precizno izmjereno pomou frekvencije procesora i njegove vremenske konstante. Vertikalno i horizontalno kutno odstupanje oznaeno je sa V i H i takoer je izmjereno u stupnjevima. Apsolutna kutna pogreka oznaena je sa Error. Smjer mete odreen je sa dva kuta Theta i Fi.

Trajanje simulacije odreeno je brojem blokova od 1024 okvira (framea), pa onda izlazna datoteka ima NBlocks*1024 redaka, ukoliko snimanje poloaja glave nije prije prekinuto (prekida se sa funkcijskom tipkom F6).

Primjer izlazne datoteke je sinstep30.txt i nalazi se u dodatku D.10. REZULTATI

10.1. KANJENJEKanjenje, u virtualnim sustavima, definirano je kao vrijeme izmeu korisnikove akcije i odgovora sustava na tu akciju. Ovo ukupno, ili sustavno kanjenje, moemo izraziti kao sumu pojedinih vremenskih kanjenja:

Ukupno kanjenje = Senzorsko kanjenje + Procesorsko kanjenje + Vrijeme za obradu slike

Senzorsko kanjenje je vrijeme potrebno da senzor interno izrauna poloaj i dok raunalo ne primi taj podatak. Obino je ovo kanjenje vrlo malo.

Pod procesorskim kanjenjem podrazumijevamo procesorsko vrijeme za pojedina izraunavanja kao to su npr. odreivanje novog poloaja objekta zbog njegovih fizikih osobina, detektiranje sudara, itd.

Vrijeme za obradu slike odnosi se na vrijeme za izvravanje grafikog algoritma i samo iscrtavanje na zaslon. Grafiki algoritam podrazumijeva odsijecanje nevidljivih objekata, projekcija koordinata, odbacivanje stranjih lica poligona, sortiranje po dubini, sjenanje, osvjetljavanje scene, dodavanje tekstura itd. Ovo vrijeme najvie ovisi o brzini grafikih 3D procesora.

Kod vieprocesorskih virtualnih sustava ukupno kanjenje je vee jer je potrebno odreeno vrijeme za sinkronizaciju umreenih raunala.

Korisnici su jako osjetljivi na kanjenje. Mogu tolerirati kanjenja maksimalno do granice od 100 milisekundi. U simulatorima letenja donja granica kanjenja za pilote je 60 ms. Sve iznad granice od 100 ms moe imati razne posljedice. Jedna od takvih je i simulatorska bolest koja uzrokuje muninu, bljedilo i hladan znoj. Brzina manja od 15 okvira po sekundi smanjuje osjeaj prisutnosti zbog ega virtualni sustavi gube svoju funkcionalnost. Zanimljiva metoda mjerenja virtualne prisutnosti je ispitivanje koliko korisnici pamte podatke iz jedne i iz druge stvarnosti. Naime, klasina istraivanja pamenja pokazala su da ljudi u odreenim uvjetima teko mogu razlikovati stvarne od zamiljenih dogaaja. Npr. film koji pogledamo neemo toliko jako doivjeti, ili neemo uzeti toliko u obzir njegovu pouku, kao to bi za neki slian stvarni dogaaj. Isto tako, ljudi e razliito pamtiti informacije iz virtualne i prave stvarnosti. Meutim ako je virtualna stvarnost bila uvjerljiva korisnici, tj. ispitanici e se teko sjeati da li je neka informacija bila iz realnog ili virtualnog svijeta [Patrick, 2002].

Neki korisnici, zbog svojih psihikih problema i strahova odmah na poetku virtualne simulacije odustaju. U virtualnim sustavima koji se koriste za lijeenje ovakvih bolesnika scenu je potrebno prilagoditi samom korisniku.

Dobar nain na koji se moe znatno smanjiti kanjenje je predikcija pokreta . Unutar davaa pozicije integrira se sklop koji moe odrediti budui poloaj na temelju nekih fizikalnih pravilnosti po kojima se ovjek kree. Npr. ovjek nema nagle pokrete vrata, nego ima neku prosjenu vlastitu frekvenciju pokreta to moe olakati predikciju. Takoer, predikcija pokreta moe se i primijeniti kod obrade slike tako da se promatraju kretanja pojedinih piksela na zaslonu.

Kod manje kvalitetnih LCD zaslona nije potrebna velika razina detalja, visoka razluivost i tu se takoer moe dobiti na raun brzine.Jo jedno od zanimljivih i efikasnih rjeenja je raspodijeljenost obavljanja zadataka kod vieprocesorskih sustava (Division Ltd.?s PROvision systems i Silicon Graphics).

Mjerenje kanjenja u virtualnim sustavima je u praksi dosta zahtjevan posao. Jedan od naina da se izmjeri kanjenje je video metoda. Korisnik i zaslon se snimaju kamerom te se analizom video snimke moe utvrditi ukupno kanjenje.

10.2. POGREKA PRAENJA METEIz dobivenih izlaznih datoteka moemo prikazati na dijagramu ovisnost pogreke praenja mete o ukupnom kanjenju za prosjene korisnike. Pod tim podrazumijevamo da korisnici nemaju znatnijih zdravstvenih problema sa kretanjem vrata, refleksima, vidnih i psihikih potekoa. Sva mjerenja raena su pri rezoluciji 640x480 na raunalu AMD Duron 800 MHz, sa PCI grafikom karticom NVIDIA RIVA TNT2 Model 64 koja ima 16 MB RAM-a.

Na slici 10.2. prikazan je tijek mjerenja pogreke jednog korisnika pri razliitim kanjenjima sustava. Korisnik mora pratiti metu koja se kree po tono definiranoj krivulji. Za mjerenje odabrana je prostorna sinusna funkcija koja se nalazi na polukugli (Slika 10.1.). Minimalno kanjenje koje sam uspio postii je oko 21 ms (46 FPS), a gornja granica do koje su raena mjerenja je 500 ms (2 FPS). Mjerenje je raeno u jednostavnoj sceni i trajalo je 50 sekundi. Razliitim bojama oznaene su pogreke za razliite brzine.

Slika 10.1. Praenje mete koja se kree po prostornoj krivuljiSlika 10.2. Mjerenje pogreke za razliite FPS

Ovo mjerenje napravljeno je za tri razliita korisnika. Na slici 10.3. prikazana je prosjena pogreka ovih korisnika pri razliitim kanjenjima.

Slika 10.3. Ovisnost pogreke o kanjenju za tri razliita promatraa kod kretanja mete po neprekidnoj krivulji

Iz dijagrama se vidi da brzine vee od 25 FPS jako slabo utjeu na srednju pogreku praenja to znai da je ova brzina sasvim dovoljna za vizualizaciju virtualne scene. Smanjivanje brzine ispod 25 FPS utjee na poveanje srednje pogreke. Pogreku moemo tolerirati za vrijednosti manje ili jednake 5. Pretpostavit emo da bi ova vrijednost srednja pogreke bila i u nekakvom realnom sustavu, iako bi se i u takvom sustavu trebala izvesti identina mjerenja.

Treba napomenuti da je kod vrlo visokog kanjenja dolo do nelagodnosti korisnika, bolova u stomaku, znojenja, ak i do toga da se je jedno mjerenje moralo ponoviti zbog skidanja HMD-a.

Mjerenja bi bila puno vjerodostojnija da nisu raena samo za jednu krivulju ili da je krivulja kod svakog mjerenja sluajno generirana. Korisnik u tijeku mjerenja naui kretanje mete pa zbog toga radi manju pogreku. Mjerenja su poela sa veim brzinama prema manjim, pa tako pretpostavljam da bi korisnik da ne poznaje kretanje mete, radio jo veu pogreku pri malim brzinama.

Druga serija mjerenja napravljena je za praenje mete koja skokovito prelazi sa jednog mjesta na drugo uz kratko zadravanje. Opis kretanja mete nalazi se ulaznoj datoteci target.txt. Meta skae na 33 razliite pozicije tako da korisnik ve malo tee pamti redoslijed tih pozicija pa su ova mjerenja vjernija.

Slika 10.4. Ovisnost pogreke o kanjenju za tri razliita promatraa kod skokovitog kretanja mete

Svako mjerenje trajalo je oko 100 sekundi. Iz slike se vidi da pogreka kod malih kanjenja blago opada, a za velika kanjenja naglo raste.

Openito, da bi neki virtualni sustav bio primjenjiv mora biti zadovoljeno da prosjeni korisnik ne radi ukupnu pogreku veu od neke kritine vrijednosti. Npr. ako je kritina vrijednost pogreke 7, minimalna brzina virtualnog sustava trebala bi biti barem 20 FPS. Moemo takoer zakljuiti da se ova krivulja asimptotski pribliava nekoj vrijednosti pogreke. Veliina ove konane vrijednosti takoer moe biti mjera koliko je dobar nekakav virtualni sustav.

Meutim, da bi znali razlikovati kvalitetu virtualnog od realnog sustava moramo na neki nain izmjeriti srednju pogreku koju bi isti korisnici radili u identinom realnom sustavu to i nije ba jednostavno. Jedan od naina kako bi se ovo moglo izmjeriti je da se na udaljenoj ravnini projiciraju slike mete, a da se snime pokreti korisnika sa davaem orijentacije. Korisnik bi trebao gledati kroz prozirno staklo na kojem je ucrtan krii za nianjenje. Tako bi izbjegli kanjenje koje, osim tehnike vizualizacije scene, znatno utjee na kvalitetu percepcije virtualne stvarnosti.

11. PRIMJENA VIRTUALNE STVARNOSTI CAVE - koriten u studentske svrhe za vizualizaciju matematike i ostalih znanosti, kupovanje po virtualnim trgovinama

distribuirani virtualni sustavi koriste se za treniranje i uenje u vojnim simulatorima (NPSNET - naval postgraduate school, SIMNET - simuliranje upravljanja tenkova, NASA)

medicina - uenje anatomije, simuliranje operacije, telekirurgija - operacija se izvodi sa udaljenog raunala u realnom vremenu, rehabilitacija - ispitivanja kognitivnih sposobnosti bolesnika

strojarstvo - sastavljanje i simulacija rada strojeva, simuliranje rada robota

automobilska industrija - dizajniranje, simuliranje vonje, ispitivanje ergonomskih svojstava, testiranje izdrljivosti

molekularne manipulacije - istraivanje i manipulacija sa malim strukturama (npr. virusi), uveanja do milijun puta, Nanomanipulator projekt na sveuilitu u Sjevernoj Karolini

psihologija - lijeenje strahova, kretanje po virtualnoj sceni uz kontrolu i savjetovanje psihologa, prouavanje ponaanja bolesnika, koriste se i virtualne scene koji imaju oputajui uinak. Meutim, ovo podruje je jo uvijek nesigurno i nedovoljno ispitano i ostaje otvoreno pitanje da li virtualna stvarnost moe i tetiti ljudskoj psihi (npr. neka ispitivanja su pokazala da ljudi koji ve imaju nekakva iskustva sa virtualnim okruenjima pokazuju u novim virtualnim okolinama slabije snalaenje od onih koji nemaju nikakvog iskustva)

mala prenosiva raunala i prozirni HMD-ovi - kretanjem u snimljenoj okolini dobivamo informacije i instrukcije na prozirnom zaslonu, npr. u razliitim tehnikim servisima mogu olakati obavljanje poslova

vizualizacija arhitektonskih objekata, geografskih terena, sunevog sustava, kemijskih struktura, muzeja (npr. kupci prije kupnje nove kue mogu je virtualno isprobati, ili npr. virtualni muzej ili kazalite se uope ne moraju fiziki izgraditi)

simuliranje vremenskih nepogoda, ispitivanje svojstava modela u razliitim uvjetima (npr. simulacijom testiran Boeing 777 u zranom tunelu)

Cyberspace - letenje kroz virtualnu scenu sa gdje trodimenzionalne ikone imaju pridrueno znaenje i na koje djelujemo posebnim operatorima (npr. simulacija virtualnog trita, virtualna navigacija po internetu)

vizualizacija i simulacija rada kompleksnih komunikacijskih mrea

zbog sve manje cijene virtualni sustavi koriste se i radi zabave

12. DALJNJI RAZVOJ APLIKACIJE

Ovdje bih htio spomenuti nerealizirane ideje koje su se pojavile za vrijeme razvoja aplikacije, a koje su sastavni dio virtualne stvarnosti. svakako bi se trebao uvesti algoritam za izbacivanje skrivenih objekata jer se gubi puno vremena na iscrtavanje. S time bi se najvie smanjilo kanjenje. uvesti algoritam za detekciju kolizije, za ostvarivanje gravitacije i drugih sila implementirati funkcije za uitavanje gotovih modela izraenih sa programskim alatom 3D studio MAX. Funkcije ve postoje, a u zadnji as sam ih skinuo sa interneta. osim pozicije objekata treba im dati informaciju o orijentaciji, trenutnoj brzini, svojstvima materijala, pa ak pridruiti im adekvatne zvukove (za zvunu podrku razvijeni su neki alati poput OpenAL-a). Promatra moe objekte, iako ih ne vidi, locirati po zvuku odakle dolazi. u ulaznoj datoteci scene trebali bi se navesti neki osnovni parametri scene kao to su npr. pozicije svjetala, nain sjenanja, ravnina odsijecanja, magla, nain postavljanja tekstura i slino. kod mjerenja akcija promatraa skrila se mala pogreka jer nije uzeto u obzir pomicanje centra rotacije kod inklinacije i elevacije glave promatraa aplikacija istovremeno moe raditi samo sa jednim davaem orijentacije. Bilo bi puno zanimljivije da vie korisnika moe doi u interakciju. takoer, napraviti aplikaciju koja e raditi u umreenim sustavima

13. ZAKLJUAK

Primarni cilj diplomskog zadatka u potpunosti je ostvaren. Izraena je aplikacija u kojoj se promatra kree po virtualnoj sceni i izvedena su mjerenja koja pokazuju koji uvjeti trebaju biti zadovoljeni da se virtualni promatra osjea neometan i virtualno prisutan.

Meutim, percepcija izraene virtualne stvarnosti jo uvijek je daleko od prave stvarnosti. irina vidnog polja od 30, titranje slike, zujanje u kacigi, kanjenje sustava, ogranienost kretanja zbog duljine kablova, samo su neki detalji koji ne ostavljaju savren dojam prave realnosti i koji za ovjeka mogu imati negativne psihofizike uinke. Ovakva virtualna stvarnost, sa slinim ulazno-izlaznim ureajima, kao to je u radu opisano, nala je svoju veliku primjenu na razliitim podrujima ljudskih djelatnosti.

Iako smo jo uvijek daleko od "prave" virtualne stvarnosti, tehnologija svojim napretkom poveava realnost u virtualnim sustavima. Razvijaju se bre i kvalitetnije grafike kartice, izrauju se HMD-ovi sa sve veim vidnim poljem , vrlo fascinantan virtualni sustav CAVE i dalje se poboljava, izrauju se sve manja prijenosna raunala, virtualna stvarnost polako ali sigurno postaje prava stvarnost.

U budunosti moemo oekivati da e raunala komunicirati direktno sa mozgom i da emo na taj nain u potpunosti imati percepciju virtualnog svijeta . Uz pretpostavku da to raunalo ima vezu sa internetom, postavlja se pitanje koliko je ovjek u biolokom i psihikom smislu spreman adaptirati percepciju u visoko razvijenoj umjetnoj stvarnosti.

U kontekstu razvoja tehnologije, zanimljiva je i teza da je ovjek ve dio virtualnog sustava, a da toga moda nije ni svjestan, ili da bi ovjek uz pomo tehnologije mogao stvoriti virtualne osobe koje nee biti svjesne prave stvarnosti. Sa takvog stajalita nije potrebno stavljati naglasak na pravu stvarnost, nego istaknuti injenicu da je neto stvoreno.

14. LITERATURA

[Vince, 1995] J. Vince, Virtual Reality Systems, ACM Press, Cambridge, 1995.

[Wright, 2000] R. S. Wright, M. Sweet, OpenGL SuperBible, Second Edition, Waite Group Press, Indianapolis, 2000.

[Red Book] The Red Book, Addison-Wesley Publishing Company, http://fly.srk.fer.hr/~unreal/theredbook

[Reddy, 1997] M. Reddy, Perceptually Modulated Level of Detail for Virtual Environments, 1997. [PDF]

[He, Liu] D. He, F. Liu, G. dawe, D. Sandin, Video-based Measurement of System Latency [PDF]

[Jaekl] P. M. Jaekl, R. S. Allison, L. R. Harris, Perceptual Stability during Head Movement in Virtual Reality [PDF]

[Allison] Robert S. Allison, Laurence R. Harris, Michael Jenkin, Tolerance of Temporal Delay in Virtual Environments [PDF]

[Ware] C. Ware, R. Balakrishnan, Reaching for Objects in VR Displays: Lag and Frame Rate [PDF]

[Welch] G. welch, Tracking in Virtal Environments [PDF]

[Bachman, 2000] E. R. Bachman, Inertial and Magnetic Angle Tracking of Limb Segment Orientation for Inserting Humans into Synthetic Environments, 2000. [PDF]

[Gobbeti] E. Gobbeti, R. Scuteni, G. Zanetti, Head and Hand Tracking Devices in VR [PDF]

[Nelson] W. T. Nelson, M. Roe, R. S. Bolia, R. M. Morley, Assesing Simulator Sickness in a See-trough HMD: Effects of Time Delay, Time on Task and Task Complexity [PDF]

[Isdale] J. Isdale, What is Virtual Realityhttp://www.isx.com/~jisdale/WhatIsVr.html

[MSDN] Microsoft Developer Network Library ? Microsoft Visual Studio 6.0

[SGI, 1997.] Silicon Graphics Incorporated, OpenGL for Windows, User guide, 1997.http://www.sgi.com

[Isense] http://www.isense.com

[NeHe] http://nehe.gamedev.net

[Rudy] Rudy Darken, Michael Zyda, Introduction to Virtual Reality [PDF]

[GRC, 1995] General Reality Company, Virtual Reality, State of the Art and Key Chalenges, WESCON, 1995.

[KTH] Center for Parallel Computers, KTH, An Introduction to and History of Virtual Reality, http://www.pdc.kth.se

[VRL] K. P. Beier, Virtual Reality: A Short Introduction, University of Michigan, Virtual Reality Laboratory at the College of Engineering, http://www-vrl.umich.edu/index.html

[Chris] Chris Shaw, Introduction to Virtual Reality and Virtual Environments, Georgia Institute of Technology

[Glenn] G. Chappell, Introduction to Virtual Reality and the CAVE

[CSEO] Computer Science Educational Outreach, Interactive Virtual Reality,http://www.cs.unc.edu/outreach/vr/intro.html

[Cohen] J. Cohen, Introduction to Virtual Reality [PDF]

[Lastra, 1996] A. Lastra, H. Fuchs, Introduction to Virtual Reality, SIGGRAPH, 1996. [PDF]

[Marquez, 2002] J. J. Marquez, An Introduction to Virtual Reality, 2002. [PDF]

[Reynard] Gail Reynard, Multimedia Telepresence and Introduction to Virtual Reality

[Chuang, 1999] J. H. Chuang, Introduction to Virtual Reality Technologies and Applications [PDF]

[Lonari] S. Lonari, Virtualna realnost: Osnove i primjene [PPT]http://helga.zesoi.fer.hr

[Hullfish] K. Hullfish, How Real is Virtual Reality http://www.hitl.washington.edu/publications/hullfish/home.html

[Satalich] G. A. Satalich, Navigation and Wayfinding in Virtual Reality: Finding Proper Tools and Cues to Enhance Navigation Awareness http://www.hitl.washington.edu/publications/satalich/home.html

[Furness] T. A. Furness, D. F. Kocian, Putting Humans into Virtual Space http://www.hitl.washington.edu/publications/index.html

[Patrick, 2002] A. Patrick, The Psychology of Virtual Presence: Research Ideas, 2002. http://www.iit.nrc.ca/~patricka/virtual-presence/presence-ideas.html

[NIST, 1995] National Institute of Standards and Technology, Virtual Environments for Health Care, 1995.

http://www.itl.nist.gov/iaui/ovrt/projects/health/vr-envir.htm

http://vr-atlantis.com/vr_systems_guide/vr_systems_list2.html

http://www.eureka.findlay.co.uk/archive_features/Arch_Cad/vrball/vrball.htm

http://www.ia.hiof.no/~michaell/home/vr/VirtualReality.htmlDODATAK A.Ulazna datoteka virtualne scene - SimpleScene.txtDODATAK B.

Datoteka Target.txt sa definiranim pozicijama mete koja je koritena u mjerenjima.DODATAK C.

Aplikacija za izradu virtualnih scena - MapEdit 1.0

DODATAK D.

Skraeni primjer izlazne datoteke nakon snimanja promatraa na 30 FPS (kreso30.zip)