VR ur utvecklarperspektiv

 

Vad är VR?

VR, Virtual Reality eller virtuell verklighet försöker ge en illusion av att man befinner sig i en annan värld genom att påverka sinnesorganen.

 

Sinnen som påverkas

Sinnena som påverkas är i huvudsak synen, hörseln och känseln i leder. I vissa flygsimulatorer påverkas även balanssinnet.

 

Varför använda VR?

Skälen till att använda VR är att det blir billigare och är mindre riskabelt. Man kan även skapa världar som inte finns i verkligheten.

I bästa fall innebär träning i VR-världen att man kan utföra motsvarande uppgifter i den verkliga världen. Man har då hög transfer.

 

Problem med VR?

De olika skärmarna och projektorerna kan leda till synfel, bl a p g a skillnader i modellen och verkligheten. I verkligheten bedömer vi avstånd med hjälp av perspektiv, dimma, stereoskopiskt seende, fokus och ögoninställning. I de flesta VR-system kan man inte använda alla dessa metoder, och hjärnan får därför motstridiga indata.

Datorerna är inte tillräckligt snabba att räkna om bilderna som visas och därför uppstår en fördröjning mellan inmatning och utmatning. Denna kan leda till yrsel och göra arbetet i den virtuella miljön svårt.

Eftersom man måste använda olika inorgan t ex mus eller styrspak så kommer inte interaktionen med föremålen vara precis som i verkligheten. Användargränssnittet kan komma i konflikt med användarens mentala modell: t ex att man klickar där man vill att ett föremål skall hamna, men att man istället skulle klickat på marken där föremålet skulle ställas.

 

Vad skall styras och mätas?

 

Representationsmodell

I ett VR-system måste man representera de rumsliga data. Det gör man med hjälp av en hierarki - en sorts strukturerad lista eller trädstruktur. Föremål som skall hänga ihop vid förflyttning motsvaras av olika pinnar på samma gren.

Ibland kan strukturen på den virtuella världen ändras under körning: t ex om man har ett bord med en bok på och en stol bredvid, och så flyttar man boken och lägger den på stolen. Om man då flyttar stolen så vill man att boken skall följa med. För att åstadkomma detta måste man ändra strukturen.

 

 


VRML

Ett språk utvecklat för att beskriva virtuella världar är VRML - Virtual Reality Modeling Language. VRML-filer är vanliga textfiler. I VRML-språket beskrivs den tredimensionella världen med hjälp av noder.

Språket liknar andra datorspråk som kan beskriva datastrukturer: t ex Java. Noderna kan vara av i huvudsak tre typer:

Många CAD-program kan spara till VRML-filer, men det är också möjligt att skriva dem för hand.

 

Händelsehantering

I VRML finns det speciella modifierarnoder som kan fånga upp händelser. De matar ut sina data på händelseutgångar, när användaren påverkar det objekt som de modifierar. En utgång kan sedan kopplas till ingångar på andra objekt. Det finns modifierarnoder för att klicka, dra, vrida, och rotera. En speciell typ av nod är tidsnoden: den skickar ut tid som ett flyttal.

Det finns en speciell typ av objekt som kan innehålla programkod: skriptnoden. Skriptnoder kan vara skrivna i JavaScript eller Java. Antingen kan koden ligga inbäddad i VRML-koden eller också kan den ligga i en länkad fil. Ett enkelt exempel är att koppla en tidsnods utgång till ingången på en skriptnod som beräknar positionen för en fallande boll och lägger ut denna på utgången. Skriptnodens utgång kopplas sedan till ingången på en förflyttningsnod - och bollen faller! Detta är ett exempel på hur kunskaper i mekanik kan göra den virtuella världen mer verklig.

Skriptnoder kan även kommunicera med andra skriptnoder på andra datorer. På så sätt kan man åstadkomma t ex nätverksspel.

 

Kollisionsdetektering

Med kollisioner kan man mena dels att användaren, eller snarare hans avatar, krockar med ett föremål i världen, dels att olika föremål krockar med varandra. Det finns stöd för den första typen av kollisioner i VRML, d v s man kan hindra att användare går genom väggar.

 

Ljud

I VRML kan man skapa ljudkällor och ljudspridare. En ljudkälla kan spela en MIDI- eller wav-fil. Ljudkällan kopplas till en ljudspridare, och för denna kan man ställa in ett inre område (i form av en ellipsoid) där ljudet spelas med samma volym i varje punkt, och ett yttre område (också i form av en ellipsoid) utanför vilket det är helt tyst. Mellan det inre områdets rand och det yttres rand så avtar ljudet med kvadraten på avståndet.

 

Ljus

Man kan ställa in ljuskällor som spotlights och nakna glödlampor. Ljuset får sedan lysa på föremålen som kan bestå av olika material med olika reflektionsegenskaper. Föremålen kan också vara klädda med länkade bilder: texturer. Skuggor tycks dock inte skapas av dagens VRML-visare, utan man får göra fuskskuggor genom att använda mörka platta föremål med lämplig form.

 

Grafikmotorer

Den långsammaste men mest realistiska renderingsmetoden är strålföljning. Den utgår från en tänkt film i en kamera och följer för varje punkt på filmen en stråle baklänges genom linsen till dess ljuskälla. Om strålföljningen t ex kommer till en speglande yta så studsar den och följer den inkommande strålen baklänges. Om strålföljningen slutar i en ljuskälla blir punkten på filmen ljus, annars mörkare. Det krävs bl a vissa kunskaper i optik för att skriva ett bra strålföljningsprogram. Realtidsrenderingen av VR-världen sköts av grafikmotorn. Att skriva grafikmotorer är en djupare nivå av programmering än den som kan göras i VRML.

 

Framtiden

För att VR-visare i framtiden skall bli snabbare och mer realistiska krävs det förbättringar i belysningsmodellerna, hur texturer läggs ut, och hur världen projiceras på skärmar.

Framtidens VR-visare kanske även klarar vågoptiska fenomen som färgskiftningar i oljefilmer, och ljudfenomen som eko och dopplereffekten, men det dröjer nog.

 

Boktips

 

Länkar

The Web3D Repository: http://www.web3d.org/vrml/vrml.htm
VR ur utvecklarperspektiv:
http://www.df.lth.se.orbin.se/~mikaelb/vr/

 

 

Fakta om planschen VR ur utvecklarperspektiv

Författare: Mikael Bonnier, mikael.bonnier@gmail.com
Datum: 11/2 2002 (Preliminär version redovisad 30/1 2002)
Handledare: Roy C. Davies
Kurs:
Att använda Virtual Reality, 5 p, vid Institutionen för Designvetenskaper, LTH, Lunds Universitet

 

Copyright © 2002 by Mikael O. Bonnier, Lund, Sweden. All rights reserved.