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
Dankwoord
Graag zou ik een woord van dank richten tot allen die hebben bijgedragen tot de realisatie van deze bachelorproef. Ik dank mijn stagebegeleider Heylen Kevin, voor zijn professionele feedback, die heeft geleid tot een 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 en doelgerichte raad. Zijn advies is van groot belang gebleken in het proces van het vervolledigen van de proef. Antwerpen, 11 juni 2015 Cedric Baetens
i
Abstract De bachelorproef bestond uit een onderzoek te voeren en het ontwikkelen van een werkend prototype voor een beurs demo. Het doel van deze demo was dat een persoon een bepaalde 3D omgeving moet kunnen bedienen aan de hand van lichaamsbewegingen. Door gebruik te maken van de Unity Game Engine is er op een eenvoudige en overzichtelijke manier een 3D omgeving opgesteld. Op bepaalde elementen konden interacties uitgevoerd worden. Deze interacties worden gedaan door middel van de Microsoft Kinect. Hiermee kunnen lichaamsbewegingen worden omgezet in interacties voor de demo. Wanneer de gebruiker voor de Kinect plaats neemt zal dit worden weergegeven op een scherm en krijgt hij instructies om de omgeving te bedienen. Er kan worden ingezoomd op bepaalde elementen om deze van dichter bij te bekijken en de toestand hiervan te veranderen. De gebruiker kan werken met een op voorhand ontwikkelde sc`ene, 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 inhoud van bijhorende vaten wijzigen. De combinatie van deze twee hebben er toe geleid dat de demo er visueel goed uitziet en dat achterliggende software op een overzichtelijke manier ontwikkeld is.
ii
Inhoudsopgave
Dankwoord
i
Abstract
ii
1 Situering 1.1 Het bedrijf: Intation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 De opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3 Opdrachtverloop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1 1 1 2
2 Primaire Technologien 2.1 Kinect . . . . . . . . . . 2.1.1 Personen . . . . . 2.1.2 Versie . . . . . . 2.1.3 SDK . . . . . . . 2.2 Unity . . . . . . . . . . . 2.2.1 Algemeen . . . . . 2.2.2 Hi¨erarchie . . . . 2.2.3 Inspector . . . . . 2.2.4 Sc`ene scherm . . 2.2.5 Game scherm . . 2.3 Blender . . . . . . . . . . 2.3.1 Algemeen . . . . . 2.3.2 Hi¨erarchie . . . . 2.3.3 Verschillende modi 2.3.4 Modifiers . . . . .
. . . . . . . . . . . . . . .
3 3 4 4 4 6 6 6 8 10 11 12 12 12 13 14
3 Eerste Prototype 3.1 Gemaakte Keuze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Vereisten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3 Uitwerking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16 16 17 17
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
iii
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
INHOUDSOPGAVE 3.3.1 3.3.2 3.3.3
iv
Rondkijken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Rondlopen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Interactie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4 Tweede Prototype 4.1 Vereisten . . . . . . . . 4.2 3D Figuur . . . . . . . 4.2.1 Kinect integratie 4.2.2 Rondlopen . . . 4.3 Sc`ene . . . . . . . . . .
18 18 19
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
20 20 21 21 21 22
5 Finale, derde prototype 5.1 Vereisten . . . . . . . . . . . . . . . . . . . . . . . . . 5.2 Kinect integratie met Unity . . . . . . . . . . . . . . . 5.2.1 Kinect Manager . . . . . . . . . . . . . . . . . 5.2.2 Gesture Listener . . . . . . . . . . . . . . . . . 5.2.3 Interaction Manager . . . . . . . . . . . . . . . 5.3 Camera . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3.1 Zoomen . . . . . . . . . . . . . . . . . . . . . 5.3.2 Verplaatsen . . . . . . . . . . . . . . . . . . . . 5.4 (Interactieve) 3D Objecten . . . . . . . . . . . . . . . 5.4.1 Kleurvaten . . . . . . . . . . . . . . . . . . . . 5.4.2 Kleppen . . . . . . . . . . . . . . . . . . . . . 5.4.3 Combinatievat . . . . . . . . . . . . . . . . . . 5.4.4 Pomp . . . . . . . . . . . . . . . . . . . . . . . 5.4.5 Tankboot . . . . . . . . . . . . . . . . . . . . . 5.5 Programma Toestanden . . . . . . . . . . . . . . . . . 5.5.1 Initialisatie . . . . . . . . . . . . . . . . . . . . 5.5.2 Selecteren van een interactie object . . . . . . . 5.5.3 Interactie uitvoeren met het geselecteerde object 5.5.4 Tussentoestand voor detecteren van gebaren . . 5.5.5 Camera bewegen . . . . . . . . . . . . . . . . . 5.5.6 Inzoomen van de camera . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
23 23 24 24 26 26 27 27 27 28 29 29 30 30 31 32 32 33 33 34 34 35
. . . . . . . .
36 38 38 38 38 41 41 41 42
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
6 Resultaat 6.1 Tevredenheid . . . . . . . . . . . . . . . . . . . . . 6.2 Analyse . . . . . . . . . . . . . . . . . . . . . . . . 6.3 Eindgebruikers . . . . . . . . . . . . . . . . . . . . 6.4 Software Architectuur . . . . . . . . . . . . . . . . 6.5 Uitbreiding en/of verbeteringen in de toekomst . . . 6.5.1 Visueel weergeven met behulp van hardware 6.5.2 Meerdere sc`enes . . . . . . . . . . . . . . . 6.6 Gespendeerde tijd . . . . . . . . . . . . . . . . . .
. . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
INHOUDSOPGAVE
v
7 Besluit
43
A Onderzoek A.1 Software Architectuur . . . . A.1.1 WPF . . . . . . . . . A.1.2 Web Applicatie . . . . A.2 3D Omgeving . . . . . . . . A.2.1 Unity . . . . . . . . . A.2.2 Helix Toolkit . . . . . A.2.3 Viewport3D in XAML A.2.4 XNA . . . . . . . . . A.3 Kinect . . . . . . . . . . . .
. . . . . . . . .
44 44 44 45 46 46 47 47 48 48
. . . . . . .
49 49 49 50 50 52 52 52
C Internetbronnen C.1 Unity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C.2 Algemeen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C.3 Blender . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
54 54 54 55
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
B Handleiding B.1 Project cloonen via Git . . . . . . . . B.1.1 Installeren van Git . . . . . . B.1.2 Lokale Git map aanmaken . . B.1.3 Project cloonen . . . . . . . B.2 Project downloaden van publieke link B.3 Installeren van Unity . . . . . . . . . B.4 Project openen in Unity . . . . . . .
. . . . . . . . .
. . . . . . .
. . . . . . . . .
. . . . . . .
. . . . . . . . .
. . . . . . .
. . . . . . . . .
. . . . . . .
. . . . . . . . .
. . . . . . .
. . . . . . . . .
. . . . . . .
. . . . . . . . .
. . . . . . .
. . . . . . . . .
. . . . . . .
. . . . . . . . .
. . . . . . .
. . . . . . . . .
. . . . . . .
. . . . . . . . .
. . . . . . .
. . . . . . . . .
. . . . . . .
. . . . . . . . .
. . . . . . .
. . . . . . . . .
. . . . . . .
. . . . . . . . .
. . . . . . .
. . . . . . . . .
. . . . . . .
. . . . . . . . .
. . . . . . .
. . . . . . . . .
. . . . . . .
. . . . . . . . .
. . . . . . .
. . . . . . . . .
. . . . . . .
. . . . . . . . .
. . . . . . .
Lijst van figuren
2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 2.10 2.11 2.12 2.13 2.14 2.15
Kinect . . . . . Kinect Lichaam Hi¨erarchie . . . Informatie . . . Transformatie . Collider . . . . . Script . . . . . . Sc`ene . . . . . . Sc`ene opties . . Game scherm . . Hi¨erarchie . . . Object modus . Object modus . Modifiers . . . . Solidify . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
3 4 7 8 9 9 10 10 11 11 13 13 14 15 15
3.1 3.2 3.3
Applicatie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Rondkijken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Rondlopen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17 18 18
4.1 4.2
3D Figuur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sc`ene . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21 22
5.1 5.2 5.3 5.4 5.5 5.6 5.7
Kinect Manager . . . . . . . . . . . . Camera Controller . . . . . . . . . . . Overwicht van alle interactieve objecten Kleurvaten . . . . . . . . . . . . . . . Kleppen . . . . . . . . . . . . . . . . Combinatievat . . . . . . . . . . . . . Pomp . . . . . . . . . . . . . . . . . .
25 27 28 29 29 30 30
vi
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . .
. . . . . . . . . . . . . . .
. . . . . . .
. . . . . . . . . . . . . . .
. . . . . . .
. . . . . . . . . . . . . . .
. . . . . . .
. . . . . . . . . . . . . . .
. . . . . . .
. . . . . . . . . . . . . . .
. . . . . . .
. . . . . . . . . . . . . . .
. . . . . . .
. . . . . . . . . . . . . . .
. . . . . . .
. . . . . . . . . . . . . . .
. . . . . . .
. . . . . . . . . . . . . . .
. . . . . . .
. . . . . . . . . . . . . . .
. . . . . . .
. . . . . . . . . . . . . . .
. . . . . . .
. . . . . . . . . . . . . . .
. . . . . . .
. . . . . . . . . . . . . . .
. . . . . . .
. . . . . . . . . . . . . . .
. . . . . . .
. . . . . . . . . . . . . . .
. . . . . . .
. . . . . . . . . . . . . . .
. . . . . . .
. . . . . . . . . . . . . . .
. . . . . . .
. . . . . . . . . . . . . . .
. . . . . . .
. . . . . . . . . . . . . . .
. . . . . . .
. . . . . . .
LIJST VAN FIGUREN
vii
5.8 Tankboot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.9 Selecteren van een interactie object . . . . . . . . . . . . . . . . . . . . . . . 5.10 Selecteren van een interactie object . . . . . . . . . . . . . . . . . . . . . . .
31 32 33
6.1 6.2 6.3 6.4
Resultaat . . . . . . . . Architectuur . . . . . . Opdrachtverloop . . . . Finale, derde prototype
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
37 40 42 42
A.1 A.2 A.3 A.4 A.5
Windows Presentation Foundation Web Applicatie . . . . . . . . . . Unity . . . . . . . . . . . . . . . Helix Toolkit . . . . . . . . . . . XNA . . . . . . . . . . . . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
44 45 46 47 48
B.1 B.2 B.3 B.4 B.5 B.6
Lokale Git map . . Git Bash . . . . . Git Commando . . Project openen . . Project selecteren Unity opstarten . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
50 51 51 52 53 53
. . . . . .
. . . . . .
. . . . . .
. . . .
. . . . . .
. . . .
. . . . . .
. . . .
. . . . . .
. . . .
. . . . . .
. . . . . .
Hoofdstuk
1
Situering 1.1
Het bedrijf: Intation
Intation is een bedrijf dat zich profileert in de procesautomatisatie en de regeltechniek. Zij houden 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 dus zo 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 de sector waar ze actief zijn. Er moest een eye catcher worden ontwikkeld die men zal gebruiken op een beursstand. De bedoeling was dat mensen hier naartoe kwamen omdat dit vernieuwing bracht en ze liet smaken naar 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 de besturing 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 zodoende konden er parameters worden ingesteld. De nadruk bij deze opdracht lag vooral op de simpliciteit, voor elk persoon die plaats nam moest het logisch zijn om hiermee direct te kunnen werken. Uitleg moest overbodig zijn maar overleg kon leiden tot verbetering. 1
HOOFDSTUK 1. SITUERING
1.3
2
Opdrachtverloop
In het begin van de bachelorproef was er onderzoek gevoerd naar de verschillende mogelijkheden die een oplossing konden bieden. Dit kon nog verder worden onderverdeeld in 3D weergave en Kinect. Door de voor- en nadelen van elke mogelijkheid af te wegen met elkaar was er een keuze gemaakt met welke technologie een eerste prototype opgesteld was. Dit prototype had als doel aan te tonen 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 die verbeterd konden worden. Rekening houdend hiermee werd er een tweede prototype opgesteld dat 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¨ıtief waren en die de werking met het product niet verbeterde. Hierdoor was er gekozen om op een andere manier te werk te gaan en is het derde en ook het laatste prototype ontwikkeld. In dit prototype was het mogelijk eenvoudig en overzichtelijk te werken. In de toekomst is het simpel om dit uit te breiden en extra functionaliteit toe te voegen.
Hoofdstuk
2
Primaire Technologien 2.1
Kinect
Het gebruik van de Kinect is een game- en ontspanningservaring zonder controller die is ontwikkeld door Microsoft. Alvorens het project op de markt was verschenen had het als codenaam: Project Natal. De Kinect bestaat uit een camera met bijhorende software, waarmee systemen kunnen bediend worden, zonder gebruik te maken van een controller. De interactie is mogelijk door gebaren te maken 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 kunnen niet 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
HOOFDSTUK 2. PRIMAIRE TECHNOLOGIEN
2.1.1
4
Personen
Het is mogelijk om met 6 mensen tegelijk voor de camera plaats te nemen en deze elk afzonderlijk te 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 eigen co¨ordinaten in een 3D assen stelsel. Hierdoor laat het ons toe om bepaalde bewegingen die de personen 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 aantal verbeteringen 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 met 4.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 SDK downloaden. Aangezien we gebruik maken van de 2e versie van de Kinect spreken we hier over
HOOFDSTUK 2. PRIMAIRE TECHNOLOGIEN
5
de SDK v2. Bij het installeren van de de SDK zitten een aantal (kleine) voorbeeld programma’s die kunnen opgestart worden en waarvan de broncode kan bekeken worden. Deze programma’s zijn geschreven in een aantal verschillende software talen. C++, C# met WPF en C# met Windows store applicatie.
HOOFDSTUK 2. PRIMAIRE TECHNOLOGIEN
2.2
6
Unity
Voor het behaalde eindresultaat is gebruik gemaakt van de Unity game engine. Zo is op een eenvoudige manier een Interactieve 3D scene ontwikkeld die gebruik maakt van verschillende elementen in de engine. Alle nodige delen die hiervoor nodig zijn geweest staan in dit hoofdstuk uitgelegd.
2.2.1
Algemeen
Unity is een cross-platform game engine dat ontwikkeld is door Unity Technologies. Het wordt gebruikt 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 laatste versie 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 elk platform waarvoor de game ontwikkeld is en bied ondersteuning voor bump mapping, reflection mapping, parallax mapping, sceen space ambient occlusion (SSA0), dynamic shadows using shadow 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 aanschouwd als javascript), C# of Boo.
2.2.2
Hi¨ erarchie
De hi¨erarchie wordt gebruikt voor alle objecten die zich in de sc`ene bevinden. Telkens er een nieuw object wordt toegevoegd is dit hier in te zien. Er kunnen een heleboel verschillende elementen worden toegevoegd. De meeste van de objecten zullen 3D elementen zijn maar ook elementen die gebruikt worden voor het opstellen van de GUI 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 eenvoudig overzicht te behouden uit welke verschillende elementen de scene is opgebouwd.
HOOFDSTUK 2. PRIMAIRE TECHNOLOGIEN
7
Om nieuwe elementen toe te voegen zijn er verschillende mogelijkheden. Een van deze is om elementen hier rechtstreeks in te slepen vanuit een bepaalde map maar. Het is ook mogelijk om standaard elementen toe te voegen die dan worden aangemaakt door Unity zelf. Deze objecten kunnen we aanroepen door middel van een rechter klik op het Hi¨erarchie venster.
Figuur 2.3: Hi¨erarchie
HOOFDSTUK 2. PRIMAIRE TECHNOLOGIEN
2.2.3
8
Inspector
De inspector is een venster binnen Unity dat wordt gebruikt om aan een bepaald element binnen de 3D scene een extra functie te geven. Deze extra functionaliteiten worden componenten genoemd. Er zijn veel van deze componenten, elk met hun eigen functie. De meest voorkomende die 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 het mogelijk 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 worden weergegeven. 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 tag fungeert als een soort van groep die het mogelijk maakt om met verschillende objecten van dezelfde groep te gaan werken. Door middel van de prefab connectie kunnen er meerdere objecten worden aangemaakt die 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 het zich bevindt in de sc`ene. Door middel van de positie parameter kan een 3D co¨ordinaat worden ingesteld. Wanneer het geselecteerd 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 parent object. Met de rotatie parameter kunnen we de rotatie van het object gaan aanpassen, net zoals bij de positie is dit ook mogelijk in drie verschillende assen. Er is ook de mogelijk om een getal in te vullen groter dan 360 graden of kleiner dan 0 graden. Unity zal dit automatisch omrekenen naar de juist waarde.
HOOFDSTUK 2. PRIMAIRE TECHNOLOGIEN
9
Door gebruik te maken van de scale parameter kan de grootte van het object worden veranderd. Wanneer er ´e´en wordt ingeven heeft het object zijn originele grootte. Een waarde groter dan ´e´en zal resulteren in een vergroot object en een waarde kleiner dan 0 zal er voor zorgen dat het object verkleint.
Figuur 2.5: Transformatie
Collider Een collider is een component dat wordt gebruikt voor het detecteren wanneer 2 verschillende objecten met elkaar kruisen. Een bijkomende functie hiervan is dat het ook kan worden gebruikt dat 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 co¨ordinaten van de collider. De grootte van de collider word ingesteld met de size parameter. De collider is visueel te zien in de sc`ene view (meer over de sc`ene view in het volgende puntje) door middel van een groen object. Op deze manier is op een eenvoudige manier te zien waar deze zich exact bevindt en hoe groot deze is. Binnen Unity zijn er een aantal verschillend colliders die gebruikt kunnen worden waarbij elk van 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 meestal gebruikt als je een complexe detectie moet gaan uitvoeren.
Figuur 2.6: Collider
HOOFDSTUK 2. PRIMAIRE TECHNOLOGIEN
10
Script De script component is de meest geavanceerde en complexe. Deze kan worden toegevoegd omdat hiermee de meeste functionaliteit kan worden gegeven. Scripts worden zelf geschreven aan de hand van ´e´en van de drie verschillende programmeer talen die Unity ondersteund. Publieke variabelen die worden aangemaakt binnen het script kunnen vanuit de Unity interface worden ingesteld. Afhankelijk van welk variabele type er wordt aangemaakt zal dit op een andere manier ingesteld worden. Er is ook de mogelijkheid om bepaalde objecten mee te geven aan het script. Hierdoor kan er eenvoudig met andere objecten gewerkt worden.
Figuur 2.7: Script
2.2.4
Sc` ene scherm
Het sc`ene scherm wordt gebruikt voor het plaatsen en ontwerpen van de sc`ene. Elk verschillend object dat je wilt gebruiken moet je hier in aanmaken. Dit scherm maakt het mogelijk om een volledig overzicht te verkrijgen van alle verschillende 3D objecten.
Figuur 2.8: Sc`ene
HOOFDSTUK 2. PRIMAIRE TECHNOLOGIEN
11
Door middel van de verschillende knoppen die zich links bovenbaan bevinden kan de functionaliteit van de muis worden gewijzigd. Wanneer het handje geselecteerd is kan men rondkijken in de sc`ene alsook inzoomen en roteren. Wanneer de 4 pijltjes zijn geselecteerd is er de mogelijkheid om bepaalde objecten te gaan verplaatsen. 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: Sc`ene opties
2.2.5
Game scherm
Het game venster laat zien wat de gebruiker uiteindelijk te zien zal krijgen. Het beeld dat hier wordt op weergeven wordt gecre¨eerd door de camera in de sc`ene. Wanneer de camera verplaatst zal 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 technische informatie weergeven zoals het aantal frames per seconde, geheugen dat nodig is, enz.
Figuur 2.10: Game scherm
HOOFDSTUK 2. PRIMAIRE TECHNOLOGIEN
2.3
12
Blender
De 3D modellen die ik gebruikt heb in de sc`ene heb ik zo goed als allemaal zelf ontwikkeld, op de 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 programma wordt 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 gewenste resultaat. 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 2015 is hun laatste nieuwe versie 2.74 uitgekomen. Het programma is ontwikkeld in C, C++ alsook Python. De software is te gebruiken op zowel Windows, Linux als Mac OS.
2.3.2
Hi¨ erarchie
Net zoals bij Unity heeft ook blender een bepaalde hi¨erarchie waarmee kan gewerkt worden. Hierin zitten alle verschillende elementen waaruit de blender sc`ene is opgebouwd. Aangezien ik Blender enkel heb gebruikt voor het ontwikkelen van 3D modellen heb ik elementen zoals camera en belichting niet nodig gehad. Voor mijn 3D modellen heb ik geprobeerd een zo goed mogelijke structuur te behouden in de verschillende elementen waaruit het model bestond. Zo was er een aanpassing van bepaalde delen.
HOOFDSTUK 2. PRIMAIRE TECHNOLOGIEN
13
Figuur 2.11: Hi¨erarchie
2.3.3
Verschillende modi
Binnen blender zijn er verschillende modi die gebruikt kunnen worden om een bepaalde functionaliteit te verkrijgen. Aangezien ik niet alle modi heb gebruikt bespreek ik enkel de relevante.
Object Modus De object modus wordt gebruikt voor de verschillende elementen, waaruit de sc`ene bestaat op te stellen. Met deze modus is er de mogelijkheid om op een heel object een transformatie uit te voeren. Dit wil zeggen dat we deze objecten kunnen verplaatsen, roteren alsook vergroten of verkleinen.
Figuur 2.12: Object modus
Edit Modus Elk 3D object is opgebouwd uit verschillende delen die allemaal samen de vorm van het object bepalen. De vertices: enkele punten in de 3D omgeving. De edges: lijnen die 2 vertices met elkaar verbinden.
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 de gewenste vorm van het object te verkrijgen. Ook is er de mogelijkheid om faces uit te trekken waardoor meer complexere vormen gecre¨eerd worden.
Figuur 2.13: Object modus
2.3.4
Modifiers
Met behulp van modifiers kunnen we bepaalde complexe vormen cre¨eren zonder dat we hier handmatig elk punt moeten aanmaken. Er zijn een heleboel modifiers die elk hun functie hebben met elk hun eigen parameters die kunnen worden ingesteld. Binnen het project heb ik hiervan er maar ´e´en nodig gehad, namelijk ’solidify’. Met deze modifier heb ik de waterpijpen ontwikkeld. Deze tool laat toe om rond een bepaalde lijn in de 3D scene een ’cirkel’ te trekken. Afhankelijk van de parameters die je hieraan meegeeft wordt bepaald hoe groot deze is en uit hoeveel verschillende faces deze is opgebouwd. Hoe meer faces dat de cirkel bevat hoe ronder hij zal tonen maar hoe meer belastend het is om weer te geven. Door hier een gulden middenweg te vinden heb ik geprobeerd buizen te ontwikkelen die er zowel goed uitzien als niet te belastend zijn om weer te geven.
HOOFDSTUK 2. PRIMAIRE TECHNOLOGIEN
Figuur 2.14: Modifiers
Figuur 2.15: Solidify
15
Hoofdstuk
3
Eerste Prototype
Na het uitvoeren van het onderzoek (voor info rond het onderzoek, bekijk het appendix achteraan de scriptie) en de bespreking van alle voor- en nadelen moest er een keuze worden gemaakt en gewerkt worden aan een eerste prototype. Deze had als functie de verschillende mogelijkheden aan te tonen die haalbaar waren en bereikt konden worden. Er werd gezocht naar bepaalde voorbeelden van andere mensen die pasten binnen deze opdracht en waarvan bepaalde delen konden worden gebruikt. Door verschillende van deze elementen te combineren met elkaar zodat ze ´e´en geheel vormen, kon achteraf een meer gedetailleerde keuze worden gemaakt.
3.1
Gemaakte Keuze
Voor het eerste prototype werd er gekozen voor de ontwikkeling van een WPF applicatie waarbij we 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 te ontwikkelen. Aangezien mijn kennis met .NET op dat moment het grootste was gaf mij dit de meeste om tot een goed resultaat te bekomen. Alsook was implementatie van de Kinect relatief eenvoudig en kon veel voorbeeld code hergebruikt worden. Door gebruik te maken van de Helix Toolkit was er een uitgebreide bibliotheek waarbij complexe 3D items op een eenvoudige manier konden weergeven worden. Het voordeel van de hiervan is dat dit een opensource project is waarbij de gehele broncode kon bekeken worden. Op deze manier konden eventuele zaken die onduidelijk waren opgezocht worden om alsnog de werking begrijpen.
16
HOOFDSTUK 3. EERSTE PROTOTYPE
3.2
17
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 en hoe kwamen we tot een sluitend resultaat? Het was belangrijk dat ons resultaat meetbaar zou zijn, 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 wereld bestond uit 3 muren alsook een plateau op de grond. Hiermee kon worden aangetoond dat er interactie mogelijk was.
Figuur 3.1: Applicatie
HOOFDSTUK 3. EERSTE PROTOTYPE
3.3.1
18
Rondkijken
Wanneer de applicatie was opgestart werden er 2 grote vierkanten op het scherm getoond waarbij het linker werd gebruikt om rond te kijken. Door middel van de linker hand van de gebruiker kon men dit besturen. In een groot vierkant was een klein vakje dat kon worden verplaatst 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 zoals bij 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 richting worden rondgelopen. Dit gold ook voor de horizontale richting.
Figuur 3.3: Rondlopen
HOOFDSTUK 3. EERSTE PROTOTYPE
3.3.3
19
Interactie
Wanneer de gebruiker vooruit liep tot hij op de blauwe schijf terecht kwam, werd dit gedetecteerd en kwam er op het scherm een melding. De detectie hiervan verliep aan de hand van co¨ordinaten van de camera en de blauwe schrijf. Wanneer de camera in de buurt kwam waren deze co¨ordinaten bijna gelijk aan elkaar. Op deze manier kon dan een trigger worden gestuurd die een boodschap ging tonen. Zo werd aangetoond dat interactie tussen verschillende objecten, die zich in de sc`ene bevonden, mogelijk was. Complexere situaties waren nog niet van toepassing, aangezien dit slechts om een prototype ging, waarbij de verschillende mogelijkheden aangetoond werden.
Hoofdstuk
4
Tweede Prototype Uit analyse van de werking van het eerste prototype bleek dat de keuze om met een WPF applicatie met Helix te gaan werken niet de ideale oplossing was. Doordat de 3D wereld volledig moest worden opgesteld in achterliggende code, was het moeilijk om deze in de toekomst te gaan uitbreiden. Vermits er geen grondige kennis van programmatie aanwezig was. Doordat deze limitaties niet verholpen konden worden met deze toolkit werd er overgeschakeld naar een beter, maar vooral gebruiksvriendelijker alternatief. Uit het onderzoek dat in het begin was gevoerd bestond ook de mogelijkheid om met Unity te werken. Dit was niet de eerste keuze vanwege de moeilijke instap factor. Aangezien de 3D wereld op een eenvoudigere manier kon opgesteld worden was dit prototype ontwikkeld met het Unity platform.
4.1
Vereisten
Eenvoudige 3D wereld kunnen opstellen, waarbij zonder extra kennis elementen kunnen worden 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
HOOFDSTUK 4. TWEEDE PROTOTYPE
4.2
21
3D Figuur
De 3D figuur bestond uit een 3D model. Aangezien mensen voor mij nog te moeilijk waren om zelf te ontwikkelen, had ik geopteerd om deze te downloaden van de asset store. Dit model was zeer eenvoudig en niet gedetailleerd, maar was toch voldoende om aan te tonen dat het om 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 programma en kwam de 3D figuur ’tot leven’. Elke beweging die werd gemaakt door de persoon werd dus ook gemaakt door het geanimeerde figuur. Op deze manier werd een levendig geheel gecre¨eerd, 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 model aanwezig waren. Wanneer het commando werd gegeven tot bewegen, werd deze animatie geactiveerd en kon men dit dus visueel volgen. Doordat de persoon gekoppeld was met het 3D figuur werden deze commando’s gegeven door middel van bepaalde handbewegingen. Wanneer de persoon beide handen links van het lichaam hield liep het 3D figuur naar links. Zo ook voor de rechter activatie. Deze manier van werken gold ook voor het naar voren en naar achteren lopen. Er is voor deze manier geopteerd omdat de 3D scene groter was dan het gebied waarin de Kinect de persoon detecteerde.
HOOFDSTUK 4. TWEEDE PROTOTYPE
4.3
22
Sc` ene
De 3D Sc`ene 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 chemisch proces na te bootsen: een aantal vaten zijn met elkaar verbonden en er zijn kleppen in de sc`ene die invloed kunnen hebben op het resultaat. Er moest fysisch kunnen rondgelopen worden in de 3D sc`ene en bepaalde elementen stonden boven elkaar. Dus moest er een oplossing worden bedacht zodat op een innovatieve manier hier 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 midden bedienen.
Figuur 4.2: Sc`ene
Hoofdstuk
5
Finale, derde prototype Uit analyse van het tweede prototype was gebleken dat de fysieke restricties die ontstonden door het rondlopen niet innovatief en vooral tijdrovend waren. Voor het eindresultaat is gekozen voor een techniek waarbij het mogelijk was om in te zoomen op 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 sc`ene 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
HOOFDSTUK 5. FINALE, DERDE PROTOTYPE
5.2
24
Kinect integratie met Unity
Omdat de Kinect moest verbonden kunnen worden met de software in Unity was er gekozen om te gaan werken met een bepaalde asset die in de asset store van Unity te vinden was. Door middel 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 door de Kinect kon worden opgevraagd. Om overzicht te behouden was er een leeg gameobject aangemaakt in de 3D sc`ene 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 Kinect moest gewerkt worden. De werking van dit script was vrij complex maar zorgde ervoor dat je hieraan bepaalde zaken kon vragen zonder complexe toevoegingen. Elke persoon die werd opgemerkt had zijn eigen co¨ordinaten, voor elk gedetecteerd lichaamsdeel. Dit script hield al informatie bij en maakte het mogelijk delen hiervan te gaan opvragen (indien je ze nodig hebt). Wanneer het script werd toegevoegd zijn er een aantal parameters die ingesteld konden worden om een betere werking te garanderen. Een van de belangrijkste parameters was de hoogte en de hoek waar de sensor zich bevond. Deze hadden invloed hebben op de nauwkeurigheid van de 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 de Kinect 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. Foto bijgevoegd op de volgende pagina.
HOOFDSTUK 5. FINALE, DERDE PROTOTYPE
Figuur 5.1: Kinect Manager
25
HOOFDSTUK 5. FINALE, DERDE PROTOTYPE
5.2.2
26
Gesture Listener
De gesture listener was het script dat de beweging van gebaren waarneemt. In dit script was het mogelijk om in te stellen naar welk van de verschillende gebaren er geluisterd moest worden en op welke manier deze opgevraagd werden. Standaard zaten er een aantal verschillende gebaren in, maar er was ook de mogelijkheid om er zelf nog toe te voegen. De gebaren werden gedetecteerd aan de hand van bepaalde opvolgingen van lichaamsbewegingen. Wanneer deze voldeden aan de opgelegde voorwaarden dan werd het gebaar als voltooid beschouwd en kon dit worden gebruikt. Het was belangrijk wanneer er gebruik werd gemaakt van eigen gebaren dat men rekening hield met de toestand waarin dit gebaar werd gestart. Indien de codering niet juist was konden er fouten 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 als 3D objecten mogelijk werd. Hierdoor was het mogelijk om de computer muis te gaan simuleren en te bedienen met de Kinect. De gebruiker kon dan ´e´en van de handen gebruiken om de cursor op het scherm te verplaatsen. Het klikken van de muis werd bediend door het stilhouden van de cursor op een bepaalde plaats gedurende twee seconden. Deze methode werd gebruikt om te wisselen tussen de verschillende fases waarin de software zich kon bevinden, alsook voor de keuze van het object waarmee een interactie uitgevoerd werd. Door gebruik te maken van zowel GUI elementen alsook 3D objecten kreeg het geheel een soepele overgang.
HOOFDSTUK 5. FINALE, DERDE PROTOTYPE
5.3
27
Camera
De camera was het onderdeel dat bepaalde wat er te zien was van de 3D omgeving. De camera was een 3D element dat verplaatst en geroteerd kon worden. Aan de hand van deze factoren kon men 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 invloed hadden op hetgeen te zien was. Een van de belangrijkste parameter waar je rekening mee moest houden 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 gehouden dat je na een bepaalde waarde een vervorming ging krijgen. De maximum waarde hiervoor was 180 en de minimum was 1. Standaard stond dit ingesteld op 65 wat aanvaardbaar was voor deze toepassing. Bovenop de standaard instellingen werd een eigen script toegevoegd. Ook deze had een aantal instellingen die gewijzigd konden worden. Hiermee konden er restricties worden opgelegd in verband 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 de diepte as. Binnen Unity is dit de Z as. Hierdoor leek het dat er werd in- of uitgezoomd. Hoe meer 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 verplaatsen van de camera het voorwerp dat centraal in beeld stond worden gewijzigd. Hierdoor kon men zelf bepalen op welk voorwerp de focus werd gelegd en hierdoor een beter beeld krijgen.
HOOFDSTUK 5. FINALE, DERDE PROTOTYPE
5.4
28
(Interactieve) 3D Objecten
In de scene waren veel objecten aanwezig. Deze verschillende objecten bij elkaar vormen ´e´en geheel en stelden dus 3D wereld op. We herleidden deze in 2 grote groepen. Statische objecten: objecten waarmee geen interactie werd uitgevoerd. Deze objecten zagen er tijdens het proces er altijd hetzelfde uit. Zij dienden louter voor decoratie en vervolledigde van de sc`ene. Zonder deze objecten zou de sc`ene kaal aangevoeld hebben en vervaagde een groot deel van het visuele aspect. Interactieve objecten: objecten die de sc`ene visueel konden veranderen. Deze objecten werden bediend en veranderenden zowel visueel als logisch van toestand. Door de combinatie van verschillende van deze elementen kon een proces worden opgebouwd en beheerd.
Figuur 5.3: Overwicht van alle interactieve objecten
HOOFDSTUK 5. FINALE, DERDE PROTOTYPE
5.4.1
29
Kleurvaten
De kleurvaten waren de 3 vaten die zich bovenaan in de sc`ene bevonden. Elk van deze vaten had zijn eigen vloeistof en kon afzonderlijk worden bijgevuld of geledigd worden. Het vullen van het vat gebeurde aan de hand van een klep rechts van de tank. Als deze open stond en er was vloeistof in de invoer, ging de tank zich vullen. De vloeistof van elke tank was verschillend van kleur zodat deze later in de sc`ene kon gecombineerd worden. De uiterst linkse tank werd gevuld met een rode vloeistof, de middelste met 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 sc`ene. Onder elk vat zat een klep waarmee de doorstroom kon worden ingesteld van 0% tot 100%. 0% kwam overeen met 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 de vloeistof visueel merkbaar zijn.
Figuur 5.5: Kleppen
HOOFDSTUK 5. FINALE, DERDE PROTOTYPE
5.4.3
30
Combinatievat
Het combinatievat bevond zich onderaan de sc`ene. Dit vat is via buizen en kleppen verbonden met de drie kleur vaten bovenaan. Aan de hand van de toestand van de kleppen werd bepaald welke kleur de vloeistof in de tank had. Het volume en de kleur van de vloeistof werd bepaald door de doorstroom in de kleppen. Wanneer ´e´en van de kleppen geopend was liep het vat vol met desbetreffende vloeistof. Wanneer meerdere vloeistoffen in het vat kwamen vermengden deze met elkaar en ontstond een kleurcombinatie.
Figuur 5.6: Combinatievat
5.4.4
Pomp
De pomp die zich bevond in de sc`ene werd gebruikt voor het vullen van de kleur vaten. Op deze 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 het rode, 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 van de pomp. Er kon enkel vloeistof worden gepompt indien er een boot aan de pomp gekoppeld was.
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 aanmeerde aan het dok werd dit gedetecteerd door de pomp. In boot zat een bepaalde hoeveelheid vloeistof die kon worden overgepompt. Wanneer er geen resterende vloeistof meer in de boot zat vaarde deze automatisch weg en verdween na een tijd uit 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
HOOFDSTUK 5. FINALE, DERDE PROTOTYPE
5.5
32
Programma Toestanden
Om een vlotte overgang tussen de verschillende stappen van de software te krijgen en een duidelijk overzicht te bekomen werd gebruikt gemaakt van verschillende toestanden. Elk van deze toestanden hadden hun eigen aparte functie die voltooid werd. Op deze manier kon men door de verschillende stappen van de het programma lopen. Afhankelijk in welke toestand het programma zich bevond werd ook een instructie op het scherm getoond voor de gebruiker. Op deze manier kon de gebruiker op een makkelijke manier te weten komen wat er van hem/haar werd verwacht.
5.5.1
Initialisatie
Dit was de eerste toestand waarin de demo terecht kwam na het opstarten. Hierin gebeurde alle 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 Kinect sensor plaats nam. Dit werd gedetecteerd en vervolgens ging het programma naar de volgende stap.
Figuur 5.9: Initialisatie
HOOFDSTUK 5. FINALE, DERDE PROTOTYPE
5.5.2
33
Selecteren van een interactie object
Wanneer het programma in deze toestand terecht kwam, werd er bepaald met welk van de verschillende objecten de persoon een interactie wou uitvoeren. De selectie van een object werd gedaan door middel van de persoon zijn linker of rechter hand. Wanneer hij/zij ´e´en van de twee voor zich hield kon men via een cursor een keuze gaan maken. Wanneer men over een bepaald interactief object heen ging, lichtte dit op. De keuze van het object kon worden bevestigd door de 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. Dit ging 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 ´e´en van de kleppen werd geselecteerd moest de gebruiker een draaibeweging maken met beide handen. Hierdoor kon hij bepalen of hij de klep meer zou openen of sluiten. Hoe meer de klep openstond hoe sneller de vloeistof er door liep. Wanneer een van de kleurvaten was geselecteerd moest de gebruiker een beweging maken met het rechterhand. Wanneer hij zijn rechterhand naar rechts hield dan sloot hij de vloeistoftoevoer af, wanneer hij echter zijn hand voor zich hield werd de vloeistoftoevoer geopend.
HOOFDSTUK 5. FINALE, DERDE PROTOTYPE
34
Wanneer de pomp was geselecteerd waren er 2 verschillende mogelijkheden. Met behulp van de linkerhand van de gebruiker kon men de pomp aan- en uitschakelen. Het aanschakelen van de pomp werd gedaan door het hand naar boven te bewegen, het uitschakelen door het hand naar beneden te houden. Door middel van de rechterhand kon er worden geselecteerd met welk kleurvat de pomp moest verbonden worden. De uiterste linkse stand kwam overeen met het rode, de middelste stand met het groene en de 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 manier van de ene toestand over te gaan naar de andere. Deze toestanden werden enkel gebruikt wanneer er gebruik gemaakt werd van een bepaald gebaar. Wanneer het bijhorende gebaar werd gedetecteerd, ging er bovenaan het scherm een timer lopen. Wanneer deze timer was volgelopen werd het gebaar als voltooid aanschouwd en kon er verder 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 in deze 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 deze manier kon de gebruiker bepaalde elementen beter in beeld brengen als hij deze achteraf wou selecteren. Wanneer de gebruiker klaar was met het verplaatsen van de camera diende hij zijn beide handen in open positie voor zich te houden. Hierdoor veranderde de toestand naar het selecteren van een object.
HOOFDSTUK 5. FINALE, DERDE PROTOTYPE
5.5.6
35
Inzoomen van de camera
Wanneer er op de knop werd gedrukt voor het inzoomen van de camera werd deze toestand geactiveerd. Net zoals bij het bewegen van de camera werd er gekeken naar de positie van beide handen van de gebruiker. Door de handen verder uit elkaar te houden werd er een inzoom beweging gemaakt en zoomde de camera in. Op deze manier kon de gebruiker bepaalde zaken van dichterbij bekijken om beter details te observeren. Er was ook de mogelijkheid om verder uit 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 vorige toestand.
Hoofdstuk
6
Resultaat Aangezien het project voor een groot deel bestond om te onderzoeken naar de haalbare mogelijkheden, waarbij de vereisten voor het eindproduct moeilijk in te schatten waren, ben ik tevreden met verloop hiervan. Mijn onderzoek heeft aangetoond dat er verschillende mogelijkheden waren om dit probleem op te lossen en tot het gewenst resultaat te komen. Elk van deze oplossingen had zijn eigen vooren nadelen en de eerste keuze was niet altijd de beste. Door middel van gebruik te maken van de Unity game engine was rekening gehouden met uitbreidbaarheid en verdere ontwikkeling in de toekomst. De geschreven scripts voor het programma waren opgesteld om op een overzichtelijke manier de code weer te geven, waarbij in de toekomst nog mee gewerkt kon worden. Hierdoor kan het bedrijf op een eenvoudige manier het project verderzetten en uitbreiden, indien nodig.
36
HOOFDSTUK 6. RESULTAAT
37
Figuur 6.1: Resultaat
HOOFDSTUK 6. RESULTAAT
6.1
38
Tevredenheid
Uit de laatste meeting met het bedrijf was gebleken dat mijn stagepromotor tevreden was met het eindresultaat. Uiteraard waren er nog een aantal kleine punten die verbeterd konden worden, maar algemeen genomen was het resultaat positief. Om het met de woorden van mijn stagepromotor 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 allemaal verwezenlijkt. Uiteraard komt het eindresultaat niet 100% overeen met de oorspronkelijke verwachtingen. In de loop van mijn opdracht werden de vereisten gewijzigd omdat ze een betere werking garandeerden. In onderstaande lijst zijn de vereisten weergegeven die in grote lijnen 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 die naar de beursstand komen) tevreden zijn met het resultaat. Aangezien de demo nog niet in de realiteit getest is blijft dit nog een vraagteken. Uit de vooropgestelde vereisten kunnen we vaststellen dat er geprobeerd is om op een overzichtelijke en gebruiksvriendelijke manier software te ontwikkelen. Hierdoor hopen we dus dat de eindgebruiker positief zal reageren op het resultaat.
6.4
Software Architectuur
Doordat onderhoudbaarheid een vereiste was, is er gebruik gemaakt van een duidelijke software architectuur. Het project werd ontwikkeld met Unity versie 5. Hier zal men in de toekomst rekening mee moeten houden. Bepaalde functies die gebruikt worden in de software zijn pas ondersteund vanaf deze versie. De code die online wordt gevonden is vaak nog geschreven voor een vorige versie en zal dus moeten omgezet worden voor gebruik.
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 deze versie ondersteund werden Elk 3D object dat zich in de sc`ene bevindt heeft zijn eigen script met parameters. Deze parameters zijn vaak de inhoud van het vat, kleur van de vloeistof, enz. Afhankelijk van het object zijn deze verschillend. De programmacontroller is het object/script dat alles in de sc`ene beheert. Deze houdt bij wat er moet gebeuren wanneer bepaalde interacties gebeuren. Dit script gaat er voor zorgen dat de sc`ene ´e´en 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 sc`ene bevinden en welke scripts deze hebben. Indien parameters bij het script aanwezig zijn staan deze onderaan de script naam.
HOOFDSTUK 6. RESULTAAT
40
Figuur 6.2: Architectuur .
HOOFDSTUK 6. RESULTAAT
6.5
41
Uitbreiding en/of verbeteringen in de toekomst
Momenteel zijn er zeker nog een aantal punten die kunnen verbeterd worden, alsook extra toepassingen die kunnen toegevoegd worden. Dit kan gaan van bepaalde kleine items die herschreven 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 sc`ene alsook re¨eel worden nagebouwd. Er is de mogelijkheid om de vaten met vloeistof voor te stellen met bepaalde LEDs die op hun beurt het vloeistof niveau aantonen. De hardware kan zo simpel of complex gemaakt worden als gewenst. Door gebruik te maken van hardware en extra visuele weergaven te cre¨eren, wordt er voor gezorgd dat de demo nog aantrekkelijker wordt. Hierdoor zullen er dus meer mensen ge¨ınteresseerd naar de beursstand komen.
6.5.2
Meerdere sc` enes
Door gebruik te maken van meerdere sc`enes kunnen er verschillende processen worden opgesteld. Men kan op deze manier de gebruiker de keuze laten welke sc`enes hij wil besturen zodat er meer variatie in de demo zit.
HOOFDSTUK 6. RESULTAAT
6.6
42
Gespendeerde tijd
De onderstaande grafieken zijn opgemaakt uit het bekomen werk dat opgenomen is in het logboek. Deze waarden kan men interpreteren maar ik heb geprobeerd om zo re¨eel mogelijke grafiek op te stellen.
Figuur 6.3: Opdrachtverloop
Figuur 6.4: Finale, derde prototype
Hoofdstuk
7
Besluit Het maken van deze opdracht was voor mij plezierig werken. Een leerrijke ervaring met veel vrijheid om een resultaat te bereiken. De taak was niet altijd evident, maar telkens een probleem opdook was de oplossing zoeken een studie proces. Ik ben blij dat ik de kans heb gekregen om met verschillende vernieuwende technologie¨en te werken. Hierdoor heb ik op een korte tijd veel kennis opgedaan die ik later nog zeker kan gebruiken. 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 een begin is van een eindeloos project.
43
Bijlage
A
Onderzoek De eerste fase van de bachelor proef bestond uit om onderzoek te voeren waarin de haalbaarheid van het project beschreven werd en welke verschillende technologie¨en er konden gebruikt worden. De moeilijkheidsfactor was om uit een groot aanbod van informatie het belangrijkste te gebruiken.
A.1
Software Architectuur
Er waren verschillende software architecturen mogelijk waarin gewerkt kon worden. Elk had zijn eigen voor- en nadelen. De bedoeling van het onderzoek was om uit te zoeken welke hiervan het beste paste bij de opdracht.
A.1.1
WPF
Aangezien zowel WPF als Kinect beiden van Microsoft zijn was het heel eenvoudig om deze beide te combineren. Wanneer we de SDK van de Microsoft Kinect downloadde en installeerde waren 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 mij de mogelijkheid om met weinig code heel krachtige en overzichtelijke software te ontwikkelen.
Figuur A.1: Windows Presentation Foundation
44
BIJLAGE A. ONDERZOEK
A.1.2
45
Web Applicatie
De dag van vandaag worden steeds meer applicaties web gebaseerd. Het grote voordeel hiervan is dat men niets zal moeten installeren en dat er volledig kan gewerkt worden in een browser omgeving. Voor het ontwikkelden en garanderen van een goede werking van de applicatie zijn er verschilleden item nodig. De frontend hiervan wordt ontwikkeld in HTML en JavaScript en de opmaak gebeurt aan de hand van CSS. Dit zijn elk afzonderlijke files om gestructureerd overzicht te behouden. Om er voor te zorgen dat de applicatie kan draaien zal deze op een server gehost worden. Dit kan lokaal worden gedaan maar het heeft een groter voordeel als dit kan worden geplaatst in de cloud. Aan de hand van deze manier kan de applicatie overal worden opgevraagd.
Figuur A.2: Web Applicatie
BIJLAGE A. ONDERZOEK
A.2
46
3D Omgeving
De 3D omgeving van de applicatie is ´e´en van de belangrijkste onderdelen. Alles komt omdat de gebruiker dit te zien krijgt en het is de bedoeling dat het er mooi en verzorgt uitziet. De 3D omgeving moet op een eenvoudige manier worden opgesteld waarbij een goed structureel overzicht behouden wordt. Dit geeft het voordeel dat deze in de toekomst kan worden uitgebreid naar een complexer ontwerp.
A.2.1
Unity
Unity is een cross-platform game engine dat ontwikkeld is door Unity Technologies. Het wordt gebruikt 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 laatste versie 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 elk platform waarvoor de game ontwikkeld is en biedt ondersteuning voor bump mapping, reflection mapping, parallax mapping, sceen space ambient occlusion (SSA0), dynamic shadows using shadow 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 aanschouwd als javascript), C# of Boo.
Figuur A.3: Unity
BIJLAGE A. ONDERZOEK
A.2.2
47
Helix Toolkit
De Helix Toolkit kan ge¨ımplementeerd worden wanneer men gebruik gemaakt van het .NET Framework. Er wordt een breed spectrum aan extra functionaliteit voor 3D toegevoegd die het toelaat om zeer krachtige berekeningen uit te voeren. Er is de mogelijkheid om 3D modellen te generen aan de hand van verschillende wiskundige algoritmes alsook externe modellen te implementeren. Op deze modellen kunnen we transformaties uitvoeren waarmee we positie, grootte en rotatie kunnen wijzigen. Wanneer gebruik wordt gemaakt van Visual Studio kan deze toolkit toegevoegd worden aan de hand van NuGets. Hierdoor wordt implementatie zeer eenvoudig en dient niets extra in te stellen. Aangezien dit project een volledig open source project is kan men dus de bron code downloaden en indien nodig decompileren. Wanneer men deze gedownload, zijn er een aantal voorbeeld programma’s die men kan opstarten, deze kunnen zowel basis als uitgebreide functionaliteit aantonen.
Figuur A.4: Helix Toolkit
A.2.3
Viewport3D in XAML
Dit is standaard ingebouwd wanneer we een WPF applicatie opstarten. De 3D modellen worden 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 en complexere items heel moeilijk zijn om overzicht te behouden. Extra functionaliteit is beperkt en we kunnen geen modellen importeren die ontwikkeld zijn in een ander software programma.
BIJLAGE A. ONDERZOEK
A.2.4
48
XNA
XNA is een game engine dat ontwikkeld is door Microsoft, hun doel publiek gericht op studenten en hobbyisten. Met XNA is het mogelijk om games te gaan ontwerpen voor Windows, Xbox 360, Zune media spelers en Windows Phone 7. Het XNA framework is gebaseerd op het .NET framework 2.0 en is uitgerust met een klassen bibliotheek die geoptimaliseerd is voor het ontwikkelen van games. Ook voor 3D weergave is XNA een goede oplossing. Dit komt doordat het gebruik maakt van XNA Framework Content Pipeline toolset die het mogelijk maakt om op een eenvoudige manier 3D 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 oude technologie.
Figuur A.5: XNA
A.3
Kinect
Zie hoofdstuk 2.1
Bijlage
B
Handleiding 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 publieke link downloaden. Hiervoor volg je de stappen in Hoofdstuk B.2 en mag je hoofdstuk B.1 overslaan.
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 naar onderstaande link te surfen wordt een ’.exe’ bestand gedownload. Dit moet uitgevoerd worden om verder te gaan. Link: https://git-scm.com/download/win
49
BIJLAGE B. HANDLEIDING
B.1.2
50
Lokale Git map aanmaken
Om het project te kunnen clonen moet er eerst een lokale Git map aangemaakt worden. Ga naar 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 gemaakt van een bepaalde programma dat Git op een visuele manier weergeeft. Voor de makkelijkheid is 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 venster geopend.
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 Studio server van het bedrijf staat heeft niet iedereen hier toegang toe. Deze kan je pas cloonen wanneer je bent toegevoegd door het bedrijf.
Figuur B.3: Git Commando
BIJLAGE B. HANDLEIDING
B.2
52
Project downloaden van publieke link
Aangezien het project op een digitale manier is afgegeven kan je het hele project downloaden door middel van een publieke link. Wanneer onderstaande link wordt gedownload kan men de inhoud ervan in een map naar keuze plaatsen. 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 is het 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 te voeren 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 eerste keer dat je Unity opstart zal de lijst met projecten leeg zijn. Om het gedownloade project in te voegen moet er op de knop ’Open Other’ gedrukt worden. Vervolgens zal er een scherm getoond worden waarin je een bepaalde map kan aanduiden.
Figuur B.4: Project openen
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
Bijlage
C
Internetbronnen Hieronder staan alle bronnen vanwaar informatie is gehaald om het project tot een goed einde te brengen.
C.1
Unity
http://en.wikipedia.org/wiki/Unity (game engine) Wikipedia pagina van Unity. Hierop staat veel algemene en achtergrond informatie. http://forum.unity3d.com Unity forum waar de community zelf vragen kan stellen. Veel van de problemen die ik ben tegen gekomen konden hierop terug gevonden worden. http://unity3d.com/learn/tutorials/modules Website van Unity waarop basis als geavanceerde tutorials staan om met Unity te leren werken. http://unity3d.com/learn/tutorials/modules/beginner/scripting Informatie over het schrijven van scripts binnen Unity.
C.2
Algemeen
http://stackoverflow.com Vraag en antwoord website voor algemene vragen rond codering.
54
BIJLAGE C. INTERNETBRONNEN
C.3
55
Blender
http://en.wikipedia.org/wiki/Blender (software) Wikipedia pagina van Blender. Hierop heb ik veel algemene informatie gevonden over blender. http://www.blender.org/forum Forum van Blender. Veel problemen met Blender heb ik hierop kunnen vinden. http://wiki.blender.org Wiki pagina van Blender. Hier staat zowel algemene informatie als geavanceerde.