• No results found

A framework for the rapid development of Mixed Reality applications

N/A
N/A
Protected

Academic year: 2021

Share "A framework for the rapid development of Mixed Reality applications"

Copied!
56
0
0

Bezig met laden.... (Bekijk nu de volledige tekst)

Hele tekst

(1)

Bachelor Informatica

Een laagdrempelig framework

voor de ontwikkeling van Mixed

Reality Applicaties en de

toe-passing binnen het onderwijs

Sjoerd Wenker

Juni 2017

Begeleider(s): Robert Belleman (UvA)

Inf

orma

tica

Universiteit

v

an

Ams

terd

am

(2)
(3)

Samenvatting

Dit onderzoek richt zich op het ontwerp en de implementatie van een framework voor het maken van Mixed Reality applicaties en de toepassing van Mixed Reality applicaties binnen het onderwijs. Met behulp van dit framework kunnen mensen applicaties bouwen die gebruik maken van een combinatie van Virtual Reality en Augmented Reality zonder dat er enige kennis benodigd is over het maken van dergelijke applicaties. Dit framework is ontworpen voor het produceren van applicaties welke dienen als educatief hulpmiddel, als hulpmiddel voor trainingsdoeleinden en als hulpmiddel bij het oplossen van complexe taken. Deze applicaties kunnen worden gebruikt in combinatie met een Google Cardboard: een kartonnen bril.

(4)
(5)

Inhoudsopgave

1 Inleiding 7

2 Onderzoek 9

2.1 Benodigde functionaliteiten . . . 10

2.2 Gerelateerd werk . . . 10

3 Ontwerp van het framework 13 3.1 Benodigdheden . . . 13

3.2 Interactiemogelijkheden . . . 14

3.3 Ontwikkelomgeving . . . 14

3.4 Functionaliteit van framework . . . 15

3.5 Scenes, objecten en markers . . . 16

3.6 Generatie van configuratiebestanden . . . 17

4 Implementatie van het framework 19 4.1 Parsen en valideren van het configuratiebestand . . . 19

4.2 Afhandelingen van scenes en objecten . . . 20

4.3 Interactiemogelijkheden . . . 20

4.4 Herkennen van markers . . . 20

4.5 Buildscript . . . 21

4.6 Specificatie van configuratiebestand . . . 21

4.6.1 Informatie over de applicatie . . . 21

4.6.2 Lijst van scenes . . . 22

4.6.3 Lijst van markers (targets) . . . 24

4.7 Generatie-script voor configuratiebestanden . . . 24

5 Experiment 1: Reanimatie 27 5.1 Methode . . . 27 5.2 Resultaten . . . 28 6 Experiment 2: Microscoop 31 6.1 Methode . . . 31 6.2 Resultaten . . . 32 7 Conclusie 35 7.1 Toekomstig onderzoek . . . 35 A Gebruikte software 37 A.1 Installatie van benodigde software . . . 37

A.1.1 Installatie van Android SDK Tools en Android SDK Build Tools . . . 37

A.1.2 Installatie van Unity . . . 37

A.2 Aanvragen van Vuforia License Keys voor applicaties . . . 38

A.3 Aanmaken van Vuforia Image Marker database . . . 38

(6)

A.5 Bouwen van een applicatie met het framework . . . 39

B DTD Schema van configuratiebestand 41

C Demo markers voor de reanimatie demo 43

D Configuratiebestand van demo applicatie over reanimatie 45

(7)

HOOFDSTUK 1

Inleiding

De afgelopen jaren is de interesse in Virtual Reality (VR) en Augmented Reality (AR) sterk toegenomen. De belangrijkste reden hiervoor is dat de technologie steeds beter en betaalbaarder is geworden en daarmee binnen het bereik is gekomen van de gewone consument. Verschillende bedrijven hebben de afgelopen jaren betaalbare producten op de markt gebracht, of doen dat binnenkort, waaronder: Oculus met de “Oculus Rift”, HTC met de “Vive”, Sony met de “Play-Station VR” en Microsoft met de “Hololens” (zie figuur 1.1 t/m 1.4).

Figuur 1.1: Oculus Rift. Figuur 1.2: HTC Vive.

Figuur 1.3: Sony Playstation VR. Figuur 1.4: Microsoft Hololens.

De insteek van Google met “Google Cardboard” is zelfs dat iedereen met een high-end smartphones eigenlijk al beschikt over de benodigde hardware: het is verder alleen nodig om een goedkope, kartonnen bril aan te schaffen waarin de smartphone geplaatst wordt (zie figuur 1.5).

Daarmee is de benodigde hardware veelal beschikbaar. Het aanbod van applicaties is echter

(8)

nog beperkt[5]. Dit komt voor een belangrijk deel omdat het ontwikkelen van een VR of AR applicatie voor de onervaren gebruiker met de huidige ontwikkelomgevingen lastig is, zelfs voor een simpele taak. Dat is een probleem, want er zijn vele toepassingsgebieden waar VR en AR nuttig gebruikt kan worden die momenteel niet tot uiting kunnen komen.

Een van deze toepassingsgebieden is het onderwijs [30]. Er kan geld en tijd bespaard worden door diverse technieken of kennis in een virtuele omgeving bij te brengen en te trainen [2, 14].

Deze scriptie beschrijft het ontwerp, de implementatie en de toepassing van een framework waarmee een onervaren gebruiker eenvoudig een applicatie kan implementeren die gebruik maakt van zowel VR als AR, de zogenaamde “Mixed Reality” (MR) applicaties.

(9)

HOOFDSTUK 2

Onderzoek

Er is een onderscheid te maken in de soorten applicaties die gebruik maken van MR. MR ap-plicaties worden onder andere toegepast in architectuur, gaming, entertainment, marketing en educatie [5]. Dit onderzoek richt zich op applicaties voor het onderwijs. Deze applicaties hebben als doel het trainen of leren van bepaalde technieken en kennis aan de gebruiker.

De mogelijkheid om VR en AR beide toe te passen binnen een applicatie gericht op trainings-doeleinden is een goede toevoeging. De virtuele omgeving van VR is benodigd om bepaalde technieken en kennis te kunnen trainen zonder hierbij fysieke objecten nodig te hebben. Hier-door kan al het trainingsmateriaal gesimuleerd worden zonder dat dit gevolgen heeft voor de re¨ele wereld. AR is ook benodigd binnen deze applicaties, omdat de taak dan in de re¨ele wereld uitgevoerd kan worden met virtuele ondersteuning.

Het ontwikkelen van een MR applicatie is momenteel ingewikkeld. Er zijn diverse problemen welke ervoor zorgen dat het moeilijk is om een MR applicatie te ontwikkelen [4, 12].

Het eerste probleem is de benodigde kennis voor het gebruiken van ontwikkelprogramma’s waarmee MR applicaties gemaakt kunnen worden. Huidige oplossingen voor het maken van VR of AR applicaties zijn Unity[22] of Unreal Engine[25] in combinatie met een library of framework. Voor onervaren gebruikers is het met behulp van deze programma’s te moeilijk om een AR of VR applicatie te bouwen [7]. Een doelstelling van het project is dat het voor onervaren gebruikers eenvoudig moet zijn om een MR applicatie te maken.

Het tweede probleem is het gebruiken van 3D modellen in de MR applicatie. MR applicaties projecteren 3D objecten in een wereld. Hiervoor zijn 3D modellen nodig die gebruikt kunnen worden in de applicatie. Het ontwerpen van een 3D model is lastig.

Het derde probleem is het regelen van dynamiek in de applicatie. De applicatie heeft een verhaallijn nodig. Een mogelijkheid voor het trainen van bepaalde technieken en kennis is trainen in stappen. Er is ergens een begin en nadat een element geleerd is, kunnen elementen geleerd worden die hier dieper op ingaan of hier op voortbouwen. Dit kan omschreven worden in een verhaallijn [6]. Deze verhaallijn is lineair, maar bevat aftakkingen waarin dieper wordt ingegaan op een element. Met deze vorm is het onder andere mogelijk om applicaties te omschrijven voor trainingsdoeleinden en het oplossen van complexe taken. Voor het implementeren van een verhaallijn is programmeerkennis nodig.

Het laatste probleem is het mogelijk maken van interactie met de applicatie. Om applicaties te maken die de gebruiker technieken en kennis bijleren, is het nodig dat de gebruiker feedback krijgt op de manier waarop de gebruiker de applicatie gebruikt [16]. Om dit voor elkaar te krijgen is het nodig om de gebruiker interactie te laten hebben met de applicatie. Deze interactiemogelijkheden moeten laagdrempelig te gebruiken zijn.

(10)

2.1

Benodigde functionaliteiten

Een oplossing voor het bouwen van MR applicaties met een verhaallijn zal aan een aantal func-tionele eisen moeten voldoen.

De functionele eisen waaraan de oplossing zal moeten voldoen zijn:

1. Zo laagdrempelig mogelijk: Het eindresultaat moet binnen bereik liggen van een zo groot mogelijk publiek. Momenteel is het ontwikkelen van applicaties ingewikkeld. Ook is er vaak speciale hardware nodig voor het gebruiken van de applicaties.

2. Virtual en Augmented Reality: De oplossing moet ondersteuning bieden voor het toepassen van VR en AR. In VR kan een techniek geoefend worden. Vervolgens kan deze techniek in een AR-omgeving toegepast worden.

3. 3D modellen: De oplossing moet ondersteuning bieden voor gebruik van 3D modellen in verschillende formaten. Dit is nodig om relevante objecten te gebruiken voor de applicatie. Deze 3D modellen moeten in de applicatie worden weergegeven, zodat de gebruiker hiermee kan werken.

4. Herkenningspunten: Het moet mogelijk zijn om een 3D model weer te geven op de virtuele positie van een herkenningspunt. Dit is nodig om de weergave van 3D modellen in de virtuele omgeving aan te passen bij het veranderen van perspectief.

5. Interactietechnieken: Het moet voor de gebruiker mogelijk zijn om invloed te hebben op het verloop van de applicatie. Dit zorgt ervoor dat het mogelijk is om meerdere ver-haallijnen te cre¨eren.

6. Cross-platform: Het moet op de meest gebruikte mobiele apparaten mogelijk zijn om de applicatie te draaien. Dit zijn apparaten met het Android of iOS besturingssysteem.

2.2

Gerelateerd werk

In eerder onderzoek is gekeken naar het gebruik van Virtual Reality in rehabilitatie[11]. Dit onderzoek bevat enkele applicaties welke gebruikt kunnen worden voor het oefenen van huis-houdelijke taken. Deze applicatie bevat een virtuele omgeving waarin de gebruiker objecten kan verplaatsen met zijn of haar handen. Voor het verplaatsen van deze objecten, dient de gebruiker een handschoen met sensoren te dragen.

Een eerder gemaakte applicatie specifiek voor het bouwen van AR applicaties is PowerSpace[13]. Deze applicatie maakt het mogelijk om met behulp van een 2D presentatie applicatie zoals Po-werpoint een AR applicatie te ontwerpen. De XML bestanden die door de presentatie applicatie gegenereerd worden, worden door PowerSpace omgezet naar een AR applicatie. Deze opzet zorgt ervoor dat de instap voor onervaren gebruikers zeer laag is, doordat deze alleen een presentatie moeten inrichten voor het bouwen van een AR applicatie. Deze applicatie is laagdrempelig in ontwikkeling, heeft ondersteuning voor AR, VR, 3D modellen en interactie d.m.v. hardware. Deze applicatie voldoet niet aan de functionele eisen. Het gebruik van deze applicatie is niet laagdrempelig, doordat er extra hardware nodig is voor het gebruiken van de applicatie.

Een andere applicatie die het mogelijk maakt om AR applicaties te bouwen is Tiles[19]. In Tiles kunnen 3D modellen geprojecteerd worden op een Tile (herkenningspunt), een zwart vier-kant met een figuur in het midden. Bij het samenkomen van Tiles kunnen verschillende objecten worden weergegeven. Deze applicatie is laagdrempelig in gebruik en biedt ondersteuning voor AR, 3D modellen, herkenningspunten en interacties. Het ontwikkelen van deze applicaties is echter niet laagdrempelig en de applicatie mist ondersteuning voor VR.

Een oplossing voor het bouwen van AR en VR applicaties is EnTiTi Creator van WakingApp[9]. EnTiTi Creator biedt een desktop applicatie waarmee het mogelijk is om een AR of VR applica-tie te bouwen. De EnTiTi Creator bevat een catalogus met 3D modellen welke in de applicaapplica-tie

(11)

gebruikt kunnen worden. Het is voor de gebruiker mogelijk om acties uit te voeren op de mo-dellen. Deze oplossing voldoet niet aan de functionele eisen. De 3D modellen worden niet goed weergeven, doordat onderdelen en shaders soms missen. Ook is een tweede applicatie, EnTiTi Viewer, vereist. Dit is een applicatie voor mobiele telefoons voor het weergeven van de gebouwde applicatie. Verder is het niet mogelijk om van AR en VR beide gebruik te maken binnen een applicatie.

Een andere oplossing voor het bouwen van applicaties is Vizor[27]. Vizor is een applicatie waarbij men via een web-editor een VR applicatie kan maken. Het bevat een catalogus met diverse 3D modellen welke in de applicatie gebruikt kunnen worden. Bij het publiceren van een applicatie, komt deze beschikbaar via een URL die gedeeld kan worden met de gebruikers. Deze oplossing voldoet niet aan de functionele eisen. Vizor biedt niet de mogelijkheid om AR applicaties te maken. Verder heeft de applicatie geen ondersteuning voor herkenningspunten en is het niet mogelijk om eigen 3D modellen te gebruiken.

InstaVR is een platform voor het maken van VR applicaties met als doel het demonstreren van omgevingen [15]. Hierbij moet de omgeving aangeleverd zijn in een 360-graden video of een complete 3D wereld als panorama-afbeelding. Deze oplossing voldoet niet aan de functionele ei-sen. InstaVR mist de mogelijkheid voor het gebruiken van AR, 3D modellen, herkenningspunten en interacties.

pptVR is een ander platform waarmee VR applicaties gemaakt kunnen worden[20]. pptVR biedt dezelfde opties als InstaVR met als toevoeging de mogelijkheid om extra scenes toe te voe-gen. Het wisselen tussen scenes is mogelijk met gebruik van een virtuele knop in de applicatie. Deze oplossing voldoet niet aan de functionele eisen, doordat deze geen ondersteuning heeft voor AR, 3D modellen en herkenningspunten.

Elk van de genoemde oplossingen voldoet niet aan minstens een van de gestelde eisen in sectie 2.1. Daarom zal een eigen framework ontworpen en ge¨ımplementeerd worden dat voldoet aan alle gestelde eisen.

(12)
(13)

HOOFDSTUK 3

Ontwerp van het framework

In dit hoofdstuk wordt een framework ontworpen met een oplossing voor de genoemde problemen in hoofdstuk 2. Het doel van dit framework is dat MR applicaties geproduceerd kunnen worden die voldoen aan de gestelde functionele eisen in sectie 2.1, zonder dat de gebruiker gevorderde kennis heeft over het bouwen van MR applicaties. Deze applicaties bevatten functionaliteiten zoals het herkennen van herkenningspunten en interacties, het ondersteunen van meerdere scenes, het wisselen tussen scenes na een interactie en het kunnen wisselen tussen een VR- en een AR-omgeving.

Om tegen te gaan dat onnodig tijd verloren gaat aan het schrijven van code voor functionaliteiten die al bestaan, is besloten om binnen het framework gebruik te maken van een framework of Software Development Kit (SDK). Deze wordt gekozen op basis van de functionele eisen.

3.1

Benodigdheden

Voor het laagdrempelig houden van het bouwen van een applicatie met het framework zal de gehele applicatie in een gestructureerd bestand worden gespecificeerd, een zogenoemd configu-ratiebestand. Dit configuratiebestand zal omschreven worden in sectie 3.4. Het configuratiebe-stand wordt met een bestaand 3D ontwikkel-applicatie omgezet naar een MR applicatie. Voor het laagdrempelig houden van het gebruik van een applicatie wordt gebruik gemaakt van her-kenningspunten.

Bekende programma’s voor het maken van applicaties die gebruik maken van 3D modellen zijn Unity[22] en Unreal Engine[25]. Deze programma’s bieden beide ondersteuning voor VR applicaties. In tabel 3.1 worden de mogelijkheden van Unity en Unreal Engine met elkaar verge-leken en getoetst aan de functionele eisen. Uit de vergelijking blijkt dat beide programma’s niet aan alle functionele eisen voldoen. Daarom zal er naast het framework ook naar een bijpassend SDK gezocht worden, welke in samenwerking met ´e´en van deze programma’s gebruikt kan worden.

Voor het ontwerpen van 3D modellen zijn diverse modelleer applicaties beschikbaar. De 3D modellen die met 3D modelleer applicaties gemaakt zijn, kunnen vaak gebruikt worden binnen Unity en Unreal Engine. Ook zijn er websites waar mensen allerlei 3D modellen beschikbaar stellen voor anderen, zoals 3D Warehouse[1]. Het downloaden van deze 3D modellen heeft wel de beperking dat niet alle bestandsformaten van 3D modellen door Unity en Unreal Engine worden ondersteund. In het geval dat een formaat niet wordt ondersteund, kan het bestand geconverteerd worden naar een bestandsformaat dat wel door Unity of Unreal Engine ondersteund wordt.

Om 3D modellen te gebruiken en deze op een bepaalde positie te zetten, is het noodzakelijk om gebruik te maken van markers (herkenningspunten). Als de virtuele positie van een marker bepaald kan worden, kan een 3D model gepositioneerd worden in de virtuele omgeving.

Voor het toevoegen van dynamiek en activiteit aan de applicatie, zal gebruik gemaakt worden van interacties. Met deze interacties bepaalt de gebruiker zelf het verloop van de applicatie.

(14)

Tabel 3.1: Mogelijkheden van Unity en Unreal Engine getoetst aan de functionele eisen uit sectie 2.1. Verder wordt aangegeven of het programma gratis gebruikt mag worden. Dit wordt niet opgeteld bij de totalen.

Mogelijkheid Unity Unreal Engine

Laagdrempelig in gebruik -

-Ondersteuning voor VR + +

Ondersteuning voor AR -

-Ondersteuning voor 3D modellen + +

Ondersteuning voor herkenningspunten -

-Ondersteuning voor interactietechnieken -

-Cross-platform +

+/-Gratis non-commercieel gebruik + +

Gratis commercieel gebruik +/-

-Totaal 3 2.5

3.2

Interactiemogelijkheden

Om gebruikers van de resulterende applicaties mogelijkheid tot interactie te geven, zijn er drie opties. De eerste optie is het gebruik van virtuele knoppen. Deze knoppen kunnen worden toe-gevoegd aan scenes. Een knop kan door de gebruiker worden ingedrukt door enkele seconden het middelpunt van de camera te richten op de knop. Het middelpunt van de camera is aangegeven d.m.v. een reticle1. Nadat de knop is ingedrukt, vindt een overgang plaats naar een volgende

scene.

De tweede optie is het verdwijnen of verschijnen van een marker in het beeld van de camera. Voor deze verandering kan ook een scene-overgang ingesteld worden.

De derde optie is het naar elkaar toe bewegen of van elkaar vandaan bewegen van twee markers of een marker en de camera. Voor de twee objecten kan een minimale of maximale afstand ingesteld worden. Zodra de afstand tussen de twee objecten minder dan het minimum of meer dan het maximum is, vindt een scene-overgang plaats.

Naast de reeds genoemde functionele eisen in sectie 2.1 zijn er additionele functionele eisen om de genoemde interactiemogelijkheden mogelijk te maken.

Deze functionele eisen zijn:

• Meerdere herkenningspunten: Het moet mogelijk zijn om simultaan van meerdere herkenningspunten gebruik te maken. Dit is nodig om verschillende objecten onafhankelijk van elkaar te kunnen plaatsen en interacties uit te kunnen voeren met meerdere markers.

• Niet volledig zichtbare herkenningspunten: Als een herkenningspunt niet volledig zichtbaar is, moet deze evengoed herkend en gebruikt kunnen worden. Dit is nodig om diverse herkenningspunten te kunnen overlappen.

• Projectie van 3D modellen met behoudt van positie, rotatie en grootte: De virtuele knop moet op een vaste positie in de omgeving geplaatst worden.

3.3

Ontwikkelomgeving

Uit sectie 3.1 blijkt dat Unity en Unreal Engine beide geen ondersteuning bieden voor AR, interacties en herkenningspunten. Ook mist de ondersteuning voor de drie genoemde functionele eisen in sectie 3.2. Daarom wordt voor het mogelijk maken van deze functionaliteiten gebruik gemaakt van een SDK.

1De reticle in deze applicaties is een cirkel. Een uitleg over reticles is te vinden op https://en.wikipedia. org/wiki/Reticle

(15)

Tabel 3.2: In deze tabel worden bestaande SDKs met elkaar vergeleken op basis van de functionele eisen die missen in Unity en Unreal Engine. Ook wordt aangegeven of het framework gratis gebruikt mag worden. Dit wordt niet opgeteld bij de totalen.

Mogelijkheid V uforia Unreal4AR AR T o olkit Wikitude SDK MXR T o olkit UAR T DroidAR Herkenningspunten + + + + + + +

Meerdere herkenningspunten tegelijk + + + + + + +

Projectie met behoud van positie, rotatie, grootte + + + + + +/-

+/-Gedeeltelijk zichtbare herkenningspunten + + +/- + +/- -

+/-Interactietechnieken + + - - - -

-Gratis non-commercieel gebruik + - + + + + +

Gratis commercieel gebruik + - + + + + +

Totaal 5 5 3.5 4 3.5 2.5 3

Er zijn zeven SDKs die ondersteuning bieden voor AR en in aanmerking komen: ARToolkit[3], DroidAR[8], MXRToolkit[17], UART[21], Unreal4AR[26], Vuforia[28] en Wikitude SDK[29]. In tabel 3.2 worden de mogelijkheden van deze SDKs met elkaar vergeleken.

Voor de implementatie van dit framework wordt gebruik gemaakt van Unity en Vuforia. Unity in combinatie met Vuforia komt in de vergelijking als beste naar voren. De combinatie biedt ondersteuning voor AR en VR. Er zijn verschillende mogelijke interactietechnieken en her-kenningspunten, waaronder ook afbeeldingen welke maar gedeeltelijk zichtbaar hoeven te zijn. Als interactietechniek biedt Vuforia de mogelijkheid om virtuele knoppen toe te voegen. Het is mogelijk om deze applicaties cross-platform te gebruiken doordat Vuforia en Unity ondersteu-ning bieden voor Google Cardboard[10]. Google Cardboard biedt de mogelijkheid om VR en AR applicaties te draaien op Android en iPhone apparaten. Verder zijn Unity en Vuforia gratis te gebruiken voor non-commercieel en commercieel gebruik.

Voor het compileren van de applicatie naar een Android apparaat, wordt gebruik gemaakt van de Android SDK Build tools. Een uitgebreide handleiding voor de installatie van de benodigde software is te vinden in bijlage A.1.

Voor het testen van het framework worden de geproduceerde applicaties gedraaid op Android telefoons met een Android versie van minimaal 2.3 (Gingerbread).

3.4

Functionaliteit van framework

Voor het specificeren van een applicatie kan de applicatie in een bestand beschreven worden volgens een vooraf bepaalde XML Schema. Dit XML Schema is beschreven in sectie 4.6. Dit XML Schema bevat informatie over de applicatie, scenes met daarin objecten en interacties en de markers die gebruikt worden in de applicatie. De scenes zijn omschreven in sectie 3.5. Gebruikers van de applicatie hebben invloed op de volgorde waarin de scenes worden gespeeld door het gebruik van interacties.

Door een toepassing te specificeren in het zogeheten configuratiebestand en de daarbij be-horende 3D-modellen toe te voegen, kan met dit framework een MR applicatie geproduceerd worden.

Voor het specificeren van applicaties wordt gebruik gemaakt van een XML-bestand, een zogenoemd configuratiebestand. In dit configuratiebestand wordt de complete applicatie gespe-cificeerd. Wijzigingen aan de applicatie vinden alle in dit configuratiebestand plaats, wat er voor moet zorgen dat een gebruiker overzichtelijk een applicatie aan kan passen. Het

(16)

configu-ratiebestand bevat informatie over de applicatie, een gedetailleerde definitie van de scenes en een definitie van de markers die gebruikt worden binnen de applicatie. De informatie over de applicatie bestaat uit de naam, een beschrijving en de benodigde licentiecode. Binnen elke scene worden objecten en interacties met overgangen naar andere scenes gedefinieerd.

3.5

Scenes, objecten en markers

Een MR applicatie bestaat uit meerdere scenes, 3D objecten in die scenes en markers (herken-ningspunten) waarop deze objecten geprojecteerd kunnen worden. De scenes in de MR applicatie hebben een unieke naam en een type. Dit type kan VR of AR zijn. Verder bestaan scenes uit objecten en interactiemogelijkheden. Voor elke scene is het benodigd om expliciet elk object en elke interactiemogelijkheid te specificeren.

Een voorbeeld van een applicatie is gegeven in figuur 3.1. De structuur van de applicatie kan worden vergeleken met een Finite-state machine. Elke scene staat hierin gelijk aan een toestand en de interactiemogelijkheden kunnen worden gezien als toestandsovergangen. Elke scene kan nul of meer interacties bevatten, welke leiden tot een andere scene. Meerdere interacties kunnen naar dezelfde scene leiden. Deze structuur zorgt ervoor dat er een verhaallijn kan worden gemaakt.

Figuur 3.1: Voorbeeld van de opbouw een applicatie. In dit diagram zijn scenes aangegeven als blokken en de interacties als pijlen tussen deze blokken. Het is schaalbaar door nieuwe scenes toe te voegen. Tussen alle scenes zijn overgangen mogelijk m.b.v. interacties.

Elke MR applicatie maakt gebruik van ´e´en of meerdere markers. Markers zijn re¨ele figuren waar een object virtueel op geprojecteerd kan worden. De markers zijn er in twee vormen: Frame Markers2 en Image Markers3. Een Frame Marker is een zwart vierkant met een binair patroon aan de binnenzijde van de rand, waarbij het centrale deel een eigen invulling kan krijgen. Door het binaire patroon kunnen verschillende Frame Markers onderscheiden worden van elkaar. In figuur 3.2 is een voorbeeld van een Frame Marker te zien. Image Markers zijn afbeeldingen waarop objecten geprojecteerd kunnen worden. Bij voorkeur worden hier afbeeldingen met unieke kenmerken voor gebruikt4. Deze Image Markers kunnen eenvoudig aangemaakt worden op de

website van Vuforia d.m.v. het uploaden van afbeeldingen. Hierna kan een database bestand gedownload worden die te gebruiken is binnen de applicatie. In figuur 3.3 is een voorbeeld van een Image Marker te zien.

De 3D objecten die zich in een scene bevinden, worden geprojecteerd op een marker. Elk object heeft een relatieve positie, schaal en rotatie ten opzichte van de opgegeven marker. Er zijn drie

2Een uitleg over Frame Markers is te vinden op https://developer.vuforia.com/library/articles/ Training/Frame-Markers-Guide

3Vuforia noemt deze Image Targets. Een uitleg is te vinden op https://developer.vuforia.com/library/ articles/Training/Image-Target-Guide

4Een uitleg over de kenmerken van Image Targets is te vinden op https://library.vuforia.com/articles/ Best_Practices/Attributes-of-an-Ideal-Image-Target

(17)

Figuur 3.2: Voorbeeld van een Frame Marker. Figuur 3.3: Voorbeeld van een Image Marker.

soorten objecten: het 3D model, een tekst en een afbeelding. Voor het invoegen van een 3D model of afbeelding is het alleen nodig om het bestand in dezelfde map als het configuratiebestand te plaatsen.

3.6

Generatie van configuratiebestanden

Het configuratiebestand is toereikend voor het maken van een eenvoudige applicatie. Naarmate een applicatie meer complexiteit vereist, zal het lastiger worden om alle mogelijke scenario’s van een applicatie in het configuratiebestand te verwerken. Als oplossing hiervoor is een configuratie-generatie script ontwikkeld. Dit configuratie-configuratie-generatie script vereenvoudigd het genereren van een complexe applicatie, en daarmee ook het doorvoeren van kleine wijzigingen aan deze gege-nereerde applicaties.

Het configuratie-generatie script bevat vijf onderdelen voor het specificeren van een applicatie. Het eerste onderdeel bevat de informatie over de applicatie, zoals de naam en de omschrijving. Het tweede onderdeel bevat de markers welke gebruikt worden binnen de applicatie. Het derde onderdeel bevat de toestanden welke mogelijk zijn binnen de applicatie. Voor elke combinatie van mogelijke toestanden wordt een scene gegenereerd. Het vierde onderdeel bevat de mogelijke interacties in de applicatie. Een interactie kan verschillen per scene door a.d.h.v. de toestanden condities op te stellen. Hierdoor kunnen interacties alleen in bepaalde scenes voor een scene-overgang zorgen. Ook is het mogelijk om tijdens de scene-scene-overgang een tekst te laten weergeven op het scherm van de gebruiker. Het laatste onderdeel is het specificeren van de scenes. In de scene kan a.d.h.v. de toestanden ingesteld worden welke objecten zichtbaar zijn en welk type (VR of AR) de scene is.

(18)
(19)

HOOFDSTUK 4

Implementatie van het framework

Het framework is geschreven in C#. Het bestaat uit diverse onderdelen welke alle verschillende elementen uit het framework aansturen. Deze onderdelen zijn het maken en beheren van objecten, het beheren van de scenes, het beheren van markers, het beheren van virtuele knoppen, het beheren van interacties en scene-overgangen en het uitlezen van het configuratiebestand.

In figuur 4.1 is het bouwproces te zien. Bij het bouwen van de applicatie worden alle Resources (hulpbestanden) gebundeld. Binnen het framework worden de bestanden op de juiste locatie ge-zet en gecompileerd. Vervolgens wordt het APK-bestand (Android application package-bestand) aangemaakt. Dit is een archiefbestand die gebruikt wordt voor het distribueren en installeren van applicaties voor Android telefoons. Binnen de gebouwde applicatie speelt het framework een centrale rol om alles aan te sturen volgens de specificatie van de applicatie in het configuratie-bestand.

Figuur 4.1: Bouwproces van het framework. De hulpbestanden worden gebundeld en toegevoegd aan het project. Vervolgens wordt het project gebouwd. Dit resulteert in een APK-bestand.

4.1

Parsen en valideren van het configuratiebestand

Bij het starten van de applicatie wordt het configuratiebestand uitgelezen. De specificatie van het configuratiebestand is te vinden in sectie 4.6. De informatie over de applicatie wordt eerst uitgelezen. Na het uitlezen van de informatie van de applicatie, wordt gevalideerd of er een geldige licentiecode van Vuforia ingesteld staat1. De licentiecode is benodigd om de applicatie

te kunnen draaien. Indien er geen geldige licentiecode is ingesteld, wordt dit weergegeven op het beginscherm en is het niet mogelijk om de applicatie te starten.

Hierna worden de scenes uit het configuratiebestand gelezen. Bij het opslaan van de scenes wordt de naam en het type van de scene in een interne structuur bewaard. Verder worden voor elke scene ook twee lijsten bewaard: een lijst voor de objecten in die scene en een lijst met interactiemogelijkheden.

(20)

Als laatste worden de markers uitgelezen. Hierbij worden ook alle eigenschappen opgeslagen. Na het inlezen van het configuratiebestand, wordt de specificatie van de applicatie gecontro-leerd. Er wordt eerst gecontroleerd of de namen van de markers en scenes uniek zijn en de eigenschappen van deze objecten worden gecontroleerd op geldige waarden. Vervolgens wordt voor elk object gevalideerd dat er een geldige waarde ingevuld is voor de marker waar het object op gepositioneerd wordt. Hierna wordt voor de interactiemogelijkheden ook gevalideerd dat er naar een geldige marker gerefereerd wordt. Indien een van de controles gefaald is, zal dit worden weergegeven op het beginscherm en is het niet mogelijk om de applicatie te starten.

4.2

Afhandelingen van scenes en objecten

Bij het starten van de applicatie wordt allereerst elke marker aangemaakt met behulp van Vuforia. Vuforia maakt binnen de Unity applicatie een GameObject aan voor elke marker, die gebruikt wordt voor het positioneren van objecten t.o.v. de markers. Vervolgens worden de objecten uit de eerste scene ingeladen. Hierna worden de interactiemogelijkheden aangemaakt.

Bij het laden van objecten voor een volgende scene, wordt er eerst gekeken naar objecten welke eerder gebruikt zijn. Als een object in meerdere scenes gebruikt wordt of als een scene meerdere malen gebruikt wordt, wordt hetzelfde object gebruikt. Dit zorgt ervoor dat objecten, o.a. 3D-modellen, niet meermaals geladen hoeven te worden.

De virtuele knoppen die gegenereerd worden als interactiemogelijkheid, worden in een volgende scene ook hergebruikt.

Bij het overgaan van een scene in VR naar een scene in AR en andersom wordt een animatie weergegeven en respectievelijk verschijnt of verdwijnt het camerabeeld. In de achtergrond van de applicatie blijft het camerabeeld actief, zodat markers ook herkend worden in een VR-omgeving.

4.3

Interactiemogelijkheden

Er zijn drie soorten interactiemogelijkheden binnen het framework. Het eerste soort is het verschijnen of verdwijnen van een marker. Voor het controleren of een marker verschijnt ofwel verdwijnt, wordt een lijst met zichtbare markers bijgehouden. Bij elke update van het beeld wordt deze lijst vergeleken met de markers welke door Vuforia herkent worden in het camerabeeld. Als er een verschil is, wordt de lijst aangepast en wordt voor de verschenen of verdwenen marker gecontroleerd of deze interactie tussen de interacties van de huidige scene zit. Als dit het geval is, wordt de volgende scene geladen en gestart.

Het tweede soort interactie is het naar elkaar toe bewegen of van elkaar vandaan bewegen van markers. Bij deze interactie is in te stellen welke afstand minimaal of maximaal nodig is tussen twee markers. Bij elke vernieuwing van het beeld, wordt berekend wat de afstand tussen de twee markers is. Indien de afstand kleiner is dan de opgegeven minimale afstand of groter dan de maximale afstand, wordt overgegaan naar de volgende scene.

De andere mogelijkheid voor interactie is het gebruik van virtuele knoppen. Hiervoor is een standaard object gemaakt in het Unity project. Als binnen een scene knoppen nodig zijn, wordt dit object gekopieerd en wordt de tekst op de knop en de eigenschappen van de knop aangepast. De tekst wordt geschaald zodat deze zo veel mogelijk ruimte inneemt binnen de knop. Voor het detecteren van het indrukken van de knop wordt gebruik gemaakt van een reticle. Deze reticle bevat een script dat controleert of de lijn waarin gericht wordt objecten snijdt die als knop dienen. Als de reticle op een knop gericht staat, veranderd de knop van kleur en gaat er een timer in van anderhalve seconde. Nadat deze timer is afgelopen en er nog steeds op het object gericht wordt, wordt overgegaan naar de volgende scene.

4.4

Herkennen van markers

Voor het herkennen van markers wordt gebruik gemaakt van Vuforia. Vuforia houdt voor elke aangemaakte marker bij of deze herkend wordt in het camerabeeld. Als een marker wordt her-kend, wordt de positie van het GameObject van deze marker bij elke update van het camerabeeld

(21)

bijgewerkt. Doordat de objecten die aan deze marker zijn gebonden een relatieve positie hebben t.o.v. dit GameObject, worden de posities van de objecten ook direct bijgewerkt.

Er zijn twee soorten markers: Frame Markers en Image Markers. Een uitleg over het aanmaken van een Frame Marker is te vinden in bijlage A.4. Image Markers worden samen gebundeld in een database. Dit database bestand is aan te maken via de website van Vuforia. Een uitleg over het maken van een database met Image Markers is te vinden in bijlage A.3.

4.5

Buildscript

Voor het bouwen van de applicaties is er een buildscript beschikbaar voor Windows en Mac OS X. Het buildscript biedt de mogelijkheid om een APK-bestand (Android application package-bestand) te bouwen voor het draaien van de applicatie op een Android telefoon. Het buildscript is gedeeltelijk in C# en gedeeltelijk in computercommando’s geschreven. De computercommando’s zijn voor Windows samengevoegd in een Batch-bestand en voor Mac OS X samengevoegd in een Bash-bestand. Bij het uitvoeren van het buildscript worden de bestanden die in de applicatie gebruikt worden, verplaatst naar de juiste locaties binnen het framework. Vervolgens wordt het Unity project gebouwd door de Unity applicatie aan te roepen en te verwijzen naar het C# script. Na het bouwen van het Unity project wordt het APK-bestand verplaatst naar de locatie waarin de bestanden van de applicatie zich bevinden.

Binnen het C# script vindt het bouwproces plaats. Hierin wordt allereerst gecontroleerd of het configuratiebestand geen fouten bevat. Als er fouten zijn gevonden, worden deze weergegeven en wordt het bouwen gestopt. Als het configuratiebestand foutloos is, worden het configuratiebe-stand, de Image Marker database(s) en de 3D modellen ge¨ımporteerd binnen het Unity project. Hierna wordt het APK-bestand aangemaakt.

In het Batch- en Bash-bestand zijn enkele instellingen beschikbaar. In de variabele P rojectP ath moet worden ingesteld waar het Unity project van dit framework zich bevindt. Verder kan de locatie van Unity worden aangepast in de variabele U nityP ath. Standaard staat deze ingesteld op de 32-bit versie van Unity.

Een mogelijkheid die het buildscript biedt is het kunnen kiezen of het APK-bestand direct naar een aangesloten telefoon gestuurd moet worden. Het buildscript kan worden aangeroepen met apkonly als argument om alleen het APK-bestand te genereren. Indien dit argument niet meege-geven wordt, zal geprobeerd worden om de applicatie direct op een aangesloten Android-telefoon te installeren.

In bijlage A.5 staat een uitleg over het bouwen van een applicatie met gebruik van het buildscript.

4.6

Specificatie van configuratiebestand

Voor het produceren van een applicatie is besloten om gebruik te maken van een configuratiebe-stand waarin de applicatie wordt gedefinieerd.

Het configuratiebestand bestaat uit drie onderdelen:

1. info: Dit onderdeel bevat informatie over de applicatie.

2. scenes: Dit onderdeel bevat alle scenes.

3. targets: Dit onderdeel bevat de markers die gebruikt worden door de applicatie.

In bijlage B is een Document Type Definition (DTD) beschikbaar welke het XML schema van het configuratiebestand beschrijft.

4.6.1

Informatie over de applicatie

Het eerste onderdeel van het configuratiebestand bevat informatie over de applicatie. Deze informatie bestaat uit de volgende onderdelen:

(22)

• name: Dit is de naam van de applicatie.

• description: Dit is een beschrijving van de applicatie. Deze wordt weergegeven bij het openen van de applicatie.

• license: Dit is de licentie code die benodigd is om een applicatie die gebruik maakt van Vuforia te openen.2

• start-scene: Deze waarde geeft aan welke scene bij het starten van de applicatie wordt geopend.

• debug (optioneel): Deze waarde geeft aan of er extra informatie, die het testen van ap-plicaties kan vereenvoudigen, moet worden weergegeven. De waarde kan true zijn of het onderdeel kan worden weggelaten. Als de waarde gelijk is aan true, wordt er in de applicatie informatie weergegeven over de huidige scene.

4.6.2

Lijst van scenes

Het tweede onderdeel in het configuratiebestand is een lijst met scenes. Elke scene heeft twee eigenschappen:

• name: Dit is een unieke naam voor deze scene.

• type: Dit is het type van de scene. Dit kan AR of MR zijn.

Verder bestaat iedere scene uit objecten en interacties. Er zijn drie verschillende soorten objecten:

• object: Dit is een 3D model. Een 3D model wordt beschreven met de volgende eigen-schappen:

– target: Deze waarde moet de naam van een marker bevatten. Het 3D model wordt gepositioneerd ten opzichte van de locatie van de gegeven marker.

– filename: Deze waarde bevat de bestandsnaam van een 3D model inclusief de be-standsextensie. De bestandsextensies die momenteel worden geaccepteerd zijn: FBX, DAE (Collada), 3DS, DXF en OBJ. [23].

– position: Deze waarde bevat de relatieve positie van het object t.o.v. het target. De positie bestaat uit een x, y en z co¨ordinaat gescheiden door een komma.

– scale (optioneel): Deze waarde bevat de relatieve schaal van het object t.o.v. het target. De schaal bestaat uit een x, y en z waarde gescheiden door een komma. Standaard is de schaal 1 in alle directies.

– rotation (optioneel): Deze waarde bevat de relatieve rotatie van het object t.o.v. het target. De rotatie wordt beschreven in de hoeken van Euler gescheiden door een komma.

• image: Dit is een afbeelding die wordt weergegeven als een vlak op een bepaalde positie. Het image-object heeft de volgende eigenschappen:

– target: Deze waarde moet de naam van een marker bevatten. De afbeelding wordt gepositioneerd ten opzichte van de locatie van de gegeven marker. Een speciaal geval is het target camera, waarbij de afbeelding voor de gebruiker altijd op dezelfde locatie staat.

– filename: Deze waarde bevat de bestandsnaam van een afbeelding inclusief de be-standsextensie. De bestandsextensies die momenteel ondersteunde extensies zijn: PSD, TIFF, JPG, TGA, PNG, GIF, BMP, IFF en PICT. [24]

– position: Deze waarde bevat de relatieve positie van het object t.o.v. het target. De positie bestaat uit een x, y en z co¨ordinaat gescheiden door een komma.

(23)

– scale (optioneel): Deze waarde bevat de afmetingen van de afbeelding. Standaard is het vlak waarop de afbeelding te zien is 1 bij 1. De schaal bestaat uit een x, y en z waarde gescheiden door een komma.

– rotation (optioneel): Deze waarde bevat de relatieve rotatie van het object t.o.v. het target. De rotatie wordt beschreven in de hoeken van Euler gescheiden door een komma.

• text: Dit is een tekst die wordt weergegeven op een bepaalde positie. Het text-object bevat als waarde de tekst die moet worden weergegeven. Voor het weergeven van meerdere regels tekst kan er een nieuwe regel gestart worden met \n. Verder heeft het text-object

een aantal eigenschappen:

– target: Deze waarde moet de naam van een marker bevatten. De tekst wordt gepo-sitioneerd ten opzichte van de locatie van de gegeven marker. Een speciaal geval is het target camera, waarbij de tekst voor de gebruiker altijd op dezelfde locatie staat. – position: Deze waarde bevat de relatieve positie van het object t.o.v. het target. De

positie bestaat uit een x, y en z co¨ordinaat gescheiden door een komma.

– scale (optioneel): Deze waarde bevat de relatieve schaal van het object t.o.v. het target. De schaal bestaat uit een x, y en z waarde gescheiden door een komma. Standaard is de schaal 1 in alle directies.

– rotation (optioneel): Deze waarde bevat de relatieve rotatie van het object t.o.v. het target. De rotatie wordt beschreven in de hoeken van Euler gescheiden door een komma.

De verschillende interactiemogelijkheden zijn opgedeeld in drie verschillende vormen:

• button: Deze interactie geeft aan dat er een virtuele knop wordt weergegeven. De knop kan worden ingedrukt door de reticle in het midden van het camerabeeld enkele seconden te richten op de knop. Als de knop wordt ingedrukt wordt er overgegaan naar de volgende scene. De button heeft een aantal eigenschappen:

– target: Deze waarde moet de naam van een marker bevatten. De knop wordt gepo-sitioneerd ten opzichte van de locatie van de gegeven marker.

– position: Deze waarde bevat de relatieve positie van het object t.o.v. het target. De positie bestaat uit een x, y en z co¨ordinaat gescheiden door een komma.

– scale (optioneel): Deze waarde bevat de relatieve schaal van het object t.o.v. het target. De schaal bestaat uit een x, y en z waarde gescheiden door een komma. Standaard is de schaal 1 in alle directies.

– rotation (optioneel): Deze waarde bevat de relatieve rotatie van het object t.o.v. het target. De rotatie wordt beschreven in de hoeken van Euler gescheiden door een komma.

– text (optioneel): Text die wordt weergegeven op de knop.

– new-scene: Deze waarde bevat de naam van een scene. Na het indrukken van de knop wordt overgegaan naar deze scene.

• appearing-marker en disappearing-marker: Deze interactie is het respectievelijk schijnen van een marker en verdwijnen van een marker. Als de marker verschijnt of ver-schijnt, dan wordt overgegaan naar de scene new-scene. Deze interacties bevatten twee eigenschappen:

– target: Deze waarde moet de naam van een marker bevatten.

– new-scene: Deze waarde bevat de naam van een scene. Na het verschijnen van de marker bij appearing-marker en het verdwijnen van de marker bij disappearing-marker wordt overgegaan naar deze scene.

(24)

• object-moves-towards en object-moves-from: Deze interacties treden op als een af-stand tussen twee markers kleiner of groter wordt dan een gespecificeerde waarde. Bij object-moves-towards zal de interactie optreden als de afstand kleiner wordt dan de in-gestelde distance. Bij object-moves-from zal de interactie optreden als de afstand groter wordt dan de ingestelde distance. Verder is het mogelijk om de afstand tussen een relatieve positie t.o.v. het target te berekenen. De eigenschappen van deze twee interacties zijn:

– target: Deze waarde moet de naam van de eerste marker bevatten. – object: Deze waarde moet de naam van de tweede marker bevatten.

– position (optioneel): Deze waarde bevat een relatieve positie t.o.v. het target. Vanaf deze positie wordt de afstand met het object berekend. De positie bestaat uit een x, y en z co¨ordinaat gescheiden door een komma.

– distance (optioneel): Deze waarde bevat de afstand tussen de objecten vanaf waar de interactie optreedt.

– new-scene: Deze waarde bevat de naam van een scene. Na het indrukken van de knop wordt overgegaan naar deze scene.

4.6.3

Lijst van markers (targets)

Het laatste onderdeel in het configuratiebestand is targets. Dit onderdeel bevat een lijst van alle markers die gebruikt worden binnen de applicatie.. Er zijn twee soorten markers:

• framemarkertarget: Dit omschrijft een Frame Marker3. Deze marker bevat enkele

ei-genschappen:

– name: Een unieke naam voor deze marker. – id: Het ID van de Vuforia framemarker.

– size: De grootte van het Frame Marker in aantal scene units van Unity.

• imagetarget: Dit omschrijft een Image Marker4. Dit target bevat de volgende

eigenschap-pen:

– name: Een unieke naam voor deze marker.

– database: De naam van het bestand welke de database bevat voor deze marker. – imagename: De naam van de afbeelding in de database.

– size: De grootte van de afbeelding in aantal scene units van Unity.

4.7

Generatie-script voor configuratiebestanden

Voor het genereren van een configuratiebestand voor een complexe applicatie, is een script ont-wikkeld in Python. In dit script worden eerst de informatie over de applicatie, de markers, de toestanden, de scenes en de interacties gespecificeerd.

De informatie over de applicatie bestaat uit vier onderdelen: de titel van de applicatie, een om-schrijving, de licentiecode van Vuforia en de start-scene.

De markers worden gespecificeerd volgens de structuur uit sectie 4.6.3.

De toestanden worden opgesteld als opsommingen. Elke soort toestand heeft een of meerdere mogelijke waarden.

De scenes worden gespecificeerd in een Python class. Voor elke mogelijke combinatie van toe-standen wordt deze class gebruikt voor het bepalen van de inhoud. In deze class zit een functie voor het ophalen van de objecten voor de scene. In deze functie kan d.m.v. condities bepaald worden welke objecten zichtbaar zijn voor de scene. In deze condities kan gecontroleerd worden

3Een uitleg over Frame Markers is te vinden op https://developer.vuforia.com/library/articles/Training/Frame-Markers-Guide

4Vuforia noemt dit een Image Target. Dit is een afbeelding als target. https://developer.vuforia.com/ library/articles/Training/Image-Target-Guide

(25)

of de huidige toestanden aan bepaalde waarden voldoet.

De interacties worden gespecificeerd in een Python class. In deze class kan d.m.v. condities bepaald worden of de interactie beschikbaar is. In deze condities kan gecontroleerd worden of de huidige toestanden aan bepaalde waarden voldoet. Bij de scene-overgang van een interactie kan een tekst weergegeven worden aan de gebruiker. Hiervoor wordt een extra scene toegevoegd voor de nieuwe state, waarbij de tekst ook als object wordt bijgevoegd.

Na de specificatie van de applicatie bevindt zich functionaliteit die elke mogelijke scene ge-nereert inclusief de objecten en interacties. Dit wordt gedaan door een scene te genereren voor elke mogelijke combinatie van toestanden. Vervolgens wordt dit omgezet naar het XML Schema voor het configuratiebestand.

In algoritme 4.1 is pseudocode te vinden waarin de werking van het configuratie-generatie script wordt omschreven.

Algorithm 4.1 Pseudocode van configuratiebestand generator. applicatieinf o ← name, description, license code, start-scene. targets ← list of markers.

states ← list of states and their possible values.

function Interaction 1(state) . Voor elke mogelijke interactie. if scene transition occurs for this state then

return True end if

return False end function

function Scene(state)

This function contains logic for showing objects based on the given state. end function

scenes ← empty list.

for all possible combination of states do scene ← Scene(state)

for all interactions do

if interaction(state) is True then Add interaction to scene. end if

end for

Add scene to scenes. end for

(26)
(27)

HOOFDSTUK 5

Experiment 1: Reanimatie

5.1

Methode

Als eerste experiment is er een demo applicatie gemaakt met dit framework. Deze demo appli-catie maakt gebruik van meerdere scenes, interacties en herkenningspunten.

De demo applicatie bevat een reanimatiecursus in MR. In deze applicatie wordt uitgelegd hoe er gehandeld moet worden bij een (mogelijke) hartstilstand. Hierbij wordt het stappenplan reanimeren[18] uitgevoerd:

1. Bewustzijn controleren.

2. Bel 112.

3. Controleer de ademhaling.

4. Start direct met 30 borstcompressies.

5. Beadem 2 keer.

6. Aankomst AED.

Bij elk deel wordt er uitleg gegeven met behulp van tekst en geprojecteerde 3D modellen. Er wordt onder andere uitgelegd hoe er gereanimeerd moet worden en hoe de AED bediend wordt.

(28)

In figuur 5.1 is een diagram te zien uit welke onderdelen de demo applicatie bestaat en welke overgangen tussen de onderdelen bestaan. De applicatie bestaat uit acht onderdelen. Elk van deze onderdelen bestaat uit ´e´en of meerdere scenes. De onderdelen zijn:

• start: De start van de applicatie. Hierin wordt aangegeven dat de marker voor het lichaam in beeld moet komen om de applicatie te starten.

• deel1: Dit onderdeel bevat het lichaam. Er zijn meerdere knoppen aanwezig in dit onder-deel. Er is ´e´en knop om aan te geven dat het persoon bij bewustzijn is en ´e´en knop welke aangeeft dat het persoon niet meer bij bewustzijn is. Ook is er een tekst zichtbaar welke uitleg geeft hoe het bewustzijn gecontroleerd wordt.

• deel2: Dit onderdeel wordt gebruikt om 112 te bellen of een ander 112 te laten bellen. Ook moet de AED door een omstander worden gehaald, als deze zich in het gebouw bevindt. Er is een knop om verder te gaan.

• deel3: Dit onderdeel wordt gebruikt om de ademhaling te controleren. De luchtweg wordt vrijgemaakt d.m.v. de kinlift1. Kijk, luister en voel voor ademhaling. Dit onderdeel bevat een uitleg in VR.

• deel4: In dit onderdeel worden de 30 borstcompressies uitgevoerd. Hierbij is de mogelijk-heid om uitleg te krijgen hoe een borstcompressie uitgevoerd moet worden.

• deel5: In dit onderdeel vindt zich de beademing plaats. Er is een mogelijkheid om uitleg te krijgen hoe dit werkt. Na de beademing wordt weer overgegaan op de borstcompressies, totdat er een AED in beeld is.

• deel6: Aankomst van de AED. Dit onderdeel wordt gestart als er een Frame Marker van een aed in beeld komt. De borstkas moet ontbloot worden en de aanwijzingen van de AED moeten gevolgd worden. Ook moeten de AED elektroden worden bevestigd. Na aankomst van de AED moet de reanimatie doorgaan. Een sticker op de borstkas andere op de zijkant van het lichaam. Geef het apparaat ruimte, apparaat gaat analyseren en mogelijk een schok toedienen.

• deel7: Aankomst van de ambulancezorgverleners. Dit onderdeel wordt gestart als de Frame Marker van de ambulance in beeld komt. De reanimatie moet doorgaan totdat de ambulancezorgverlener zegt te stoppen.

5.2

Resultaten

In de demo applicatie worden drie markers gebruikt. Er is een Image Marker voor het lichaam en er zijn twee Frame Markers: ´e´en voor de AED en een voor de ambulancezorgverleners. Deze zijn te vinden in bijlage C in figuur C.1 t/m C.3. Het configuratiebestand van de demo applicatie is te vinden in bijlage D.

In figuur 5.2 is een schermafbeelding van een scene uit de applicatie te zien. Op de afbeel-ding is voor beide ogen het beeld te zien, gescheiden door een witte lijn. De afbeelafbeel-ding bevat meerdere elementen uit het framework. Centraal in het beeld staat een tekst met een instructie of uitleg voor de gebruiker. Onder de tekst zijn twee virtuele knoppen zichtbaar, waarmee in de weergegeven scene aangegeven kan worden of de persoon een ademhaling heeft. Achter de virtuele knoppen is een 3D model van een lichaam zichtbaar welke gepositioneerd is t.o.v. de Image Marker voor het lichaam.

Het APK-bestand van de demo applicatie is te downloaden via de volgende URL: http: //sjoerdwenker.nl/mixedreality/reanimatie.apk.

(29)

Figuur 5.2: Scene deel1 start uit de demo applicatie. Deze afbeelding bestaat uit twee beelden, ´

(30)
(31)

HOOFDSTUK 6

Experiment 2: Microscoop

Als tweede experiment voor dit framework is gekozen om een applicatie te ontwikkelen welke ondersteuning biedt in het onderwijs. Voor deze applicatie is gekozen om de gebruiker te le-ren werken met een DM-750 microscoop. Deze microscoop wordt gebruikt in practica in het onderwijs.

In de practica worden regelmatig fouten gemaakt bij het gebruik van een microscoop en het preparaat. Dit brengt onnodig kosten met zich mee, doordat het preparaat onbruikbaar wordt en de microscoop mogelijk beschadigd raakt. Er zijn een aantal fouten die regelmatig voorkomen:

• Het gebruik van meerdere lichtbronnen tegelijk. Er mag altijd maar een lichtbron tegelijk gebruikt worden.

• Er wordt een onjuiste vergroting gebruikt. Bij het beginnen van een experiment moet altijd de kleinste vergroting ingesteld worden. Hierna kan de gebruiker scherpstellen. Nadat er een groter objectief gekozen is, mag er alleen nog scherpgesteld worden met de fijne scherpstelschroef.

• Het objectief staat te dicht bij het preparaat. Als de vergroting hoger wordt, gaat het preparaat dichter naar de lens. Bij een te hoge vergroting, drukt dit het preparaat of de lens kapot.

• De lichtbron staat niet goed ingesteld bij lichtmicroscopie. Er moet begonnen worden met het kleinste diafragma. Vervolgens mag het diafragma groter gezet worden.

6.1

Methode

De applicatie zal als doel hebben om de gebruiker te leren werken met een DM-750 microscoop. Deze microscoop heeft diverse instellingen. Voor elk van deze instellingen zal een interactie mogelijk zijn. De applicatie bevat de volgende interactiemogelijkheden:

• Het preparaat kan neergelegd worden. • Het objectief kan veranderd worden.

• Het diafragma van de lens kan aangepast worden. • Er kan grof scherpgesteld worden.

• Er kan fijn scherpgesteld worden. • Er kan door het oculair gekeken worden.

Voor het uitvoeren van elk van de interacties, behalve het kijken door het oculair, zal een marker gebruikt worden, welke verplaatst moet worden in de richting van de microscoop. Als deze binnen een bepaalde afstand van de microscoop komt, zal dit voor een scene-overgang zorgen. De applicatie bestaat uit de volgende markers:

(32)

• Image Marker voor het weergeven van de microscoop. • Frame Marker voor het preparaat.

• Frame Marker voor het veranderen van het objectief (40x, 20x, 10x, 4x). • Frame Marker voor het grof scherpstellen.

• Frame Marker voor het fijn scherpstellen. • Frame Marker voor het diafragma.

In de beginsituatie staat de microscoop verkeerd ingesteld. Er zal een te groot objectief ingesteld staan, de tafel begint op een hoogte van 5 cm en het diafragma is zeer klein. De gebruiker zal de microscoop eerst naar een correcte beginsituatie moeten zetten. Bij het fout proberen in te stellen, zal een waarschuwing worden weergegeven in het scherm.

Na het correct instellen van de microscoop naar de beginstand, zal de gebruiker het preparaat moeten plaatsen. Vervolgens kan worden scherpgesteld met eerst de grove scherpstelschroef. Als het beeld scherp is, kan een groter objectief ingesteld worden. Hierna mag de gebruiker alleen nog scherpstellen met de fijne scherpstelschroef.

Voor het genereren van deze applicatie zal gebruik gemaakt worden van het configuratiebe-stand generator script beschreven in sectie 4.7. Voor het genereren van de applicatie zullen de volgende toestanden met mogelijke waarden worden gebruikt:

• Diafragma: Klein beetje open, Meer open of Meest open. • Prepraat op tafel: Ja of Nee.

• Tafelhoogte: Laag, Midden, Hoger, Hoogst of Te hoog. • Objectief: 4x, 10x, 20x of 40x.

• MR Mode: AR of VR.

Bij het uitvoeren van een interactie, zal de actie uitgevoerd worden en wordt er een tekst getoond na de transitie. Als de marker vervolgens verder van de microscoop vandaan gaat, verdwijnt de tekst weer. Het is niet altijd mogelijk om de interacties uit te voeren. Bij het kijken door het oculair zit de gebruiker in VR Mode en zal het niet mogelijk zijn om de overige interacties uit te voeren. Dit moet ervoor zorgen dat de gebruiker niet onverwachts in een andere scene belandt.

6.2

Resultaten

De applicatie laat bij het openen eerst een startscherm zien met uitleg over de applicatie. Vervol-gens kan de applicatie gestart worden door op een knop op het scherm van de telefoon te drukken.

In de demo applicatie worden zes markers gebruikt. Op elk van deze markers is met een afbeelding aangegeven waar deze voor dient. Er is een Image Marker voor de microscoop en er zijn vijf Frame Markers. Deze zijn te vinden in bijlage E in figuur E.1 t/m E.6. Het confi-guratiebestand van deze applicatie is gegenereerd met het conficonfi-guratiebestand generatie script beschreven in sectie 4.7.

Met de applicatie is het mogelijk om in een AR-omgeving met behulp van markers de instel-lingen van de microscoop aan te passen. Als er door het oculair gekeken wordt, gaat de applicatie over in VR en wordt een passende afbeelding van het preparaat in beeld getoond. Zodra de ge-bruiker weer weggaat bij het oculair, gaat de applicatie weer over in AR. Bij het onjuist instellen van de microscoop wordt een melding weergegeven met uitleg.

In figuur 6.1 en figuur 6.2 zijn schermafbeeldingen van scenes uit de applicatie te zien. In het eerste figuur is een scene zichtbaar waarin de microscoop wordt afgebeeld op de Image marker. Er liggen vijf Frame Markers om de microscoop heen. Deze kunnen gebruikt worden voor het uitvoeren van interacties.

Het tweede figuur bevat een scene waarin de gebruiker door het oculair kijkt. Er wordt een afbeelding weergegeven in een VR-omgeving.

(33)

Figuur 6.1: Een AR scene uit de microscoop applicatie. In deze afbeelding staat in het midden een 3D model van een microscoop. Hier omheen zijn de overige Frame Markers zichtbaar. Deze zijn voor het uitvoeren van interacties.

Figuur 6.2: Een VR scene uit de microscoop applicatie. Hier wordt een afbeelding weergegeven welke zichtbaar is als de gebruiker door het oculair kijkt.

(34)
(35)

HOOFDSTUK 7

Conclusie

In deze scriptie is onderzoek gedaan naar een laagdrempelige manier voor het produceren van Mixed Reality applicaties. In hoofdstuk 2 is onderzoek gedaan naar de problemen die voorko-men bij het ontwikkelen van een MR applicatie. In sectie 2.2 is onderzocht welke oplossingen momenteel beschikbaar zijn voor deze problemen. Deze heffen de genoemde problemen echter niet volledig op.

Vervolgens is in hoofdstuk 3 een eigen ontwerp gemaakt voor een framework dat een oplossing biedt voor de genoemde problemen. De implementatie van dit ontwerp is beschreven in hoofd-stuk 4. Vervolgens zijn er twee experimenten gedaan met het framework. Het eerste experiment bevat een uitleg voor een reanimatie. Het tweede experiment dient als hulpmiddel voor het leren werken met een microscoop.

De oplossingen die dit framework biedt voor de genoemde problemen zijn volledig, maar niet toereikend. Als oplossing voor de moeilijkheid van het ontwikkelen van een applicatie, is gekozen om de applicatie in een configuratiebestand te beschrijven. Bij het maken van een uitgebreide applicatie die uit veel onderdelen bestaat, zoals in het tweede experiment, wordt het configuratiebestand onoverzichtelijk. Hiervoor is als oplossing een configuratiebestand generator ge¨ımplementeerd. Het nadeel van deze generator, is dat hier programmeerkennis voor nodig is.

7.1

Toekomstig onderzoek

In toekomstig onderzoek is het nodig om het maken van applicaties nog toegankelijker te maken. Het gebruik van een configuratiebestand geschreven in XML is onoverzichtelijk bij het maken van grote applicaties. Het zou een verbetering zijn als het maken van applicaties gedaan kan worden met behulp van een applicatie welke de applicatie visueel weergeeft en het configuratiebestand kan genereren.

(36)
(37)

BIJLAGE A

Gebruikte software

De gebruikte software binnen dit project is weergegeven in tabel A.1

Tabel A.1: Gebruikte software inclusief versienummer.

Naam software Versienummer Website

Unity v5.3.5f1 https://www.unity3d.com/

Vuforia 5.5.9 https://developer.vuforia.com/

Android SDK Tools 25.2.3 https://developer.android.com/studio/ Android SDK Build Tools 25.0.2 https://developer.android.com/studio/

A.1

Installatie van benodigde software

A.1.1

Installatie van Android SDK Tools en Android SDK Build Tools

Voor de installatie van de Android SDK Tools en Android SDK Build Tools moet allereerst de laatste versie van de SDK Manager gedownload worden op https://developer.android.com/ studio/index.html. Deze installatie bevat de Android SDK Tools. Na de installatie moeten in de SDK manager de Android SDK Build-tools, de Google USB Driver en een SDK Platform voor een Android versie vanaf API 9 worden ge¨ınstalleerd.

Voor het gebruiken van de applicaties moet in de Android telefoon USB Debugging aangezet worden. Dit kan in de Ontwikkelingsopties. Als de ontwikkelingsopties nog niet zijn ingeschakeld op de telefoon, kan dit door meermaals op het versienummer te toetsen bij de toestelinformatie in de instellingen van de telefoon.

A.1.2

Installatie van Unity

Voor het installeren van Unity kan het installatieprogramma van Unity gedownload worden op https://unity3d.com/get-unity.

In het installatieprogramma moet eerst de gebruikslicentie worden geaccepteerd. Vervolgens kunnen de componenten worden geselecteerd welke ge¨ınstalleerd moeten worden. Hier moet Android Build Support worden aangevinkt (zie figuur A.1). De overige opties hoeven niet uit-of aangevinkt te worden. Vervolgens kunnen de overige stappen in het installatieprogramma worden uitgevoerd.

Nadat Android SDK en Unity ge¨ınstalleerd zijn, moet het Android SDK pad ingesteld worden binnen Unity. Om dit in te stellen, moet een willekeurig project worden geopend binnen Unity. Vervolgens kunnen de instellingen worden geopend in het menu bij Edit → Preferences. In

(38)

Figuur A.1: Installatie van Unity met Android Build Support.

de instellingen kan bij het tabblad External Tools de locatie naar het Android SDK worden ingesteld.

A.2

Aanvragen van Vuforia License Keys voor applicaties

License Keys (licentiecodes) zijn gratis aan te vragen in de License Manager van Vuforia op https://developer.vuforia.com/. Hier volgt een stappenplan voor het aanvragen van een licentiecode:

1. Log in op het Developer Portal van Vuforia of maak een account aan.

2. Ga naar de License Manager onder het kopje Develop.

3. Klik op Add License Key. Vul vervolgens de naam van de applicatie in en stel Device in op Mobile. Tenslotte moet akkoord worden gegaan met de voorwaarden in de Vuforia Developer Agreement en kan de licentiecode worden aangemaakt.

4. Als de licentiecode is aangemaakt, kan deze worden opgehaald door in de License Manager op de naam van de applicatie te klikken.

De licentiecode kan gebruikt worden binnen het configuratiebestand uit sectie 4.6.

A.3

Aanmaken van Vuforia Image Marker database

Databases voor Image Markers kunnen worden aangemaakt via het Developer Portal op de website van Vuforia. Hier volgt een stappenplan voor het aanmaken van een database voor Image Markers:

1. Log in op het Developer Portal van Vuforia of maak een account aan.

2. Ga naar de Target Manager onder het kopje Develop.

3. Voeg een nieuwe database toe door op Add Database te klikken. De naam voor de database is een zelfgekozen naam. Het type voor de database moet worden ingesteld op Device.

4. Door in de Target Manager op de naam van de database te klikken, is het mogelijk om Targets (Image Markers) toe te voegen. Dit kan door op Add Target te klikken. Vervolgens moet het type Single image geselecteerd worden en kan een PNG- of JPG-afbeelding worden ge¨upload. Ook moeten hier de breedte van de marker en de naam van de marker worden opgegeven.

(39)

5. Nadat alle Image Markers zijn toegevoegd, kan een ZIP-archief van de database worden gedownload via Download Database. Het ‘development platform’ dat bij het downloaden geselecteerd moet worden is SDK.

6. Tenslotte kan het ZIP-archief worden geopend en kan de inhoud worden toegevoegd aan de applicatie. De afbeelding kan nu gebruikt worden als marker in de applicatie.

A.4

Aanmaken van Vuforia Frame Marker

Voor het ontwerpen van een Frame Marker bevat het framework 512 unieke templates. Binnen het framework is in de map Extras een ZIP-archief genaamd “frame-markers-transparent.zip“ beschikbaar met daarin elke mogelijke Frame Marker. Deze Frame Markers kunnen direct ge-bruikt worden als marker voor een applicatie. Het is ook mogelijk om de Frame Markers een eigen stijl te geven door de template te bewerken en een afbeelding in het midden te plaatsen. Daarbij is het wel benodigd om langs de randen aan binnen- en buitenzijde enige ruimte vrij te laten.

A.5

Bouwen van een applicatie met het framework

Voor het bouwen van een applicatie moet eerst de juiste software ge¨ınstalleerd zijn. Het instal-leren van de benodigde software wordt beschreven in bijlage A.1. Let hierbij op dat het Unity Project eenmaal is geopend en het pad naar de Android Build Tools juist is ingesteld. Indien bij het openen van het project slechts een scene zichtbaar is, moeten de overige scenes uit de map Assets/Scenes aan het project worden toegevoegd.

Nadat de gebruiker beschikt over een configuratiebestand met een geldige Vuforia licentie-code, kan de applicatie gebouwd worden. Het aanvragen van een licentie-code wordt beschreven in bijlage A.2.

De applicatie kan gebouwd worden op computers met het besturingssysteem Windows of Mac OS X. Voor het bouwen moet eerst het buildscript worden aangepast. Het buildscript dient in dezelfde map te staan als het configuratiebestand, de Image Marker databases en de 3D modellen. Op een computer met Mac OS X staat het buildscript in het bestand build.sh. Voor Windows staat het buildscript in het bestand build.bat. In het bestand moet de waarde van twee variabelen worden aangepast:

• U nityP ath: Dit moet het pad naar de locatie van de Unity executable bevatten.

• P rojectP ath: Dit moet het pad naar de locatie van het Unity Project van het Mixed Reality Framework bevatten.

Tenslotte kan het buildscript worden uitgevoerd. Op een computer met Windows kan dit door direct het bestand build.bat uit te voeren. Op een computer met Max OS X moet eerst met het Commando-prompt naar de map met het buildscript genavigeerd worden. Vervolgens kan de applicatie gebouwd worden met het commando “sh build.sh”.

(40)
(41)

BIJLAGE B

DTD Schema van configuratiebestand

< ! D O C T Y P E a p p l i c a t i o n [

<! E L E M E N T a p p l i c a t i o n ( info , scenes , t a r g e t s ) >

< ! E L E M E N T i n f o ( name , d e s c r i p t i o n , license , start - scene , d e b u g ?) > < ! E L E M E N T s c e n e s ( s c e n e +) > < ! E L E M E N T t a r g e t s ( f r a m e m a r k e r t a r g e t * , i m a g e t a r g e t *) > < ! E L E M E N T n a m e (# P C D A T A ) > < ! E L E M E N T d e s c r i p t i o n (# P C D A T A ) > < ! E L E M E N T l i c e n s e (# P C D A T A ) > < ! E L E M E N T start - s c e n e (# P C D A T A ) > < ! E L E M E N T d e b u g (# P C D A T A ) > < ! E L E M E N T s c e n e ( o b j e c t s * , i n t e r a c t i o n s *) > < ! A T T L I S T s c e n e n a m e ID # R E Q U I R E D > < ! A T T L I S T s c e n e t y p e ( VR | AR ) # R E Q U I R E D > < ! E L E M E N T o b j e c t s ( o b j e c t * , i m a g e * , t e x t *) > < ! E L E M E N T o b j e c t E M P T Y > < ! A T T L I S T o b j e c t t a r g e t I D R E F # R E Q U I R E D > < ! A T T L I S T o b j e c t p o s i t i o n C D A T A # R E Q U I R E D > < ! A T T L I S T o b j e c t f i l e n a m e C D A T A # R E Q U I R E D > < ! A T T L I S T o b j e c t s c a l e C D A T A # I M P L I E D > < ! A T T L I S T o b j e c t r o t a t i o n C D A T A # I M P L I E D > < ! E L E M E N T i m a g e E M P T Y > < ! A T T L I S T i m a g e t a r g e t I D R E F # R E Q U I R E D > < ! A T T L I S T i m a g e p o s i t i o n C D A T A # R E Q U I R E D > < ! A T T L I S T i m a g e f i l e n a m e C D A T A # R E Q U I R E D > < ! A T T L I S T i m a g e s c a l e C D A T A # I M P L I E D > < ! A T T L I S T i m a g e r o t a t i o n C D A T A # I M P L I E D > < ! E L E M E N T t e x t (# P C D A T A ) > < ! A T T L I S T t e x t t a r g e t I D R E F # R E Q U I R E D > < ! A T T L I S T t e x t p o s i t i o n C D A T A # R E Q U I R E D > < ! A T T L I S T t e x t s c a l e C D A T A # I M P L I E D > < ! A T T L I S T t e x t r o t a t i o n C D A T A # I M P L I E D > < ! E L E M E N T i n t e r a c t i o n s ( a p p e a r i n g m a r k e r * , d i s a p p e a r i n g m a r k e r * , b u t t o n * , object -moves - t o w a r d s * , object - -moves - f r o m *) >

< ! E L E M E N T a p p e a r i n g - m a r k e r E M P T Y > < ! A T T L I S T a p p e a r i n g - m a r k e r t a r g e t I D R E F # R E Q U I R E D > < ! A T T L I S T a p p e a r i n g - m a r k e r new - s c e n e I D R E F # R E Q U I R E D > < ! E L E M E N T d i s a p p e a r i n g - m a r k e r E M P T Y > < ! A T T L I S T d i s a p p e a r i n g - m a r k e r t a r g e t I D R E F # R E Q U I R E D > < ! A T T L I S T d i s a p p e a r i n g - m a r k e r new - s c e n e I D R E F # R E Q U I R E D >

(42)

< ! E L E M E N T b u t t o n E M P T Y > < ! A T T L I S T b u t t o n t a r g e t I D R E F # R E Q U I R E D > < ! A T T L I S T b u t t o n new - s c e n e I D R E F # R E Q U I R E D > < ! A T T L I S T b u t t o n p o s i t i o n C D A T A # R E Q U I R E D > < ! A T T L I S T b u t t o n s c a l e C D A T A # I M P L I E D > < ! A T T L I S T b u t t o n t e x t C D A T A # I M P L I E D > < ! E L E M E N T object - moves - t o w a r d s E M P T Y > < ! A T T L I S T object - moves - t o w a r d s o b j e c t I D R E F # R E Q U I R E D > < ! A T T L I S T object - moves - t o w a r d s t a r g e t I D R E F # R E Q U I R E D > < ! A T T L I S T object - moves - t o w a r d s p o s i t i o n C D A T A # R E Q U I R E D > < ! A T T L I S T object - moves - t o w a r d s d i s t a n c e C D A T A # R E Q U I R E D > < ! A T T L I S T object - moves - t o w a r d s new - s c e n e I D R E F # R E Q U I R E D > < ! E L E M E N T object - moves - f r o m E M P T Y >

< ! A T T L I S T object - moves - f r o m o b j e c t I D R E F # R E Q U I R E D > < ! A T T L I S T object - moves - f r o m t a r g e t I D R E F # R E Q U I R E D > < ! A T T L I S T object - moves - f r o m p o s i t i o n C D A T A # R E Q U I R E D > < ! A T T L I S T object - moves - f r o m d i s t a n c e C D A T A # R E Q U I R E D > < ! A T T L I S T object - moves - f r o m new - s c e n e I D R E F # R E Q U I R E D > < ! E L E M E N T f r a m e m a r k e r t a r g e t E M P T Y > < ! A T T L I S T f r a m e m a r k e r t a r g e t n a m e ID # R E Q U I R E D > < ! A T T L I S T f r a m e m a r k e r t a r g e t id C D A T A # R E Q U I R E D > < ! A T T L I S T f r a m e m a r k e r t a r g e t s i z e C D A T A # R E Q U I R E D > < ! E L E M E N T i m a g e t a r g e t E M P T Y > < ! A T T L I S T i m a g e t a r g e t n a m e ID # R E Q U I R E D > < ! A T T L I S T i m a g e t a r g e t i m a g e n a m e C D A T A # R E Q U I R E D > < ! A T T L I S T i m a g e t a r g e t d a t a b a s e C D A T A # R E Q U I R E D > ] >

(43)

BIJLAGE C

Demo markers voor de reanimatie demo

(44)

Figuur C.2: Frame marker met ID 100 voor AED.

Referenties

GERELATEERDE DOCUMENTEN

Mail ze dan naar Aduis (info@aduis.nl) en wij plaatsen deze dan als downlaod op onze web site.. Sachunterricht 5-6

Brandweerkazerne Egmond a/d Hoef Rustenburg 1a Egmond a/d Hoef Eigen huisvesting Is gesloopt en verkocht als onderdeel van project Kennemer Wonen.. De Kapberg Slotweg 17 Egmond a/d

In zijn reactie van 28 november 2005 geeft de minister van Defensie aan verheugd te zijn dat de tekortkomingen die de Algemene Rekenkamer in 2003 constateerde op het gebied van

De Algemene Rekenkamer beveelt de minister aan er zorg voor te dragen dat de fysieke beveiliging van militaire objecten in de praktijk wordt uitgevoerd.. Een tweede

Met dit bestemmingsplan worden alle karakteristieke objecten in de gemeente Midden-Groningen vastgelegd en voorzien van een regeling die toeziet op het, voor zover mogelijk, in

- Vanwege de redelijke mate van gaafheid van de stedenbouwkundige structuur van de directe omgeving van het woonhuis aan Het

Direct rechts van deze deur een rechthoekig enkelruits venster met wit geschilderde houten kozijnen en bakstenen lekdorpel.. Rechts van dit venster een

In het kader van de begrotingsbehandeling heeft fractie EVA verschillende schriftelijke vragen ingediend, waaronder de vraag; ‘Hoe borgt het college de maximale opbrengst voor