Interactive industrial demonstration with Unity and...

64
Scriptie ingediend tot het behalen van de graad van PROFESSIONELE BACHELOR IN DE ELEKTRONICA-ICT Interactive industrial demonstration with Unity and Kinect Cedric Baetens Departement Wetenschappen en Techniek Opleiding Elektronica-ICT Academiejaar 2014-2015 Interne promotor: Tim Dams Externe promotor: Kevin Heylen Versie: 11 juni 2015

Transcript of Interactive industrial demonstration with Unity and...

Page 1: Interactive industrial demonstration with Unity and Kinectbeta.eaict.ap.be/wp-content/uploads/2015/06/Baetens... · 2015. 6. 23. · de SDK v2. Bij het installeren van de de SDK zitten

Scriptie ingediend tot het behalen van de graad van

PROFESSIONELE BACHELOR IN DE ELEKTRONICA-ICT

Interactive industrial demonstration withUnity and Kinect

Cedric Baetens

Departement Wetenschappen en Techniek

Opleiding Elektronica-ICT

Academiejaar 2014-2015

Interne promotor: Tim DamsExterne promotor: Kevin Heylen

Versie: 11 juni 2015

Page 2: Interactive industrial demonstration with Unity and Kinectbeta.eaict.ap.be/wp-content/uploads/2015/06/Baetens... · 2015. 6. 23. · de SDK v2. Bij het installeren van de de SDK zitten

Dankwoord

Graag zou ik een woord van dank richten tot allen die hebben bijgedragen tot de realisatie vandeze bachelorproef.

Ik dank mijn stagebegeleider Heylen Kevin, voor zijn professionele feedback, die heeft geleid toteen optimalisatie van het eindproduct.

Ook aan mijn collega Vanroelen Glen, die mij de nodige informatie, hulp en steun heeft gegeven.

Hierbij gaat ook mijn dankwoord uit naar mijn stagementor Dams Tim, met zijn goede endoelgerichte raad. Zijn advies is van groot belang gebleken in het proces van het vervolledigenvan de proef.

Antwerpen, 11 juni 2015Cedric Baetens

i

Page 3: Interactive industrial demonstration with Unity and Kinectbeta.eaict.ap.be/wp-content/uploads/2015/06/Baetens... · 2015. 6. 23. · de SDK v2. Bij het installeren van de de SDK zitten

Abstract

De bachelorproef bestond uit een onderzoek te voeren en het ontwikkelen van een werkendprototype voor een beurs demo. Het doel van deze demo was dat een persoon een bepaalde3D omgeving moet kunnen bedienen aan de hand van lichaamsbewegingen.

Door gebruik te maken van de Unity Game Engine is er op een eenvoudige en overzichtelijkemanier een 3D omgeving opgesteld. Op bepaalde elementen konden interacties uitgevoerdworden. Deze interacties worden gedaan door middel van de Microsoft Kinect. Hiermee kunnenlichaamsbewegingen worden omgezet in interacties voor de demo. Wanneer de gebruiker voorde Kinect plaats neemt zal dit worden weergegeven op een scherm en krijgt hij instructies om deomgeving te bedienen. Er kan worden ingezoomd op bepaalde elementen om deze van dichterbij te bekijken en de toestand hiervan te veranderen. De gebruiker kan werken met een opvoorhand ontwikkelde scene, waarbij bepaalde vaten, met vloeistof, met elkaar verbonden zijn.Door het openen en sluiten van kleppen zal er vloeistof door de buizen vloeien en de inhoudvan bijhorende vaten wijzigen.

De combinatie van deze twee hebben er toe geleid dat de demo er visueel goed uitziet en datachterliggende software op een overzichtelijke manier ontwikkeld is.

ii

Page 4: Interactive industrial demonstration with Unity and Kinectbeta.eaict.ap.be/wp-content/uploads/2015/06/Baetens... · 2015. 6. 23. · de SDK v2. Bij het installeren van de de SDK zitten

Inhoudsopgave

Dankwoord i

Abstract ii

1 Situering 11.1 Het bedrijf: Intation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2 De opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.3 Opdrachtverloop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

2 Primaire Technologien 32.1 Kinect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2.1.1 Personen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42.1.2 Versie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42.1.3 SDK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2.2 Unity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.2.1 Algemeen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.2.2 Hierarchie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.2.3 Inspector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82.2.4 Scene scherm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.2.5 Game scherm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

2.3 Blender . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122.3.1 Algemeen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122.3.2 Hierarchie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122.3.3 Verschillende modi . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132.3.4 Modifiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

3 Eerste Prototype 163.1 Gemaakte Keuze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163.2 Vereisten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173.3 Uitwerking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

iii

Page 5: Interactive industrial demonstration with Unity and Kinectbeta.eaict.ap.be/wp-content/uploads/2015/06/Baetens... · 2015. 6. 23. · de SDK v2. Bij het installeren van de de SDK zitten

INHOUDSOPGAVE iv

3.3.1 Rondkijken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183.3.2 Rondlopen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183.3.3 Interactie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

4 Tweede Prototype 204.1 Vereisten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204.2 3D Figuur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

4.2.1 Kinect integratie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214.2.2 Rondlopen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

4.3 Scene . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

5 Finale, derde prototype 235.1 Vereisten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235.2 Kinect integratie met Unity . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

5.2.1 Kinect Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245.2.2 Gesture Listener . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265.2.3 Interaction Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

5.3 Camera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275.3.1 Zoomen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275.3.2 Verplaatsen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

5.4 (Interactieve) 3D Objecten . . . . . . . . . . . . . . . . . . . . . . . . . . . 285.4.1 Kleurvaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295.4.2 Kleppen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295.4.3 Combinatievat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305.4.4 Pomp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305.4.5 Tankboot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

5.5 Programma Toestanden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325.5.1 Initialisatie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325.5.2 Selecteren van een interactie object . . . . . . . . . . . . . . . . . . . 335.5.3 Interactie uitvoeren met het geselecteerde object . . . . . . . . . . . . 335.5.4 Tussentoestand voor detecteren van gebaren . . . . . . . . . . . . . . 345.5.5 Camera bewegen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345.5.6 Inzoomen van de camera . . . . . . . . . . . . . . . . . . . . . . . . 35

6 Resultaat 366.1 Tevredenheid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386.2 Analyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386.3 Eindgebruikers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386.4 Software Architectuur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386.5 Uitbreiding en/of verbeteringen in de toekomst . . . . . . . . . . . . . . . . . 41

6.5.1 Visueel weergeven met behulp van hardware . . . . . . . . . . . . . . 416.5.2 Meerdere scenes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

6.6 Gespendeerde tijd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

Page 6: Interactive industrial demonstration with Unity and Kinectbeta.eaict.ap.be/wp-content/uploads/2015/06/Baetens... · 2015. 6. 23. · de SDK v2. Bij het installeren van de de SDK zitten

INHOUDSOPGAVE v

7 Besluit 43

A Onderzoek 44A.1 Software Architectuur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

A.1.1 WPF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44A.1.2 Web Applicatie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

A.2 3D Omgeving . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46A.2.1 Unity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46A.2.2 Helix Toolkit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47A.2.3 Viewport3D in XAML . . . . . . . . . . . . . . . . . . . . . . . . . . 47A.2.4 XNA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

A.3 Kinect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

B Handleiding 49B.1 Project cloonen via Git . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

B.1.1 Installeren van Git . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49B.1.2 Lokale Git map aanmaken . . . . . . . . . . . . . . . . . . . . . . . . 50B.1.3 Project cloonen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

B.2 Project downloaden van publieke link . . . . . . . . . . . . . . . . . . . . . . 52B.3 Installeren van Unity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52B.4 Project openen in Unity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

C Internetbronnen 54C.1 Unity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54C.2 Algemeen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54C.3 Blender . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

Page 7: Interactive industrial demonstration with Unity and Kinectbeta.eaict.ap.be/wp-content/uploads/2015/06/Baetens... · 2015. 6. 23. · de SDK v2. Bij het installeren van de de SDK zitten

Lijst van figuren

2.1 Kinect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32.2 Kinect Lichaam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42.3 Hierarchie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.4 Informatie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82.5 Transformatie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.6 Collider . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.7 Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.8 Scene . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.9 Scene opties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.10 Game scherm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.11 Hierarchie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132.12 Object modus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132.13 Object modus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142.14 Modifiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.15 Solidify . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

3.1 Applicatie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173.2 Rondkijken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183.3 Rondlopen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

4.1 3D Figuur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214.2 Scene . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

5.1 Kinect Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255.2 Camera Controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275.3 Overwicht van alle interactieve objecten . . . . . . . . . . . . . . . . . . . . . 285.4 Kleurvaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295.5 Kleppen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295.6 Combinatievat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305.7 Pomp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

vi

Page 8: Interactive industrial demonstration with Unity and Kinectbeta.eaict.ap.be/wp-content/uploads/2015/06/Baetens... · 2015. 6. 23. · de SDK v2. Bij het installeren van de de SDK zitten

LIJST VAN FIGUREN vii

5.8 Tankboot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315.9 Selecteren van een interactie object . . . . . . . . . . . . . . . . . . . . . . . 325.10 Selecteren van een interactie object . . . . . . . . . . . . . . . . . . . . . . . 33

6.1 Resultaat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376.2 Architectuur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406.3 Opdrachtverloop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426.4 Finale, derde prototype . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

A.1 Windows Presentation Foundation . . . . . . . . . . . . . . . . . . . . . . . . 44A.2 Web Applicatie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45A.3 Unity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46A.4 Helix Toolkit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47A.5 XNA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

B.1 Lokale Git map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50B.2 Git Bash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51B.3 Git Commando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51B.4 Project openen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52B.5 Project selecteren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53B.6 Unity opstarten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

Page 9: Interactive industrial demonstration with Unity and Kinectbeta.eaict.ap.be/wp-content/uploads/2015/06/Baetens... · 2015. 6. 23. · de SDK v2. Bij het installeren van de de SDK zitten

Hoofdstuk1Situering

1.1 Het bedrijf: Intation

Intation is een bedrijf dat zich profileert in de procesautomatisatie en de regeltechniek. Zijhouden zich bezig met het ontwikkelen en programmatie van een bepaald industrieel proces.Het proces waar zij aan werken doet zich vaak voor in havenbedrijven. Bijgevolg werken zij duszo goed als altijd aan een proces dat wordt beheerd door middel van vaten, buizen en kleppen.

1.2 De opdracht

Doordat de bachelorproef werd opgeven vanuit het stage bedrijf zal deze zich bevinden in desector waar ze actief zijn.

Er moest een eye catcher worden ontwikkeld die men zal gebruiken op een beursstand. Debedoeling was dat mensen hier naartoe kwamen omdat dit vernieuwing bracht en ze liet smakennaar meer.

Wat er moest ontwikkeld worden was een controle paneel voor een bepaald industrieel proces.De persoon in kwestie nam plaats voor de Kinect (speciale bewegingscamera) en kon debesturing van een 3 dimensionale omgeving bedienen.

Er kon worden ingezoomd op bepaalde objecten en hierop konden interacties uitgevoerd worden.Aan de hand van dit object en interactie kon er informatie worden opgevraagd en zodoendekonden er parameters worden ingesteld.

De nadruk bij deze opdracht lag vooral op de simpliciteit, voor elk persoon die plaats nammoest het logisch zijn om hiermee direct te kunnen werken. Uitleg moest overbodig zijn maaroverleg kon leiden tot verbetering.

1

Page 10: Interactive industrial demonstration with Unity and Kinectbeta.eaict.ap.be/wp-content/uploads/2015/06/Baetens... · 2015. 6. 23. · de SDK v2. Bij het installeren van de de SDK zitten

HOOFDSTUK 1. SITUERING 2

1.3 Opdrachtverloop

In het begin van de bachelorproef was er onderzoek gevoerd naar de verschillende mogelijkhedendie een oplossing konden bieden. Dit kon nog verder worden onderverdeeld in 3D weergave enKinect.

Door de voor- en nadelen van elke mogelijkheid af te wegen met elkaar was er een keuze gemaaktmet welke technologie een eerste prototype opgesteld was. Dit prototype had als doel aan tetonen wat er allemaal mogelijk was en op welke manier dit kon gerealiseerd worden.

Aangezien het eerste prototype slechts een idee gaf wat mogelijk was, waren er zaken dieverbeterd konden worden. Rekening houdend hiermee werd er een tweede prototype opgestelddat een verbeterde werking had en dat gebruik maakte van een nieuwe technologie.

Door het tweede prototype waren er een aantal zaken aan het licht gekomen die niet intuıtiefwaren en die de werking met het product niet verbeterde. Hierdoor was er gekozen om op eenandere manier te werk te gaan en is het derde en ook het laatste prototype ontwikkeld. In ditprototype was het mogelijk eenvoudig en overzichtelijk te werken. In de toekomst is het simpelom dit uit te breiden en extra functionaliteit toe te voegen.

Page 11: Interactive industrial demonstration with Unity and Kinectbeta.eaict.ap.be/wp-content/uploads/2015/06/Baetens... · 2015. 6. 23. · de SDK v2. Bij het installeren van de de SDK zitten

Hoofdstuk2Primaire Technologien

2.1 Kinect

Het gebruik van de Kinect is een game- en ontspanningservaring zonder controller die isontwikkeld door Microsoft. Alvorens het project op de markt was verschenen had het alscodenaam: Project Natal.

De Kinect bestaat uit een camera met bijhorende software, waarmee systemen kunnen bediendworden, zonder gebruik te maken van een controller. De interactie is mogelijk door gebaren temaken met het hele lichaam, gesproken tekst of door voorwerpen voor de camera te houden.

De software is in staat tot complexe gebaar-, spraak- en gezichtsherkenning. Hierbij kunnenniet alleen hand- en armgebaren herkend worden maar ook volledige lichaamsbewegingen.Afhankelijk van de afstand tot de Kinect kunnen zelfs vingers worden herkend.

Figuur 2.1: Kinect

3

Page 12: Interactive industrial demonstration with Unity and Kinectbeta.eaict.ap.be/wp-content/uploads/2015/06/Baetens... · 2015. 6. 23. · de SDK v2. Bij het installeren van de de SDK zitten

HOOFDSTUK 2. PRIMAIRE TECHNOLOGIEN 4

2.1.1 Personen

Het is mogelijk om met 6 mensen tegelijk voor de camera plaats te nemen en deze elk afzonderlijkte volgen. Voor de Kinect bestaat een persoon uit 25 verschillende punten van het lichaam.Deze punten gaan van de hoofd tot aan de voeten. Elk van deze punten hebben hun eigencoordinaten in een 3D assen stelsel. Hierdoor laat het ons toe om bepaalde bewegingen die depersonen maken op te meten en te volgen.

Figuur 2.2: Kinect Lichaam

2.1.2 Versie

Momenteel zitten we al aan de 2e versie van de Kinect. Deze versie heeft een aantalverbeteringen die zijn aangebracht ten opzichte van de eerste versie.

� Beter horizontaal en vertikaal field of view.

� Full HD camera (1920x1080, 30 Hz)

� Betere diepte sensor, hiermee heeft de Kinect een werkingsafstand van 0.5M tot en met4.5M

� Nieuwe actieve infrarood sensor waarmee ook in het donker beeld kan worden opgevraagd.

� Verbeterde microfoon

� Detecteren van 6 mensen tegelijk waarbij elk persoon bestaat uit 25 punten.

2.1.3 SDK

Wanneer we applicaties willen ontwikkelen waar de Kinect gebruikt wordt, moeten we de SDKdownloaden. Aangezien we gebruik maken van de 2e versie van de Kinect spreken we hier over

Page 13: Interactive industrial demonstration with Unity and Kinectbeta.eaict.ap.be/wp-content/uploads/2015/06/Baetens... · 2015. 6. 23. · de SDK v2. Bij het installeren van de de SDK zitten

HOOFDSTUK 2. PRIMAIRE TECHNOLOGIEN 5

de SDK v2.

Bij het installeren van de de SDK zitten een aantal (kleine) voorbeeld programma’s die kunnenopgestart worden en waarvan de broncode kan bekeken worden. Deze programma’s zijngeschreven in een aantal verschillende software talen. C++, C# met WPF en C# met Windowsstore applicatie.

Page 14: Interactive industrial demonstration with Unity and Kinectbeta.eaict.ap.be/wp-content/uploads/2015/06/Baetens... · 2015. 6. 23. · de SDK v2. Bij het installeren van de de SDK zitten

HOOFDSTUK 2. PRIMAIRE TECHNOLOGIEN 6

2.2 Unity

Voor het behaalde eindresultaat is gebruik gemaakt van de Unity game engine. Zo is op eeneenvoudige manier een Interactieve 3D scene ontwikkeld die gebruik maakt van verschillendeelementen in de engine. Alle nodige delen die hiervoor nodig zijn geweest staan in dit hoofdstukuitgelegd.

2.2.1 Algemeen

Unity is een cross-platform game engine dat ontwikkeld is door Unity Technologies. Het wordtgebruikt om video games te ontwikkelen voor verschilleden platformen waaronder: PC, consoles,mobiele apparaten en websites. Momenteel zijn er reeds 5 versies van Unity, waarbij de laatsteversie gratis alle features aanbied met minder bron code en betere support.

De game engine maakt gebruikt van verschillende APIs voor het weergeven van de 3D content.

� Direct3D wordt gebruikt voor Windows en Xbox 360

� OpelGL wordt gebruikt voor Mac, Windows en Linux

� OpenGL ES wordt gebruikt op mobiel‘e apparaten die werken met Android of iOS.

Er wordt gebruikt gemaakt van verschillende texture compressies en resolutie opties voor elkplatform waarvoor de game ontwikkeld is en bied ondersteuning voor bump mapping, reflectionmapping, parallax mapping, sceen space ambient occlusion (SSA0), dynamic shadows usingshadow maps, render-to-texture en full-screen post-processing effects.

De game engines scripting is ontwikkeld in Mono (dit is de opensource implementatie van het.NET Framework). Eigen scripts kunnen ontwikkeld worden in UnityScript (word aanschouwdals javascript), C# of Boo.

2.2.2 Hierarchie

De hierarchie wordt gebruikt voor alle objecten die zich in de scene bevinden. Telkens er eennieuw object wordt toegevoegd is dit hier in te zien.

Er kunnen een heleboel verschillende elementen worden toegevoegd. De meeste van de objectenzullen 3D elementen zijn maar ook elementen die gebruikt worden voor het opstellen van deGUI zullen hierin voorkomen.

Er is ook de mogelijkheid om elk element hier te gaan koppelen als child van een ander object.Op deze manier is het eenvoudig om bepaalde objecten te gaan groeperen alsook een eenvoudigoverzicht te behouden uit welke verschillende elementen de scene is opgebouwd.

Page 15: Interactive industrial demonstration with Unity and Kinectbeta.eaict.ap.be/wp-content/uploads/2015/06/Baetens... · 2015. 6. 23. · de SDK v2. Bij het installeren van de de SDK zitten

HOOFDSTUK 2. PRIMAIRE TECHNOLOGIEN 7

Om nieuwe elementen toe te voegen zijn er verschillende mogelijkheden. Een van deze is omelementen hier rechtstreeks in te slepen vanuit een bepaalde map maar. Het is ook mogelijk omstandaard elementen toe te voegen die dan worden aangemaakt door Unity zelf. Deze objectenkunnen we aanroepen door middel van een rechter klik op het Hierarchie venster.

Figuur 2.3: Hierarchie

Page 16: Interactive industrial demonstration with Unity and Kinectbeta.eaict.ap.be/wp-content/uploads/2015/06/Baetens... · 2015. 6. 23. · de SDK v2. Bij het installeren van de de SDK zitten

HOOFDSTUK 2. PRIMAIRE TECHNOLOGIEN 8

2.2.3 Inspector

De inspector is een venster binnen Unity dat wordt gebruikt om aan een bepaald element binnende 3D scene een extra functie te geven. Deze extra functionaliteiten worden componentengenoemd. Er zijn veel van deze componenten, elk met hun eigen functie. De meest voorkomendedie ik heb gebruikt voor deze opdracht zal ik hieronder toelichten.

Informatie

Het informatie gedeelte bevindt zich bovenaan en is bij elk object aanwezig. Hiermee is hetmogelijk om bepaalde zaken die nodig zijn bij het oproepen van het element te gaan instellen.

� Met de checkbox is er de mogelijkheid om te kiezen of het object moet wordenweergegeven.

� Elk object heeft zijn individuele naam die op elk moment kan worden aangepast.

� Er is ook de mogelijkheid om aan een element een bepaalde tag mee te geven. Deze tagfungeert als een soort van groep die het mogelijk maakt om met verschillende objectenvan dezelfde groep te gaan werken.

� Door middel van de prefab connectie kunnen er meerdere objecten worden aangemaaktdie allemaal exact de zelfde eigenschappen bevatten.

Figuur 2.4: Informatie

Transformatie

Met het transformatie gedeelte kan er worden bepaald hoe het object er uitziet en waar hetzich bevindt in de scene.

Door middel van de positie parameter kan een 3D coordinaat worden ingesteld. Wanneer hetgeselecteerd object geen child is van een ander object dan is dit de positie in de 3D wereld.Wanneer dit echter wel het geval is dan wordt de positie bepaald ten opzichte van het parentobject.

Met de rotatie parameter kunnen we de rotatie van het object gaan aanpassen, net zoals bijde positie is dit ook mogelijk in drie verschillende assen. Er is ook de mogelijk om een getal inte vullen groter dan 360 graden of kleiner dan 0 graden. Unity zal dit automatisch omrekenennaar de juist waarde.

Page 17: Interactive industrial demonstration with Unity and Kinectbeta.eaict.ap.be/wp-content/uploads/2015/06/Baetens... · 2015. 6. 23. · de SDK v2. Bij het installeren van de de SDK zitten

HOOFDSTUK 2. PRIMAIRE TECHNOLOGIEN 9

Door gebruik te maken van de scale parameter kan de grootte van het object worden veranderd.Wanneer er een wordt ingeven heeft het object zijn originele grootte. Een waarde groter daneen zal resulteren in een vergroot object en een waarde kleiner dan 0 zal er voor zorgen dat hetobject verkleint.

Figuur 2.5: Transformatie

Collider

Een collider is een component dat wordt gebruikt voor het detecteren wanneer 2 verschillendeobjecten met elkaar kruisen. Een bijkomende functie hiervan is dat het ook kan worden gebruiktdat bepaalde objecten val elkaar af botsen in plaats van dat ze door elkaar zullen gaan.

De positie van deze collider kan worden ingesteld door gebruik te maken van de center parameter.Deze parameter is het center punt in 3D coordinaten van de collider. De grootte van de colliderword ingesteld met de size parameter.

De collider is visueel te zien in de scene view (meer over de scene view in het volgende puntje)door middel van een groen object. Op deze manier is op een eenvoudige manier te zien waardeze zich exact bevindt en hoe groot deze is.

Binnen Unity zijn er een aantal verschillend colliders die gebruikt kunnen worden waarbij elkvan deze beter geschikt is voor een andere functie.

� Box collider: gebaseerd op een kubus.

� Sphere collider: gebaseerd op een bol.

� Mesh collider: gebaseerd op het zelf instellen van een 3D object. Dit wordt meestalgebruikt als je een complexe detectie moet gaan uitvoeren.

Figuur 2.6: Collider

Page 18: Interactive industrial demonstration with Unity and Kinectbeta.eaict.ap.be/wp-content/uploads/2015/06/Baetens... · 2015. 6. 23. · de SDK v2. Bij het installeren van de de SDK zitten

HOOFDSTUK 2. PRIMAIRE TECHNOLOGIEN 10

Script

De script component is de meest geavanceerde en complexe. Deze kan worden toegevoegdomdat hiermee de meeste functionaliteit kan worden gegeven. Scripts worden zelf geschrevenaan de hand van een van de drie verschillende programmeer talen die Unity ondersteund.

Publieke variabelen die worden aangemaakt binnen het script kunnen vanuit de Unity interfaceworden ingesteld. Afhankelijk van welk variabele type er wordt aangemaakt zal dit op eenandere manier ingesteld worden. Er is ook de mogelijkheid om bepaalde objecten mee te gevenaan het script. Hierdoor kan er eenvoudig met andere objecten gewerkt worden.

Figuur 2.7: Script

2.2.4 Scene scherm

Het scene scherm wordt gebruikt voor het plaatsen en ontwerpen van de scene. Elk verschillendobject dat je wilt gebruiken moet je hier in aanmaken. Dit scherm maakt het mogelijk om eenvolledig overzicht te verkrijgen van alle verschillende 3D objecten.

Figuur 2.8: Scene

Page 19: Interactive industrial demonstration with Unity and Kinectbeta.eaict.ap.be/wp-content/uploads/2015/06/Baetens... · 2015. 6. 23. · de SDK v2. Bij het installeren van de de SDK zitten

HOOFDSTUK 2. PRIMAIRE TECHNOLOGIEN 11

Door middel van de verschillende knoppen die zich links bovenbaan bevinden kan defunctionaliteit van de muis worden gewijzigd.

� Wanneer het handje geselecteerd is kan men rondkijken in de scene alsook inzoomen enroteren.

� Wanneer de 4 pijltjes zijn geselecteerd is er de mogelijkheid om bepaalde objecten te gaanverplaatsen.

� Door de 2 ronddraaiende pijlen kan men de rotatie van objecten gaan wijzigen

� Met de voorlaatste knop kan men de grootte van objecten instellen.

� Wanneer de laatste optie is geselecteerd zal de omtrek van elk object worden weergeven.

Figuur 2.9: Scene opties

2.2.5 Game scherm

Het game venster laat zien wat de gebruiker uiteindelijk te zien zal krijgen. Het beeld dat hierwordt op weergeven wordt gecreeerd door de camera in de scene. Wanneer de camera verplaatstzal wordt zal ook deze veranderen.

Er is de optie om dit scherm in fullscreen te zien om een nog betere demo te kunnen weergeven.Als bijkomende functie kan de ’stats’ optie worden ingeschakeld en wordt een technischeinformatie weergeven zoals het aantal frames per seconde, geheugen dat nodig is, enz.

Figuur 2.10: Game scherm

Page 20: Interactive industrial demonstration with Unity and Kinectbeta.eaict.ap.be/wp-content/uploads/2015/06/Baetens... · 2015. 6. 23. · de SDK v2. Bij het installeren van de de SDK zitten

HOOFDSTUK 2. PRIMAIRE TECHNOLOGIEN 12

2.3 Blender

De 3D modellen die ik gebruikt heb in de scene heb ik zo goed als allemaal zelf ontwikkeld, opde tankboot en klep na. Hiervoor heb ik gebruik gemaakt van blender, een gratis programma,dat mag gebruikt worden zonder dat er een bepaalde licentie moet voor worden aangekocht.

2.3.1 Algemeen

Blender is een gratis en open-source 3D computer grafisch programma. Het programmawordt gebruikt voor het ontwikkelen van geanimeerde video’s, visuele effecten, 3D modellen,interactieve 3D applicaties en video games.

Blender heeft een heleboel features die gebruikt worden voor het verkrijgen van het gewensteresultaat.

� 3D modellen

� UV ontmanteling

� Textuur

� Tuigage en velvorming

� Vloeistof en rook simulatie

� ...

De eerste versie van blender is ontwikkeld in 1995 door Blender Foundation. Op 31 Maart 2015is hun laatste nieuwe versie 2.74 uitgekomen. Het programma is ontwikkeld in C, C++ alsookPython. De software is te gebruiken op zowel Windows, Linux als Mac OS.

2.3.2 Hierarchie

Net zoals bij Unity heeft ook blender een bepaalde hierarchie waarmee kan gewerkt worden.Hierin zitten alle verschillende elementen waaruit de blender scene is opgebouwd. Aangezienik Blender enkel heb gebruikt voor het ontwikkelen van 3D modellen heb ik elementen zoalscamera en belichting niet nodig gehad.

Voor mijn 3D modellen heb ik geprobeerd een zo goed mogelijke structuur te behouden in deverschillende elementen waaruit het model bestond. Zo was er een aanpassing van bepaaldedelen.

Page 21: Interactive industrial demonstration with Unity and Kinectbeta.eaict.ap.be/wp-content/uploads/2015/06/Baetens... · 2015. 6. 23. · de SDK v2. Bij het installeren van de de SDK zitten

HOOFDSTUK 2. PRIMAIRE TECHNOLOGIEN 13

Figuur 2.11: Hierarchie

2.3.3 Verschillende modi

Binnen blender zijn er verschillende modi die gebruikt kunnen worden om een bepaaldefunctionaliteit te verkrijgen. Aangezien ik niet alle modi heb gebruikt bespreek ik enkel derelevante.

Object Modus

De object modus wordt gebruikt voor de verschillende elementen, waaruit de scene bestaat opte stellen. Met deze modus is er de mogelijkheid om op een heel object een transformatie uitte voeren. Dit wil zeggen dat we deze objecten kunnen verplaatsen, roteren alsook vergrotenof verkleinen.

Figuur 2.12: Object modus

Edit Modus

Elk 3D object is opgebouwd uit verschillende delen die allemaal samen de vorm van het objectbepalen.

� De vertices: enkele punten in de 3D omgeving.

� De edges: lijnen die 2 vertices met elkaar verbinden.

Page 22: Interactive industrial demonstration with Unity and Kinectbeta.eaict.ap.be/wp-content/uploads/2015/06/Baetens... · 2015. 6. 23. · de SDK v2. Bij het installeren van de de SDK zitten

HOOFDSTUK 2. PRIMAIRE TECHNOLOGIEN 14

� De faces: de hoogste level structuur van een object en de plaats tussen 3 of 4 vertices.

Met behulp van de edit modus kunnen we elk van deze 3 delen aanpassen om op deze manier degewenste vorm van het object te verkrijgen. Ook is er de mogelijkheid om faces uit te trekkenwaardoor meer complexere vormen gecreeerd worden.

Figuur 2.13: Object modus

2.3.4 Modifiers

Met behulp van modifiers kunnen we bepaalde complexe vormen creeren zonder dat we hierhandmatig elk punt moeten aanmaken. Er zijn een heleboel modifiers die elk hun functie hebbenmet elk hun eigen parameters die kunnen worden ingesteld.

Binnen het project heb ik hiervan er maar een nodig gehad, namelijk ’solidify’. Met dezemodifier heb ik de waterpijpen ontwikkeld. Deze tool laat toe om rond een bepaalde lijn in de3D scene een ’cirkel’ te trekken. Afhankelijk van de parameters die je hieraan meegeeft wordtbepaald hoe groot deze is en uit hoeveel verschillende faces deze is opgebouwd. Hoe meerfaces dat de cirkel bevat hoe ronder hij zal tonen maar hoe meer belastend het is om weer tegeven. Door hier een gulden middenweg te vinden heb ik geprobeerd buizen te ontwikkelen dieer zowel goed uitzien als niet te belastend zijn om weer te geven.

Page 23: Interactive industrial demonstration with Unity and Kinectbeta.eaict.ap.be/wp-content/uploads/2015/06/Baetens... · 2015. 6. 23. · de SDK v2. Bij het installeren van de de SDK zitten

HOOFDSTUK 2. PRIMAIRE TECHNOLOGIEN 15

Figuur 2.14: Modifiers

Figuur 2.15: Solidify

Page 24: Interactive industrial demonstration with Unity and Kinectbeta.eaict.ap.be/wp-content/uploads/2015/06/Baetens... · 2015. 6. 23. · de SDK v2. Bij het installeren van de de SDK zitten

Hoofdstuk3Eerste Prototype

Na het uitvoeren van het onderzoek (voor info rond het onderzoek, bekijk het appendixachteraan de scriptie) en de bespreking van alle voor- en nadelen moest er een keuze wordengemaakt en gewerkt worden aan een eerste prototype. Deze had als functie de verschillendemogelijkheden aan te tonen die haalbaar waren en bereikt konden worden.

Er werd gezocht naar bepaalde voorbeelden van andere mensen die pasten binnen deze opdrachten waarvan bepaalde delen konden worden gebruikt. Door verschillende van deze elementen tecombineren met elkaar zodat ze een geheel vormen, kon achteraf een meer gedetailleerde keuzeworden gemaakt.

3.1 Gemaakte Keuze

Voor het eerste prototype werd er gekozen voor de ontwikkeling van een WPF applicatie waarbijwe gebruik zullen maken van de Helix Toolkit om de 3D wereld op te stellen.

Het grote voordeel van een WPF applicatie is dat deze gebruik maakt van de .NET bibliotheek.Hierdoor kon door weinig code te schrijven toch zeer krachtige en overzichtelijke software teontwikkelen. Aangezien mijn kennis met .NET op dat moment het grootste was gaf mij ditde meeste om tot een goed resultaat te bekomen. Alsook was implementatie van de Kinectrelatief eenvoudig en kon veel voorbeeld code hergebruikt worden.

Door gebruik te maken van de Helix Toolkit was er een uitgebreide bibliotheek waarbij complexe3D items op een eenvoudige manier konden weergeven worden. Het voordeel van de hiervanis dat dit een opensource project is waarbij de gehele broncode kon bekeken worden. Op dezemanier konden eventuele zaken die onduidelijk waren opgezocht worden om alsnog de werkingbegrijpen.

16

Page 25: Interactive industrial demonstration with Unity and Kinectbeta.eaict.ap.be/wp-content/uploads/2015/06/Baetens... · 2015. 6. 23. · de SDK v2. Bij het installeren van de de SDK zitten

HOOFDSTUK 3. EERSTE PROTOTYPE 17

3.2 Vereisten

Bij het begin van de opdracht waren er een aantal eisen waaraan het prototype moest voldoen.Dit zijn verschillende eigenschappen, die moesten aangetoond worden. Wat was er mogelijk enhoe kwamen we tot een sluitend resultaat? Het was belangrijk dat ons resultaat meetbaar zouzijn, zodat er achteraf kon worden gekeken wat realiseerbaar was en wat niet.

Vereisten:

� Detecteren van het lichaam wanneer persoon voor de Kinect plaatsneemt.

� Ontwerpen van een 3D omgeving.

� Met bepaalde 3D objecten kunnen aantonen dat interactie mogelijk is.

� Rondlopen mogelijk maken in de 3D omgeving.

3.3 Uitwerking

De applicatie bestond er uit dat men in een simpele 3D wereld kon rondlopen. De wereldbestond uit 3 muren alsook een plateau op de grond. Hiermee kon worden aangetoond dat erinteractie mogelijk was.

Figuur 3.1: Applicatie

Page 26: Interactive industrial demonstration with Unity and Kinectbeta.eaict.ap.be/wp-content/uploads/2015/06/Baetens... · 2015. 6. 23. · de SDK v2. Bij het installeren van de de SDK zitten

HOOFDSTUK 3. EERSTE PROTOTYPE 18

3.3.1 Rondkijken

Wanneer de applicatie was opgestart werden er 2 grote vierkanten op het scherm getoondwaarbij het linker werd gebruikt om rond te kijken. Door middel van de linker hand van degebruiker kon men dit besturen. In een groot vierkant was een klein vakje dat kon wordenverplaatst naar de kijkrichting.

Figuur 3.2: Rondkijken

3.3.2 Rondlopen

Het rondlopen in de 3D wereld gebeurde aan de hand van het rechter grote vierkant, dat zoalsbij het rondkijken werd bediend door een hand beweging maar deze keer door de rechter hand.Wanneer men het kleine vakje in de vertikale richting bewoog, kon er ook in de vertikale richtingworden rondgelopen. Dit gold ook voor de horizontale richting.

Figuur 3.3: Rondlopen

Page 27: Interactive industrial demonstration with Unity and Kinectbeta.eaict.ap.be/wp-content/uploads/2015/06/Baetens... · 2015. 6. 23. · de SDK v2. Bij het installeren van de de SDK zitten

HOOFDSTUK 3. EERSTE PROTOTYPE 19

3.3.3 Interactie

Wanneer de gebruiker vooruit liep tot hij op de blauwe schijf terecht kwam, werd dit gedetecteerden kwam er op het scherm een melding. De detectie hiervan verliep aan de hand van coordinatenvan de camera en de blauwe schrijf. Wanneer de camera in de buurt kwam waren dezecoordinaten bijna gelijk aan elkaar. Op deze manier kon dan een trigger worden gestuurddie een boodschap ging tonen.

Zo werd aangetoond dat interactie tussen verschillende objecten, die zich in de scene bevonden,mogelijk was. Complexere situaties waren nog niet van toepassing, aangezien dit slechts omeen prototype ging, waarbij de verschillende mogelijkheden aangetoond werden.

Page 28: Interactive industrial demonstration with Unity and Kinectbeta.eaict.ap.be/wp-content/uploads/2015/06/Baetens... · 2015. 6. 23. · de SDK v2. Bij het installeren van de de SDK zitten

Hoofdstuk4Tweede Prototype

Uit analyse van de werking van het eerste prototype bleek dat de keuze om met een WPFapplicatie met Helix te gaan werken niet de ideale oplossing was. Doordat de 3D wereld volledigmoest worden opgesteld in achterliggende code, was het moeilijk om deze in de toekomst tegaan uitbreiden. Vermits er geen grondige kennis van programmatie aanwezig was. Doordatdeze limitaties niet verholpen konden worden met deze toolkit werd er overgeschakeld naar eenbeter, maar vooral gebruiksvriendelijker alternatief.

Uit het onderzoek dat in het begin was gevoerd bestond ook de mogelijkheid om met Unity tewerken. Dit was niet de eerste keuze vanwege de moeilijke instap factor.

Aangezien de 3D wereld op een eenvoudigere manier kon opgesteld worden was dit prototypeontwikkeld met het Unity platform.

4.1 Vereisten

� Eenvoudige 3D wereld kunnen opstellen, waarbij zonder extra kennis elementen kunnenworden toegevoegd.

� Detecteren van het lichaam wanneer een persoon voor de Kinect plaatsneemt.

� 3D lichaam weergeven in de 3D wereld en zorgen dat men kan rondlopen.

� Interacties kunnen uitvoeren met objecten, geplaatst in de 3D wereld.

20

Page 29: Interactive industrial demonstration with Unity and Kinectbeta.eaict.ap.be/wp-content/uploads/2015/06/Baetens... · 2015. 6. 23. · de SDK v2. Bij het installeren van de de SDK zitten

HOOFDSTUK 4. TWEEDE PROTOTYPE 21

4.2 3D Figuur

De 3D figuur bestond uit een 3D model. Aangezien mensen voor mij nog te moeilijk waren omzelf te ontwikkelen, had ik geopteerd om deze te downloaden van de asset store. Dit modelwas zeer eenvoudig en niet gedetailleerd, maar was toch voldoende om aan te tonen dat hetom een geanimeerde figuur ging.

Figuur 4.1: 3D Figuur

4.2.1 Kinect integratie

Wanneer een persoon voor de Kinect plaats nam werd dit gedetecteerd door het programmaen kwam de 3D figuur ’tot leven’. Elke beweging die werd gemaakt door de persoon werd dusook gemaakt door het geanimeerde figuur. Op deze manier werd een levendig geheel gecreeerd,waardoor het leek dat de persoon echt in het programma zat.

4.2.2 Rondlopen

Het rondlopen in het programma werd gedaan door middel van animaties die op het 3D modelaanwezig waren. Wanneer het commando werd gegeven tot bewegen, werd deze animatiegeactiveerd en kon men dit dus visueel volgen.

Doordat de persoon gekoppeld was met het 3D figuur werden deze commando’s gegeven doormiddel van bepaalde handbewegingen. Wanneer de persoon beide handen links van het lichaamhield liep het 3D figuur naar links. Zo ook voor de rechter activatie. Deze manier van werkengold ook voor het naar voren en naar achteren lopen. Er is voor deze manier geopteerd omdatde 3D scene groter was dan het gebied waarin de Kinect de persoon detecteerde.

Page 30: Interactive industrial demonstration with Unity and Kinectbeta.eaict.ap.be/wp-content/uploads/2015/06/Baetens... · 2015. 6. 23. · de SDK v2. Bij het installeren van de de SDK zitten

HOOFDSTUK 4. TWEEDE PROTOTYPE 22

4.3 Scene

De 3D Scene was in dit prototype veel verbeterd en niet te vergelijken met het eerste prototype.

Op het moment dat dit prototype was ontwikkeld, werd er besloten om een bepaald chemischproces na te bootsen: een aantal vaten zijn met elkaar verbonden en er zijn kleppen in de scenedie invloed kunnen hebben op het resultaat.

Er moest fysisch kunnen rondgelopen worden in de 3D scene en bepaalde elementen stondenboven elkaar. Dus moest er een oplossing worden bedacht zodat op een innovatieve manierhier toch mee kon gewerkt worden. Zoals op de foto hieronder, was er een trap ontwikkeld,waar het 3D personage kon op lopen en zowel de vaten bovenaan als de kleppen in het middenbedienen.

Figuur 4.2: Scene

Page 31: Interactive industrial demonstration with Unity and Kinectbeta.eaict.ap.be/wp-content/uploads/2015/06/Baetens... · 2015. 6. 23. · de SDK v2. Bij het installeren van de de SDK zitten

Hoofdstuk5Finale, derde prototype

Uit analyse van het tweede prototype was gebleken dat de fysieke restricties die ontstondendoor het rondlopen niet innovatief en vooral tijdrovend waren.

Voor het eindresultaat is gekozen voor een techniek waarbij het mogelijk was om in te zoomenop bepaalde objecten en deze dan te selecteren. Eenmaal het object naar wens was geselecteerd,kon men hier interacties op uitvoeren en de werking van de scene gaan beınvloeden.

5.1 Vereisten

� Selecteren van een object in de 3D wereld.

� Interacties uitvoeren met een geselecteerd object.

� Verplaatsen en inzoomen van de camera in de scene.

� Boot die op water vaart en nieuwe vloeistof levert.

23

Page 32: Interactive industrial demonstration with Unity and Kinectbeta.eaict.ap.be/wp-content/uploads/2015/06/Baetens... · 2015. 6. 23. · de SDK v2. Bij het installeren van de de SDK zitten

HOOFDSTUK 5. FINALE, DERDE PROTOTYPE 24

5.2 Kinect integratie met Unity

Omdat de Kinect moest verbonden kunnen worden met de software in Unity was er gekozenom te gaan werken met een bepaalde asset die in de asset store van Unity te vinden was. Doormiddel hiervan kon de Kinect op een eenvoudige manier worden geıntegreerd.

De asset bevatte een aantal scripts die er voor zorgden dat de data die werd gelezen doorde Kinect kon worden opgevraagd. Om overzicht te behouden was er een leeg gameobjectaangemaakt in de 3D scene waaraan de gewenste scripts werden toegevoegd.

5.2.1 Kinect Manager

De Kinect Manager was het hoofdscript, dit zal altijd toegevoegd worden als er met de Kinectmoest gewerkt worden. De werking van dit script was vrij complex maar zorgde ervoor dat jehieraan bepaalde zaken kon vragen zonder complexe toevoegingen.

Elke persoon die werd opgemerkt had zijn eigen coordinaten, voor elk gedetecteerd lichaamsdeel.Dit script hield al informatie bij en maakte het mogelijk delen hiervan te gaan opvragen (indienje ze nodig hebt).

Wanneer het script werd toegevoegd zijn er een aantal parameters die ingesteld konden wordenom een betere werking te garanderen. Een van de belangrijkste parameters was de hoogte ende hoek waar de sensor zich bevond. Deze hadden invloed hebben op de nauwkeurigheid vande positie waar gedetecteerde personen zich bevonden.

Er was ook de mogelijkheid om in te stellen of je op het scherm het beeld wou laten zien dat deKinect waarnam. Hierbij had men nog de keuze om het skelet van de persoon weer te geven.

Bijkomend waren er een aantal kleine instellingen waar verder niet dieper op ingegaan is. Fotobijgevoegd op de volgende pagina.

Page 33: Interactive industrial demonstration with Unity and Kinectbeta.eaict.ap.be/wp-content/uploads/2015/06/Baetens... · 2015. 6. 23. · de SDK v2. Bij het installeren van de de SDK zitten

HOOFDSTUK 5. FINALE, DERDE PROTOTYPE 25

Figuur 5.1: Kinect Manager

Page 34: Interactive industrial demonstration with Unity and Kinectbeta.eaict.ap.be/wp-content/uploads/2015/06/Baetens... · 2015. 6. 23. · de SDK v2. Bij het installeren van de de SDK zitten

HOOFDSTUK 5. FINALE, DERDE PROTOTYPE 26

5.2.2 Gesture Listener

De gesture listener was het script dat de beweging van gebaren waarneemt. In dit script was hetmogelijk om in te stellen naar welk van de verschillende gebaren er geluisterd moest worden enop welke manier deze opgevraagd werden. Standaard zaten er een aantal verschillende gebarenin, maar er was ook de mogelijkheid om er zelf nog toe te voegen.

De gebaren werden gedetecteerd aan de hand van bepaalde opvolgingen van lichaamsbewegin-gen. Wanneer deze voldeden aan de opgelegde voorwaarden dan werd het gebaar als voltooidbeschouwd en kon dit worden gebruikt.

Het was belangrijk wanneer er gebruik werd gemaakt van eigen gebaren dat men rekening hieldmet de toestand waarin dit gebaar werd gestart. Indien de codering niet juist was konden erfouten optreden of kon het zelfs gebeuren dat een gebaar nooit werd waargenomen.

5.2.3 Interaction Manager

De interaction manager zorgde ervoor dat via de Kinect zowel bediening van GUI elementen als3D objecten mogelijk werd. Hierdoor was het mogelijk om de computer muis te gaan simulerenen te bedienen met de Kinect. De gebruiker kon dan een van de handen gebruiken om de cursorop het scherm te verplaatsen. Het klikken van de muis werd bediend door het stilhouden vande cursor op een bepaalde plaats gedurende twee seconden.

Deze methode werd gebruikt om te wisselen tussen de verschillende fases waarin de softwarezich kon bevinden, alsook voor de keuze van het object waarmee een interactie uitgevoerdwerd. Door gebruik te maken van zowel GUI elementen alsook 3D objecten kreeg het geheeleen soepele overgang.

Page 35: Interactive industrial demonstration with Unity and Kinectbeta.eaict.ap.be/wp-content/uploads/2015/06/Baetens... · 2015. 6. 23. · de SDK v2. Bij het installeren van de de SDK zitten

HOOFDSTUK 5. FINALE, DERDE PROTOTYPE 27

5.3 Camera

De camera was het onderdeel dat bepaalde wat er te zien was van de 3D omgeving. De camerawas een 3D element dat verplaatst en geroteerd kon worden. Aan de hand van deze factoren konmen bepalen wat er te zien was en op welke afstand de verschillende objecten zich bevonden.

Op het camera object waren een aantal instellingen die veranderd konden worden en die invloedhadden op hetgeen te zien was. Een van de belangrijkste parameter waar je rekening mee moesthouden was de field of view instelling. Deze bepaalde de breedte van de lens van de camera.Hoe groter dat dit werd gemaakt hoe meer er te zien was. Er moest rekening worden gehoudendat je na een bepaalde waarde een vervorming ging krijgen. De maximum waarde hiervoor was180 en de minimum was 1. Standaard stond dit ingesteld op 65 wat aanvaardbaar was voordeze toepassing.

Bovenop de standaard instellingen werd een eigen script toegevoegd. Ook deze had een aantalinstellingen die gewijzigd konden worden. Hiermee konden er restricties worden opgelegd inverband met transformaties die de camera kon uitvoeren.

Figuur 5.2: Camera Controller

5.3.1 Zoomen

Het inzoomen van het beeld werd gedaan door middel van de camera te verplaatsen op dediepte as. Binnen Unity is dit de Z as. Hierdoor leek het dat er werd in- of uitgezoomd. Hoemeer de camera naar voor werd verplaatst hoe dichter bepaalde objecten in beeld komen.

5.3.2 Verplaatsen

Aangezien de scene te groot was om alles tegelijkertijd weer te geven kon door het verplaatsenvan de camera het voorwerp dat centraal in beeld stond worden gewijzigd. Hierdoor kon menzelf bepalen op welk voorwerp de focus werd gelegd en hierdoor een beter beeld krijgen.

Page 36: Interactive industrial demonstration with Unity and Kinectbeta.eaict.ap.be/wp-content/uploads/2015/06/Baetens... · 2015. 6. 23. · de SDK v2. Bij het installeren van de de SDK zitten

HOOFDSTUK 5. FINALE, DERDE PROTOTYPE 28

5.4 (Interactieve) 3D Objecten

In de scene waren veel objecten aanwezig. Deze verschillende objecten bij elkaar vormen eengeheel en stelden dus 3D wereld op. We herleidden deze in 2 grote groepen.

� Statische objecten: objecten waarmee geen interactie werd uitgevoerd. Deze objectenzagen er tijdens het proces er altijd hetzelfde uit. Zij dienden louter voor decoratie envervolledigde van de scene. Zonder deze objecten zou de scene kaal aangevoeld hebbenen vervaagde een groot deel van het visuele aspect.

� Interactieve objecten: objecten die de scene visueel konden veranderen. Deze objectenwerden bediend en veranderenden zowel visueel als logisch van toestand. Door decombinatie van verschillende van deze elementen kon een proces worden opgebouwd enbeheerd.

Figuur 5.3: Overwicht van alle interactieve objecten

Page 37: Interactive industrial demonstration with Unity and Kinectbeta.eaict.ap.be/wp-content/uploads/2015/06/Baetens... · 2015. 6. 23. · de SDK v2. Bij het installeren van de de SDK zitten

HOOFDSTUK 5. FINALE, DERDE PROTOTYPE 29

5.4.1 Kleurvaten

De kleurvaten waren de 3 vaten die zich bovenaan in de scene bevonden. Elk van deze vatenhad zijn eigen vloeistof en kon afzonderlijk worden bijgevuld of geledigd worden. Het vullen vanhet vat gebeurde aan de hand van een klep rechts van de tank. Als deze open stond en er wasvloeistof in de invoer, ging de tank zich vullen.

De vloeistof van elke tank was verschillend van kleur zodat deze later in de scene kongecombineerd worden. De uiterst linkse tank werd gevuld met een rode vloeistof, de middelstemet een groene en de rechtse met een blauwe.

Zowel vullen en ledigen van de tanks was visueel zichtbaar.

Figuur 5.4: Kleurvaten

5.4.2 Kleppen

Net zoals de vaten waren er drie verschillende kleppen aanwezig in de scene. Onder elk vat zateen klep waarmee de doorstroom kon worden ingesteld van 0% tot 100%. 0% kwam overeenmet een volledig gesloten klep en 100% met een volledig geopende klep.

Als de tank boven de klep niet leeg was, kwam er vloeistof in de pijp tussen de tank en de klep.De kleur was hier idem als in het vat. Bij niet volledig afgesloten klep zal de stroom van devloeistof visueel merkbaar zijn.

Figuur 5.5: Kleppen

Page 38: Interactive industrial demonstration with Unity and Kinectbeta.eaict.ap.be/wp-content/uploads/2015/06/Baetens... · 2015. 6. 23. · de SDK v2. Bij het installeren van de de SDK zitten

HOOFDSTUK 5. FINALE, DERDE PROTOTYPE 30

5.4.3 Combinatievat

Het combinatievat bevond zich onderaan de scene. Dit vat is via buizen en kleppen verbondenmet de drie kleur vaten bovenaan. Aan de hand van de toestand van de kleppen werd bepaaldwelke kleur de vloeistof in de tank had.

Het volume en de kleur van de vloeistof werd bepaald door de doorstroom in de kleppen.Wanneer een van de kleppen geopend was liep het vat vol met desbetreffende vloeistof.Wanneer meerdere vloeistoffen in het vat kwamen vermengden deze met elkaar en ontstondeen kleurcombinatie.

Figuur 5.6: Combinatievat

5.4.4 Pomp

De pomp die zich bevond in de scene werd gebruikt voor het vullen van de kleur vaten. Opdeze pomp bevonden zich 2 diverse schakelaars.

De bovenste schakelaar werd gebruikt om te selecteren met welk vat de pomp werd verbonden.Wanneer de schakelaar zich in de linkse stand bevond dan was de pomp verbonden met hetrode, middelste met het groene en de rechtse met het blauwe vat.

De schakelaar die zich vooraan de pomp bevond werd gebruikt voor het aan- en uitschakelen vande pomp. Er kon enkel vloeistof worden gepompt indien er een boot aan de pomp gekoppeldwas.

Page 39: Interactive industrial demonstration with Unity and Kinectbeta.eaict.ap.be/wp-content/uploads/2015/06/Baetens... · 2015. 6. 23. · de SDK v2. Bij het installeren van de de SDK zitten

HOOFDSTUK 5. FINALE, DERDE PROTOTYPE 31

Figuur 5.7: Pomp

5.4.5 Tankboot

De boot was het object dat werd gebruikt voor vloeistof te leveren. Wanneer de boot aanmeerdeaan het dok werd dit gedetecteerd door de pomp.

In boot zat een bepaalde hoeveelheid vloeistof die kon worden overgepompt. Wanneer er geenresterende vloeistof meer in de boot zat vaarde deze automatisch weg en verdween na een tijduit het zicht. Als dit gebeurde kwam er een nieuwe boot aanmeren aan het dok.

Op deze wijze was de cirkel rond en werd het leveren en overpompen een continuıteit.

Figuur 5.8: Tankboot

Page 40: Interactive industrial demonstration with Unity and Kinectbeta.eaict.ap.be/wp-content/uploads/2015/06/Baetens... · 2015. 6. 23. · de SDK v2. Bij het installeren van de de SDK zitten

HOOFDSTUK 5. FINALE, DERDE PROTOTYPE 32

5.5 Programma Toestanden

Om een vlotte overgang tussen de verschillende stappen van de software te krijgen en eenduidelijk overzicht te bekomen werd gebruikt gemaakt van verschillende toestanden. Elk vandeze toestanden hadden hun eigen aparte functie die voltooid werd. Op deze manier kon mendoor de verschillende stappen van de het programma lopen. Afhankelijk in welke toestand hetprogramma zich bevond werd ook een instructie op het scherm getoond voor de gebruiker. Opdeze manier kon de gebruiker op een makkelijke manier te weten komen wat er van hem/haarwerd verwacht.

5.5.1 Initialisatie

Dit was de eerste toestand waarin de demo terecht kwam na het opstarten. Hierin gebeurdealle voorbereidingen die gedaan moesten worden vooraleer er met de demo kon gewerkt worden.Wanneer de initialisatie voltooid was, wachtte het programma tot er een persoon voor de Kinectsensor plaats nam. Dit werd gedetecteerd en vervolgens ging het programma naar de volgendestap.

Figuur 5.9: Initialisatie

Page 41: Interactive industrial demonstration with Unity and Kinectbeta.eaict.ap.be/wp-content/uploads/2015/06/Baetens... · 2015. 6. 23. · de SDK v2. Bij het installeren van de de SDK zitten

HOOFDSTUK 5. FINALE, DERDE PROTOTYPE 33

5.5.2 Selecteren van een interactie object

Wanneer het programma in deze toestand terecht kwam, werd er bepaald met welk van deverschillende objecten de persoon een interactie wou uitvoeren. De selectie van een object werdgedaan door middel van de persoon zijn linker of rechter hand. Wanneer hij/zij een van de tweevoor zich hield kon men via een cursor een keuze gaan maken. Wanneer men over een bepaaldinteractief object heen ging, lichtte dit op. De keuze van het object kon worden bevestigd doorde cursor 2 seconden stil te houden op dit object.

Figuur 5.10: Selecteren van een interactie object

5.5.3 Interactie uitvoeren met het geselecteerde object

Na het selecteren van een bepaald object werd het programma in deze toestand geplaatst. Ditging er voor zorgen dat de interacties die bij het geselecteerd object hoorden werden geactiveerd.Afhankelijk van het object verschilde ook de interacties en uitvoering.

� Wanneer een van de kleppen werd geselecteerd moest de gebruiker een draaibewegingmaken met beide handen. Hierdoor kon hij bepalen of hij de klep meer zou openen ofsluiten. Hoe meer de klep openstond hoe sneller de vloeistof er door liep.

� Wanneer een van de kleurvaten was geselecteerd moest de gebruiker een beweging makenmet het rechterhand. Wanneer hij zijn rechterhand naar rechts hield dan sloot hij devloeistoftoevoer af, wanneer hij echter zijn hand voor zich hield werd de vloeistoftoevoergeopend.

Page 42: Interactive industrial demonstration with Unity and Kinectbeta.eaict.ap.be/wp-content/uploads/2015/06/Baetens... · 2015. 6. 23. · de SDK v2. Bij het installeren van de de SDK zitten

HOOFDSTUK 5. FINALE, DERDE PROTOTYPE 34

� Wanneer de pomp was geselecteerd waren er 2 verschillende mogelijkheden. Met behulpvan de linkerhand van de gebruiker kon men de pomp aan- en uitschakelen. Hetaanschakelen van de pomp werd gedaan door het hand naar boven te bewegen, hetuitschakelen door het hand naar beneden te houden. Door middel van de rechterhandkon er worden geselecteerd met welk kleurvat de pomp moest verbonden worden. Deuiterste linkse stand kwam overeen met het rode, de middelste stand met het groene ende rechtse stand met het blauwe vat.

5.5.4 Tussentoestand voor detecteren van gebaren

Er zijn drie verschillende tussentoestanden die werden gebruikt om op een eenvoudige maniervan de ene toestand over te gaan naar de andere. Deze toestanden werden enkel gebruiktwanneer er gebruik gemaakt werd van een bepaald gebaar.

Wanneer het bijhorende gebaar werd gedetecteerd, ging er bovenaan het scherm een timerlopen. Wanneer deze timer was volgelopen werd het gebaar als voltooid aanschouwd en kon erverder gegaan worden naar een volgende toestand.

� Beide handen vooraan: wanneer de gebruiker beide handen voor zich hield.

� Rechter hand vooraan: wanneer de gebruiker zijn rechter hand voor zijn lichaam hield,alsook zijn linker hand naast zijn lichaam hield.

� Linker hand vooraan: wanneer de gebruiker zijn linker hand voor zijn lichaam hield,alsook zijn rechter hand naast zijn lichaam hield.

5.5.5 Camera bewegen

Wanneer de gebruiker de knop had ingedrukt om de camera te bewegen, werd het programma indeze toestand gebracht. Het programma ging dan kijken naar de beide handen van de gebruiker.Wanneer deze verplaatst werden, verplaatste de camera in de 3D omgeving zich ook. Op dezemanier kon de gebruiker bepaalde elementen beter in beeld brengen als hij deze achteraf wouselecteren.

Wanneer de gebruiker klaar was met het verplaatsen van de camera diende hij zijn beide handenin open positie voor zich te houden. Hierdoor veranderde de toestand naar het selecteren vaneen object.

Page 43: Interactive industrial demonstration with Unity and Kinectbeta.eaict.ap.be/wp-content/uploads/2015/06/Baetens... · 2015. 6. 23. · de SDK v2. Bij het installeren van de de SDK zitten

HOOFDSTUK 5. FINALE, DERDE PROTOTYPE 35

5.5.6 Inzoomen van de camera

Wanneer er op de knop werd gedrukt voor het inzoomen van de camera werd deze toestandgeactiveerd. Net zoals bij het bewegen van de camera werd er gekeken naar de positie vanbeide handen van de gebruiker. Door de handen verder uit elkaar te houden werd er een inzoombeweging gemaakt en zoomde de camera in. Op deze manier kon de gebruiker bepaalde zakenvan dichterbij bekijken om beter details te observeren. Er was ook de mogelijkheid om verderuit te zoomen. Dit werd gedaan door middel van de handen dichter bij elkaar te brengen.

Net zoals bij het camera bewegen kon er op dezelfde manier teruggekeerd worden naar de vorigetoestand.

Page 44: Interactive industrial demonstration with Unity and Kinectbeta.eaict.ap.be/wp-content/uploads/2015/06/Baetens... · 2015. 6. 23. · de SDK v2. Bij het installeren van de de SDK zitten

Hoofdstuk6Resultaat

Aangezien het project voor een groot deel bestond om te onderzoeken naar de haalbaremogelijkheden, waarbij de vereisten voor het eindproduct moeilijk in te schatten waren, benik tevreden met verloop hiervan.

Mijn onderzoek heeft aangetoond dat er verschillende mogelijkheden waren om dit probleem opte lossen en tot het gewenst resultaat te komen. Elk van deze oplossingen had zijn eigen voor-en nadelen en de eerste keuze was niet altijd de beste.

Door middel van gebruik te maken van de Unity game engine was rekening gehouden metuitbreidbaarheid en verdere ontwikkeling in de toekomst. De geschreven scripts voor hetprogramma waren opgesteld om op een overzichtelijke manier de code weer te geven, waarbijin de toekomst nog mee gewerkt kon worden.

Hierdoor kan het bedrijf op een eenvoudige manier het project verderzetten en uitbreiden, indiennodig.

36

Page 45: Interactive industrial demonstration with Unity and Kinectbeta.eaict.ap.be/wp-content/uploads/2015/06/Baetens... · 2015. 6. 23. · de SDK v2. Bij het installeren van de de SDK zitten

HOOFDSTUK 6. RESULTAAT 37

Figuur 6.1: Resultaat

Page 46: Interactive industrial demonstration with Unity and Kinectbeta.eaict.ap.be/wp-content/uploads/2015/06/Baetens... · 2015. 6. 23. · de SDK v2. Bij het installeren van de de SDK zitten

HOOFDSTUK 6. RESULTAAT 38

6.1 Tevredenheid

Uit de laatste meeting met het bedrijf was gebleken dat mijn stagepromotor tevreden wasmet het eindresultaat. Uiteraard waren er nog een aantal kleine punten die verbeterd kondenworden, maar algemeen genomen was het resultaat positief. Om het met de woorden van mijnstagepromotor te citeren: ”Dit is exact wat ik in het begin in mijn gedachten had”.

6.2 Analyse

De gemaakte vereisten die in het begin van de opdracht waren opgeven zijn bijna als allemaalverwezenlijkt. Uiteraard komt het eindresultaat niet 100% overeen met de oorspronkelijkeverwachtingen. In de loop van mijn opdracht werden de vereisten gewijzigd omdat ze eenbetere werking garandeerden. In onderstaande lijst zijn de vereisten weergegeven die in grotelijnen hetzelfde bleven, voltooid zijn en in het pakket van het eindresultaat zitten.

� 3D wereld opstellen.

� Lichaam detecteren met behulp van de Kinect

� Interacties uitvoeren door middel van lichaamsbeweging.

6.3 Eindgebruikers

Nu het project is afgerond moeten we ons de vraag stellen of de eindgebruiker (de personen dienaar de beursstand komen) tevreden zijn met het resultaat. Aangezien de demo nog niet in derealiteit getest is blijft dit nog een vraagteken.

Uit de vooropgestelde vereisten kunnen we vaststellen dat er geprobeerd is om op eenoverzichtelijke en gebruiksvriendelijke manier software te ontwikkelen. Hierdoor hopen we dusdat de eindgebruiker positief zal reageren op het resultaat.

6.4 Software Architectuur

Doordat onderhoudbaarheid een vereiste was, is er gebruik gemaakt van een duidelijke softwarearchitectuur.

Het project werd ontwikkeld met Unity versie 5. Hier zal men in de toekomst rekening meemoeten houden. Bepaalde functies die gebruikt worden in de software zijn pas ondersteundvanaf deze versie. De code die online wordt gevonden is vaak nog geschreven voor een vorigeversie en zal dus moeten omgezet worden voor gebruik.

Page 47: Interactive industrial demonstration with Unity and Kinectbeta.eaict.ap.be/wp-content/uploads/2015/06/Baetens... · 2015. 6. 23. · de SDK v2. Bij het installeren van de de SDK zitten

HOOFDSTUK 6. RESULTAAT 39

De code die gebruikt is voor de de lichaamsdetectie is afhankelijk van de versie van de Kinect.Aangezien de tweede versie werd gebruikt, zijn ook hier een aantal zaken die pas vanaf dezeversie ondersteund werden

Elk 3D object dat zich in de scene bevindt heeft zijn eigen script met parameters. Dezeparameters zijn vaak de inhoud van het vat, kleur van de vloeistof, enz. Afhankelijk van hetobject zijn deze verschillend.

De programmacontroller is het object/script dat alles in de scene beheert. Deze houdt bij water moet gebeuren wanneer bepaalde interacties gebeuren. Dit script gaat er voor zorgen datde scene een geheel vormt en dat de verschillende objecten met elkaar werken.

Op onderstaande afbeelding is er een overzicht te zien van welke objecten zich in de scenebevinden en welke scripts deze hebben. Indien parameters bij het script aanwezig zijn staandeze onderaan de script naam.

Page 48: Interactive industrial demonstration with Unity and Kinectbeta.eaict.ap.be/wp-content/uploads/2015/06/Baetens... · 2015. 6. 23. · de SDK v2. Bij het installeren van de de SDK zitten

HOOFDSTUK 6. RESULTAAT 40

Figuur 6.2: Architectuur

.

Page 49: Interactive industrial demonstration with Unity and Kinectbeta.eaict.ap.be/wp-content/uploads/2015/06/Baetens... · 2015. 6. 23. · de SDK v2. Bij het installeren van de de SDK zitten

HOOFDSTUK 6. RESULTAAT 41

6.5 Uitbreiding en/of verbeteringen in de toekomst

Momenteel zijn er zeker nog een aantal punten die kunnen verbeterd worden, alsook extratoepassingen die kunnen toegevoegd worden. Dit kan gaan van bepaalde kleine items dieherschreven worden tot het invoeren van extra functionaliteit.

6.5.1 Visueel weergeven met behulp van hardware

Door gebruik te maken van bepaalde hardware kan de scene alsook reeel worden nagebouwd.Er is de mogelijkheid om de vaten met vloeistof voor te stellen met bepaalde LEDs die op hunbeurt het vloeistof niveau aantonen. De hardware kan zo simpel of complex gemaakt wordenals gewenst.

Door gebruik te maken van hardware en extra visuele weergaven te creeren, wordt er voorgezorgd dat de demo nog aantrekkelijker wordt. Hierdoor zullen er dus meer mensengeınteresseerd naar de beursstand komen.

6.5.2 Meerdere scenes

Door gebruik te maken van meerdere scenes kunnen er verschillende processen worden opgesteld.Men kan op deze manier de gebruiker de keuze laten welke scenes hij wil besturen zodat ermeer variatie in de demo zit.

Page 50: Interactive industrial demonstration with Unity and Kinectbeta.eaict.ap.be/wp-content/uploads/2015/06/Baetens... · 2015. 6. 23. · de SDK v2. Bij het installeren van de de SDK zitten

HOOFDSTUK 6. RESULTAAT 42

6.6 Gespendeerde tijd

De onderstaande grafieken zijn opgemaakt uit het bekomen werk dat opgenomen is in hetlogboek. Deze waarden kan men interpreteren maar ik heb geprobeerd om zo reeel mogelijkegrafiek op te stellen.

Figuur 6.3: Opdrachtverloop

Figuur 6.4: Finale, derde prototype

Page 51: Interactive industrial demonstration with Unity and Kinectbeta.eaict.ap.be/wp-content/uploads/2015/06/Baetens... · 2015. 6. 23. · de SDK v2. Bij het installeren van de de SDK zitten

Hoofdstuk7Besluit

Het maken van deze opdracht was voor mij plezierig werken. Een leerrijke ervaring met veelvrijheid om een resultaat te bereiken. De taak was niet altijd evident, maar telkens een probleemopdook was de oplossing zoeken een studie proces.

Ik ben blij dat ik de kans heb gekregen om met verschillende vernieuwende technologieen tewerken. Hierdoor heb ik op een korte tijd veel kennis opgedaan die ik later nog zeker kangebruiken.

Ik ben dankbaar met deze opdracht en ook een klein beetje trots met het behaalde eindresultaat.Ik koester de hoop dat het programma binnen het bedrijf wordt verder gezet en slechts eenbegin is van een eindeloos project.

43

Page 52: Interactive industrial demonstration with Unity and Kinectbeta.eaict.ap.be/wp-content/uploads/2015/06/Baetens... · 2015. 6. 23. · de SDK v2. Bij het installeren van de de SDK zitten

BijlageAOnderzoek

De eerste fase van de bachelor proef bestond uit om onderzoek te voeren waarin de haalbaarheidvan het project beschreven werd en welke verschillende technologieen er konden gebruiktworden. De moeilijkheidsfactor was om uit een groot aanbod van informatie het belangrijkstete gebruiken.

A.1 Software Architectuur

Er waren verschillende software architecturen mogelijk waarin gewerkt kon worden. Elk had zijneigen voor- en nadelen. De bedoeling van het onderzoek was om uit te zoeken welke hiervanhet beste paste bij de opdracht.

A.1.1 WPF

Aangezien zowel WPF als Kinect beiden van Microsoft zijn was het heel eenvoudig om dezebeide te combineren. Wanneer we de SDK van de Microsoft Kinect downloadde en installeerdewaren er een aantal voorbeeld programma’s die ontwikkeld zijn met WPF.

Een van de grote voordelen is dat WPF gebruik maakt van de .NET bibliotheek. Dit gaf mijde mogelijkheid om met weinig code heel krachtige en overzichtelijke software te ontwikkelen.

Figuur A.1: Windows Presentation Foundation

44

Page 53: Interactive industrial demonstration with Unity and Kinectbeta.eaict.ap.be/wp-content/uploads/2015/06/Baetens... · 2015. 6. 23. · de SDK v2. Bij het installeren van de de SDK zitten

BIJLAGE A. ONDERZOEK 45

A.1.2 Web Applicatie

De dag van vandaag worden steeds meer applicaties web gebaseerd. Het grote voordeel hiervanis dat men niets zal moeten installeren en dat er volledig kan gewerkt worden in een browseromgeving.

Voor het ontwikkelden en garanderen van een goede werking van de applicatie zijn erverschilleden item nodig. De frontend hiervan wordt ontwikkeld in HTML en JavaScript ende opmaak gebeurt aan de hand van CSS. Dit zijn elk afzonderlijke files om gestructureerdoverzicht te behouden.

Om er voor te zorgen dat de applicatie kan draaien zal deze op een server gehost worden. Ditkan lokaal worden gedaan maar het heeft een groter voordeel als dit kan worden geplaatst inde cloud. Aan de hand van deze manier kan de applicatie overal worden opgevraagd.

Figuur A.2: Web Applicatie

Page 54: Interactive industrial demonstration with Unity and Kinectbeta.eaict.ap.be/wp-content/uploads/2015/06/Baetens... · 2015. 6. 23. · de SDK v2. Bij het installeren van de de SDK zitten

BIJLAGE A. ONDERZOEK 46

A.2 3D Omgeving

De 3D omgeving van de applicatie is een van de belangrijkste onderdelen. Alles komt omdatde gebruiker dit te zien krijgt en het is de bedoeling dat het er mooi en verzorgt uitziet. De3D omgeving moet op een eenvoudige manier worden opgesteld waarbij een goed structureeloverzicht behouden wordt. Dit geeft het voordeel dat deze in de toekomst kan worden uitgebreidnaar een complexer ontwerp.

A.2.1 Unity

Unity is een cross-platform game engine dat ontwikkeld is door Unity Technologies. Het wordtgebruikt om video games te ontwikkelen voor verschillende platformen waaronder: PC, consoles,mobiele apparaten en websites. Momenteel zijn er reeds 5 versies van Unity waarbij de laatsteversie gratis alle features aanbiedt met minder bron code en betere support.

De game engine maakt gebruik van verschillende APIs voor het weergeven van de 3D content.

� Direct3D wordt gebruikt voor Windows en Xbox 360

� OpelGL wordt gebruikt voor Mac, Windows en Linux

� OpenGL ES wordt gebruikt op mobiele apparaten die werken met Android of iOS.

Er wordt gebruik gemaakt van verschillende texture compressies en resolutie opties voor elkplatform waarvoor de game ontwikkeld is en biedt ondersteuning voor bump mapping, reflectionmapping, parallax mapping, sceen space ambient occlusion (SSA0), dynamic shadows usingshadow maps, render-to-texture en full-screen post-processing effects.

De game engines scripting is ontwikkelt in Mono (dit is de opensource implementatie van het.NET Framework). Eigen scripts kunnen ontwikkeld worden in UnityScript (word aanschouwdals javascript), C# of Boo.

Figuur A.3: Unity

Page 55: Interactive industrial demonstration with Unity and Kinectbeta.eaict.ap.be/wp-content/uploads/2015/06/Baetens... · 2015. 6. 23. · de SDK v2. Bij het installeren van de de SDK zitten

BIJLAGE A. ONDERZOEK 47

A.2.2 Helix Toolkit

De Helix Toolkit kan geımplementeerd worden wanneer men gebruik gemaakt van het .NETFramework. Er wordt een breed spectrum aan extra functionaliteit voor 3D toegevoegd die hettoelaat om zeer krachtige berekeningen uit te voeren.

Er is de mogelijkheid om 3D modellen te generen aan de hand van verschillende wiskundigealgoritmes alsook externe modellen te implementeren. Op deze modellen kunnen wetransformaties uitvoeren waarmee we positie, grootte en rotatie kunnen wijzigen.

Wanneer gebruik wordt gemaakt van Visual Studio kan deze toolkit toegevoegd worden aande hand van NuGets. Hierdoor wordt implementatie zeer eenvoudig en dient niets extra in testellen.

Aangezien dit project een volledig open source project is kan men dus de bron code downloadenen indien nodig decompileren. Wanneer men deze gedownload, zijn er een aantal voorbeeldprogramma’s die men kan opstarten, deze kunnen zowel basis als uitgebreide functionaliteitaantonen.

Figuur A.4: Helix Toolkit

A.2.3 Viewport3D in XAML

Dit is standaard ingebouwd wanneer we een WPF applicatie opstarten. De 3D modellenworden volledig geconstrueerd in XAML en hebben verder geen achterliggende code nodig.Deze methode is vrij eenvoudig om kleine objecten te gaan voorstellen, maar zal bij grote encomplexere items heel moeilijk zijn om overzicht te behouden. Extra functionaliteit is beperkten we kunnen geen modellen importeren die ontwikkeld zijn in een ander software programma.

Page 56: Interactive industrial demonstration with Unity and Kinectbeta.eaict.ap.be/wp-content/uploads/2015/06/Baetens... · 2015. 6. 23. · de SDK v2. Bij het installeren van de de SDK zitten

BIJLAGE A. ONDERZOEK 48

A.2.4 XNA

XNA is een game engine dat ontwikkeld is door Microsoft, hun doel publiek gericht op studentenen hobbyisten. Met XNA is het mogelijk om games te gaan ontwerpen voor Windows, Xbox360, Zune media spelers en Windows Phone 7.

Het XNA framework is gebaseerd op het .NET framework 2.0 en is uitgerust met een klassenbibliotheek die geoptimaliseerd is voor het ontwikkelen van games.

Ook voor 3D weergave is XNA een goede oplossing. Dit komt doordat het gebruik maakt vanXNA Framework Content Pipeline toolset die het mogelijk maakt om op een eenvoudige manier3D elementen op te nemen en te gebruiken.

De laatste versie van XNA is uitgebracht op 9 maar 2010 en is dus bijgevolg al een relatief oudetechnologie.

Figuur A.5: XNA

A.3 Kinect

Zie hoofdstuk 2.1

Page 57: Interactive industrial demonstration with Unity and Kinectbeta.eaict.ap.be/wp-content/uploads/2015/06/Baetens... · 2015. 6. 23. · de SDK v2. Bij het installeren van de de SDK zitten

BijlageBHandleiding

Er zijn 2 verschillende manieren om het project te downloaden.

� Indien je toestemming van het bedrijf hebt kan je gebruik maken van hun Git server.Hiervoor volg je de stappen in Hoofdstuk B.1 en mag je B.2 overslaan.

� Indien je geen toestemming hebt tot de Git server kan je het project via een publiekelink downloaden. Hiervoor volg je de stappen in Hoofdstuk B.2 en mag je hoofdstuk B.1overslaan.

B.1 Project cloonen via Git

Het laatste prototype van het eindproduct staat op Visual Studio online door middel van Git.Om de repository te gebruiken moet je deze cloonen.

B.1.1 Installeren van Git

Wanneer het GIT protocol nog niet is geınstalleerd, moet dit eerst gebeuren. Door naaronderstaande link te surfen wordt een ’.exe’ bestand gedownload. Dit moet uitgevoerd wordenom verder te gaan.

Link: https://git-scm.com/download/win

49

Page 58: Interactive industrial demonstration with Unity and Kinectbeta.eaict.ap.be/wp-content/uploads/2015/06/Baetens... · 2015. 6. 23. · de SDK v2. Bij het installeren van de de SDK zitten

BIJLAGE B. HANDLEIDING 50

B.1.2 Lokale Git map aanmaken

Om het project te kunnen clonen moet er eerst een lokale Git map aangemaakt worden. Ganaar een map naar keuze en druk op de rechtermuisknop. Vervolgens klik je op ’Git Init Here’.

Indien verborgen mappen worden weergegeven zal je merken dat een ’.git’ map is aangemaakt.

Figuur B.1: Lokale Git map

B.1.3 Project cloonen

Het project cloonen kan gebeuren op verschillende manieren. Er kan gebruik worden gemaaktvan een bepaalde programma dat Git op een visuele manier weergeeft. Voor de makkelijkheidis er uitgelegd hoe je dit kunt doen aan de hand van bash.

Door met de rechtermuisknop te klikken en ’Git Bash’ te selecteren wordt het bash venstergeopend.

Page 59: Interactive industrial demonstration with Unity and Kinectbeta.eaict.ap.be/wp-content/uploads/2015/06/Baetens... · 2015. 6. 23. · de SDK v2. Bij het installeren van de de SDK zitten

BIJLAGE B. HANDLEIDING 51

Figuur B.2: Git Bash

Om het project te cloonen in de lokale map moet je het volgende commando invullen.

’git clone https://glenvr-intation.visualstudio.com/DefaultCollection/ git/Kinect2’

Vervolgens geef je gebruikersnaam en wachtwoord in. Doordat het project op een Visual Studioserver van het bedrijf staat heeft niet iedereen hier toegang toe. Deze kan je pas cloonenwanneer je bent toegevoegd door het bedrijf.

Figuur B.3: Git Commando

Page 60: Interactive industrial demonstration with Unity and Kinectbeta.eaict.ap.be/wp-content/uploads/2015/06/Baetens... · 2015. 6. 23. · de SDK v2. Bij het installeren van de de SDK zitten

BIJLAGE B. HANDLEIDING 52

B.2 Project downloaden van publieke link

Aangezien het project op een digitale manier is afgegeven kan je het hele project downloadendoor middel van een publieke link.

Wanneer onderstaande link wordt gedownload kan men de inhoud ervan in een map naar keuzeplaatsen. Deze map zal later nodig zijn om het project op te starten.

Link http://bit.ly/1f4UKan

B.3 Installeren van Unity

Het hele project is ontwikkeld door middel van Unity. Wanneer je het project wilt bewerken ishet vanzelfsprekend dat hiervoor de juist software geınstalleerd moet worden.

Door op onderstaan link te klikken wordt de installer voor Unity gedownload. Door deze uit tevoeren wordt Unity geınstalleerd.

Link: https://unity3d.com/get-unity/download?ref=personal

B.4 Project openen in Unity

Wanneer Unity wordt opgestart zal deze vragen welk project je wilt openen. Bij de eerstekeer dat je Unity opstart zal de lijst met projecten leeg zijn. Om het gedownloade project inte voegen moet er op de knop ’Open Other’ gedrukt worden. Vervolgens zal er een schermgetoond worden waarin je een bepaalde map kan aanduiden.

Figuur B.4: Project openen

Page 61: Interactive industrial demonstration with Unity and Kinectbeta.eaict.ap.be/wp-content/uploads/2015/06/Baetens... · 2015. 6. 23. · de SDK v2. Bij het installeren van de de SDK zitten

BIJLAGE B. HANDLEIDING 53

Ga vervolgens naar de map waar je het project hebt gedownload en selecteer deze. Klik op’select folder’ en Unity zal het project beginnen importeren. Dit kan even duren.

Figuur B.5: Project selecteren

Eenmaal het project is geımporteerd zal Unity opstarten en kan je beginnen werken.

Figuur B.6: Unity opstarten

Page 62: Interactive industrial demonstration with Unity and Kinectbeta.eaict.ap.be/wp-content/uploads/2015/06/Baetens... · 2015. 6. 23. · de SDK v2. Bij het installeren van de de SDK zitten

BijlageCInternetbronnen

Hieronder staan alle bronnen vanwaar informatie is gehaald om het project tot een goed eindete brengen.

C.1 Unity

http://en.wikipedia.org/wiki/Unity (game engine) Wikipedia pagina van Unity. Hierop staatveel algemene en achtergrond informatie.

http://forum.unity3d.com Unity forum waar de community zelf vragen kan stellen. Veel vande problemen die ik ben tegen gekomen konden hierop terug gevonden worden.

http://unity3d.com/learn/tutorials/modules Website van Unity waarop basis als geavan-ceerde tutorials staan om met Unity te leren werken.

http://unity3d.com/learn/tutorials/modules/beginner/scripting Informatie over het schrij-ven van scripts binnen Unity.

C.2 Algemeen

http://stackoverflow.com Vraag en antwoord website voor algemene vragen rond codering.

54

Page 63: Interactive industrial demonstration with Unity and Kinectbeta.eaict.ap.be/wp-content/uploads/2015/06/Baetens... · 2015. 6. 23. · de SDK v2. Bij het installeren van de de SDK zitten

BIJLAGE C. INTERNETBRONNEN 55

C.3 Blender

http://en.wikipedia.org/wiki/Blender (software) Wikipedia pagina van Blender. Hierop hebik veel algemene informatie gevonden over blender. http://www.blender.org/forum Forumvan Blender. Veel problemen met Blender heb ik hierop kunnen vinden.

http://wiki.blender.org Wiki pagina van Blender. Hier staat zowel algemene informatie alsgeavanceerde.

Page 64: Interactive industrial demonstration with Unity and Kinectbeta.eaict.ap.be/wp-content/uploads/2015/06/Baetens... · 2015. 6. 23. · de SDK v2. Bij het installeren van de de SDK zitten