• No results found

Wanneer de pilaren van het scherm verdwijnen worden ze niet vernietigd, maar terug naar hun startlocatie verplaatst. Wanneer er terug een pilaar nodig is, wordt er één gebruikt uit de pilaren die terug in hun startpositie wachten. Dit principe heet pooling en zorgt ervoor dat objecten niet constant aangemaakt en terug vernietigd moeten worden. Verplaatsen is immers een minder kostelijke operatie dan het aanmaken en vernietigen van een object in de scene. Hoe het spel er in zijn geheel uitziet, is te zien op Figuur 3.3.

Figuur 3.3: Het Flappy Bird spel terwijl het gespeeld wordt

3.2 Transitie naar een serious game

De huidige Flappy Bird implementatie wordt omgevormd naar een serious game voor fysieke revalidatie, dat in Sectie 2.5 besproken werd. Hierbij wordt gefocust op revalidatie van de schou- der en kan de gebruiker de vogel aansturen door een schouderoefening correct uit te voeren. Deze serious game kan vervolgens, door gebruik te maken van de generieke architectuur uit Hoofdstuk 4, omgevormd worden naar een adaptieve en gepersonaliseerde serious game. Flappy Bird werd gekozen omdat het een eenvoudige besturing heeft. Het laten vliegen van de vogel kan op veel verschillende manieren geïmplementeerd worden.

24 HOOFDSTUK 3. FLAPPY BIRD

3.2.1 Intel RealSense

Om de bewegingen van de gebruiker te registreren wordt gebruik gemaakt van de Intel Real-

Sense camera [37]. De RealSense bevat bovenop een standaard kleurencamera een dieptesensor.

Met deze sensor kan achterhaald worden hoe ver een object van de camera staat. Hiermee kan een persoon in een 3D ruimte van de achtergrond onderscheiden worden uit een 2D beeld van de camera. Wanneer de speler herkend is, kunnen de bewegingen geregistreerd en geanalyseerd worden waarna kan bepaald worden of een oefening correct werd uitgevoerd.

3.2.2 Cubemos skeletontracker

Posities van de ledematen van de gebruiker moeten gekend zijn om op een correctie manier bewegingen te kunnen herkennen. Het herkennen van deze posities wordt gedaan met behulp van de Cubemos skeletontracking SDK [38]. Deze development kit kan met behulp van AI modellen uit de data van een RealSense camera de posities van ledematen herkennen. Deze posities worden verbonden met elkaar om zo een basisskelet van de gebruiker te kunnen vormen. Hoe Cubemos het skelet op een het beeld van de Intel RealSense zet, is te zien op Figuur 3.4. Cubemos voorziet bovendien een pakket van klassen die voor Unity geschikt zijn. Dankzij dit pakket zijn op een eenvoudige manier de gegevens van het skelet ter beschikking en bruikbaar in Unity.

Figuur 3.4: Het skelet getekend door Cubemos op het dieptebeeld van de Intel Real- Sense

3.2. TRANSITIE NAAR EEN SERIOUS GAME 25

3.2.3 Integratie in Flappy Bird

Om ervoor te zorgen dat door middel van bewegingen het spel aangestuurd kan worden, dienen enkele delen van het spel aangepast te worden. Als eerste moet het mogelijk zijn om een RealSense camera toe te voegen aan Unity waarna de skeletontracker van Cubemos het skelet van de gebruiker kan berekenen. Vervolgens moet het beeld van de camera, alsook het skelet op het spel, getoond worden. Zo kan de speler zien of hij/zij correct in beeld staat en of het skelet herkend werd. Hierna dienen de gegevens van het skelet geanalyseerd te worden om te bepalen of de gebruiker de juiste oefening uitvoerde. Als de juiste oefening uitgevoerd werd, kan de vogel vliegen. Er moet ook rekening gehouden worden met het feit dat de gebruiker niet aan de computer zit terwijl het spel gespeeld wordt. Hierdoor moet het spel gestart kunnen worden zonder dat de gebruiker aan de computer moet zitten.

RealSense camera en Cubemos skeletontracker

Het initialiseren van de RealSense camera en de Cubemos skeletontracker gebeurt in de Skele-

tonManager klasse. Deze klasse is een singleton zodat bij het opnieuw starten van de scene de

camera niet telkens opnieuw geïnitialiseerd hoeft te worden. Elke keer de update-functie van de

SkeletonManager wordt opgeroepen, wordt gecontroleerd of er een nieuwe beelden van de camera

beschikbaar zijn. Wanneer dit het geval is, worden het kleurenbeeld en het dieptebeeld van de RealSense camera gebruikt door Cubemos voor de berekeningen van de posities. De posities en het kleurenbeeld worden vervolgens gebruikt om het beeld van de speler in de game te tonen. De posities worden geschaald volgens de grootte van het beeld in de game waarna gekleurde bollen boven het beeld geplaatst worden op deze posities van het skelet. Zo krijgt de gebruiker een beeld van zichzelf te zien in-game en staan er gekleurde bollen op het beeld waar de Cubemos skeletontracker ledematen detecteerde.

Bewegingsvalidatie

Een volgende stap is om de posities van de ledematen te analyseren en vervolgens te achterhalen of de gebruiker wel degelijk de correcte oefening uitvoerde. Het analyseren en valideren van deze

26 HOOFDSTUK 3. FLAPPY BIRD oefeningen gebeurt in de gamecontroller, die in Sectie 3.1.2 besproken werd. Het spel kan gestart worden door voor een bepaalde tijd de juiste schouderoefening uit te voeren. Hiervoor wordt in elke update-functie getest of de juiste beweging werd uitgevoerd. Wanneer de schouderoefeningen lang genoeg correct werd aangehouden, wordt het spel gestart. Wanneer het spel gestart is, wordt niet bij elke update getest of de schouderoefening goed was. Door dit periodiek te testen, lijkt de vogel meer te ’fladderen’ en is de vogel makkelijker te controleren. Wanneer de vogel de grond of een pilaar raakt en de gebruiker dus verloren is, kan het spel opnieuw gestart worden door terug voor een bepaalde tijd de juiste schouderoefening uit te voeren. Hoe het spel eruitziet nadat het omgevormd werd naar een serious game voor fysieke revalidatie, is te zien op

Figuur 3.5.

Figuur 3.5: De Flappy Bird serious game voor fysieke revalidatie van de schouder met in de linkerbovenhoek het beeld van de Intel RealSense met hierop de gewrichten (groene bollen) aangeduid.