599
Jorden tester

Misselijkheid voorkomen in VR

Jorden Bakker werkt als Test Automation Engineer, maar eerder liep hij al stage bij Sogeti en deed hij een interessant onderzoek. Namelijk hoeveel invloed het heeft om de user experience (UX) te veranderen in een VR omgeving om misselijkheid te voorkomen. Hierbij kreeg hij hulp van Robin Kos wie RPA Engineer is en de omgeving heeft gemaakt. Lees hieronder het onderzoek en de bevindingen.

Innovatie bij SogetiLabs

Innovatie vraagt om een energieke portie ‘durven’, want we weten niet altijd wat de uitkomst zal zijn. Gelukkig houden wij daarvan. Als SogetiLabs zijn wij een laboratorium van innovatie: bedenken, ontwerpen en uitvoeren. Creativiteit is hierin ons alchemistisch proces. Binnen een helder uit 599 gezet en goed doorgrond kader zetten wij geijkte en vernieuwende middelen in om tot goud te komen. Of je nu op zoek bent naar een toepasbare oplossing of blik op toekomst, wij brengen de juiste ingrediënten voor innovatie bijeen.

Misselijkheid in VR

Virtual Reality is een hot topic dat de laatste tijd niet uit de social media lijkt weg te slaan. Er zijn nog wel een hoop vragen die druk worden onderzocht. Bijvoorbeeld: hoe belangrijk het UX-design is in het voorkomen van misselijkheid in VR. Hiervoor kwam een ambitieuze student van de Universiteit in Utrecht, Jorden Bakker, naar Sogeti met het idee om een testomgeving te maken zodat hij kon uitzoeken hoeveel invloed het heeft om de user experience (UX) te veranderen om misselijkheid te voorkomen. Ondertussen heeft Jorden zijn stage en school succesvol afgrond en werkt hij nu bij Sogeti als test automation engineer.

Voordat dit getest kan worden, is er wel een testomgeving nodig. Om die te maken, is er gebruik gemaakt van de Unity game engine, een veelzijdig stuk software waar veel indie games mee worden gemaakt. In de laatste jaren is er ook steeds meer ondersteuning voor Virtual Reality, dus het is niet extreem moeilijk meer om ook zelf te ontwikkelen met deze game-engine.

Er komt nog steeds wel erg veel kijken bij het maken van een driedimensionale werel 599 d. De game-engine doet een hele hoop werk, maar elk element, en ook alle functionaliteit die erachter zit moet door iemand worden gemaakt, en op de juiste plek worden gezet. Het is een complex proces dat begint met de eisen van de klant, in dit geval samengevat in een kleine schets.

Schets-VR

 

In deze situatie worden een paar elementen gebruikt die misselijkheid kunnen veroorzaken, waaronder het bewegen van de speler door een controller, bukken onder verschillende objecten, en het stilstaan op een lopende band. En natuurlijk wordt er ook op je geschoten in deze simulatie, dat kan niet ontbreken.

Prototype maken

Met een gelimiteerde tijd om de omgeving in elkaar te zetten, is het moeilijk om een prachtige simulatie neer te zetten, maar een simpel prototype is wel te behalen. De eerste stap is om de omgeving van de schets in delen op te zetten. In een prototype maak je vaak gebruik van “prefabs” een soort opgeslagen objecten die kunnen worden hergebruikt, waaronder voornamelijk kubussen, bollen, en cylinders die standaard in elk project zitten. Zo komt er snel vorm in het project.

VR-screenshot

 

Zoals te zien is op de screenshot, bestaat bijna alles uit cylinders, kubussen, en bollen. De combinatie van verschillende groottes en combinatie van een paar van deze verschillende vormen kunnen complexe voorwepren maken, zoals in dit geval gebruikt voor een prototype van het kanon, of een beveiligingscamera waar voorwerpen uitgeschoten worden.

VR-beveiligingscamera

 

Dan moet de speler nog iets kunnen doen. In dit geval zijn de vereisten simpel, de speler moet kunnen lopen, en rond kunnen kijken, en dit moet werken met een VR-Headset. De simulatie is ontwikkelt met een Oculus Quest 2, maar zou ook gebouwd kunnen worden voor andere headsets. Unity heeft tegenwoordig een goede ondersteuning voor VR, maar toch moet er nog wel wat worden ingesteld om hier mee te beginnen voordat de camera volledig werkt met de zes "degrees of motion" die een VR headset zoals de Quest 2 heeft.

De user experience testen

Om voor deze case goed te kunnen testen was het een vereiste dat het mogelijk was om benen onder je eigen 599 lichaam te kunnen zien in de simulatie. Plus om een neus te kunnen simuleren, of in dit geval het plaatje dat je hersenen normaal zien als je geen headset op hebt. En natuurlijk moeten deze opties ook aan en uit te zetten zijn vanuit de simulatie.

De neus is eenvoudig, er is alleen een object nodig, in dit geval een mooi 3D model van een neus die van de website Thingiverse afkomt en een klein beetje bewerkt is zodat het in Unity bruikbaar is. Dat object kan dan met het hoofd meebewegen door een script dat de rotaties en positie van dit object bepaald aan de hand van de rotatie en positie van de headset. Hierdoor plakt de neus op een vaste plek ten opzichte van de headset.

VR-neus

 

Dan is er nog een lichaam nodig, waarvan de armen en benen meebewegen met de persoon die zich in de simulatie bevindt. Dit is wat uitdagender, omdat de bewegingen van een heel lichaam moeten worden gesimuleerd aan de hand van maar drie referentiepunten. Om tijd te besparen, is "kyle" gebruikt, een model gemaakt door de developers van Unity zelf. Wel moet het hoofd ietwat verkleint om ruimte te maken voor de camera.

VR-lichaam

 

Nu moet er nog gebruik gemaakt worden van een hoop wiskunde om te bepalen waar alle ledematen heen moeten. De meest gebruikte methode heet "inverse kinematics". Hier worden een paar eindpunten gebruikt, die door een iteratie de rotaties van alle ledematen bepalen die vast zit aan een van deze eindpunten. Hierdoor kan de arm bewegen zoals die van de speler.

De benen zijn nog steeds een uitdaging, zelfs met deze mooie trucjes. Er zijn namelijk geen referentiepunten op de voeten, een vereiste voor deze methode. Dus moet er een combinatie gemaakt worden met deze methode en vooraf vastgezette animaties. Hoe dit in zijn werk gaat, gaat buiten de scope van deze korte beschrijving. 

Over trucjes gesproken, is de rolband in deze simulatie niet helemaal wat het lijkt. Als je door de situatie speelt voelt het alsof deze beweegt. Maar in de realiteit beweegt uitsluitend de textuur die wordt afgespeeld op de ondergrond, en beweegt jij zelf door krachten die extern op het speler-object worden toegepast. Dit is eenvoudiger om toe te passen en bespaart een hoop performance.

VR-parkour

 

Als laatste moeten er nog wat opties bijkomen om deze individuele elementen aan en uit te kunnen zetten. Een paar knopjes, en een paar scripts later is dat al snel geregeld.

VR-settings

 

Het is natuurlijk erg onhandig als de simulatie opnieuw moet worden opgestart elke keer dat de situatie helemaal wordt doorlopen. Dus een laatste additie is een restart button, die de speler weer terug brengt naar het begin van de scène.

VR-begin-scene

 

Mogelijkheden bij Sogeti

Ik hoop dat dit een inzicht geeft in wat er voor nodig is een om drie-dimensionale wereld in elkaar te zetten met behulp van de Unity game engine. Mijn naam is Robin Kos, en ik werk sinds kort bij Sogeti, dus heb je brandende vragen over VR-development, stuur gerust een berichtje. Ben je net zo enthousiast bent geworden als ik over alle mogelijkheden in de toekomst? Of benieuwd wat we allemaal nog meer doen bij SogetiLabs? Neem dan een kijkje op onze pagina. Of ben je benieuwd 599 welke mogelijkheden er voor jou zijn binnen Sogeti? Neem dan een kijkje op onze vacature pagina.

SogetiLabs    Vacatures

 

Kan ik je helpen?

Profielfoto Peter Rombouts SogetiLabs Technology Lead & SME Microsoft Development
Phone number: +31 886 606 600 599
0