Y T I L A E R d e Augment Kris Merckx
Combineer de virtuele met de echte wereld
Augmented reality
Kris Merckx
Meer informatie over deze en andere uitgaven kunt u verkrijgen bij: Sdu Klantenservice Postbus 20014 2500 EA Den Haag tel.: 070 – 378 98 80 e-mail:
[email protected] web: www.sdu.nl/klantenservice Vormgeving en zetwerk: Fritschy opmaak & redactie Omslagontwerp: Bureau MMX B.V., Bergambacht
ISBN: 978 90 12 58284 1 NUR: 980
© Kris Merckx / Academic Service, 2011 Alle rechten voorbehouden. Behalve de door de Auteurswet gestelde uitzonderingen, mag niets uit deze uitgave worden verveelvoudigd (waaronder begrepen het opslaan in een geautomatiseerd gegevensbestand) en/of openbaar gemaakt door middel van druk, fotokopie, microfilm of op welke andere wijze dan ook, zonder voorafgaande schriftelijke toestemming van de uitgever. De bij toepassing van art. 16b en 17 Auteurswet wettelijk verschuldigde vergoedingen wegens kopiëren dienen te worden voldaan aan de Stichting Reprorecht, Postbus 3060, 2130 KB Hoofddorp, tel.: (023) 799 78 10. Voor het overnemen van een gedeelte van deze uitgave in bloemlezingen, readers en andere compilatiewerken op grond van art. 16 Auteurswet dient men zich te wenden tot de stichting PRO, Postbus 3060, 2130 KB Hoofddorp, tel.: (023) 799 78 09. Voor het overnemen van een gedeelte van deze uitgave ten behoeve van commerciële doeleinden dient men zich te wenden tot de uitgever. Hoewel aan de totstandkoming van deze uitgave de uiterste zorg is besteed, kan voor de afwezigheid van eventuele (druk)fouten en onvolledigheden niet worden ingestaan en aanvaarden auteur(s), redacteur(en) en uitgever deswege geen aansprakelijkheid voor de gevolgen van eventueel voorkomende fouten en onvolledigheden. All rights reserved. No part of this publication may be reproduced, stored in a retrieval system of any nature, or transmitted in any form or by any means, electronic, mechanical, photocopying, recording or otherwise, without the prior written permission of the publisher. While every effort has been made to ensure the reliability of the information presented in this publication, Sdu Uitgevers neither guarantees the accuracy of the data contained herein nor accepts responsibility for errors or omissions or their consequences.
Inhoud
Voorwoord
7 9
1
Augmented reality
1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8
Een eerste kennismaking met augmented reality 9 Een stukje verleden en een streepje toekomstmuziek Een definitie voor AR 14 Augmented of virtual reality? 16 AR waarnemen 17 Spoorzoeken 22 AR voor de massa 24 Software en hardware op ons verlanglijstje 24
2
Interactiviteit programmeren
2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9
De muiscontrole overnemen met een Robot 35 Een Natural User Interface dankzij de Kinect 39 Wiimote-gestures herkennen 42 TUIO en reacTIVision 42 Een IR-afstandsbediening als invoerapparaat 44 Reageren op geluid 44 Hersengolven als invoer met de Emotiv Epoc 47 Surface computers maken AR sociaal 49 Een virtuele bureautafel met BumpTop 49
3
Computer vision en image processing 51
3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10
Computer vision 51 OpenCV 52 Toegang tot de camera 52 Blob en edge detection 58 Helderste pixel traceren 64 Bepaalde kleur traceren 68 Motion detection 70 Face recognition 70 Afstand van gezicht tot scherm meten 72 Interessante bronnen en codevoorbeelden 74
35
9
6
inhoud
75
4
Plaatsbepaling en markers
4.1 4.2
Mobiele tags, markers en QR-codes 75 Sensoren en geolocation 79
5
Zelf AR-hardware bouwen 85
5.1 5.2 5.3 5.4
De juiste onderdelen vinden 85 Modules en sensoren voor AR-hardware 86 Een voorbeeld: een infraroodafstandsbediening als invoerapparaat Interessante AR-hardwareprojecten 89
6
Drie dimensies
6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 6.10 6.11 6.12
OpenGL of P3D 91 3D in HTML5 met WebGL 92 3D in Processing 93 3D in Android-applicaties 95 Een marker, een 3D-model en FlarManager 97 3D is niet altijd 3D 99 Software voor 3D-modellen 102 Interactieve 3D in Adobe Flash 106 3D-modellen importeren in Processing 108 3D-weergavetechnieken 113 Stereoscopie en anaglyphs in Processing 120 Camera’s en anaglyphs in Processing 141
7
AR visualiseren en data inlezen
7.1 7.2 7.3 7.4 7.5
Gelaagd ontwerp in webpagina’s met of zonder Flash Laagjes in Processing 151 Data ophalen in HTML met Javascript 153 Data ophalen in Processing 154 Verbindingen opzetten 159
Register
163
91
149 149
86
Voorwoord
1927. Mijn moeder ziet het levenslicht in een lemen boerderij met aarden vloer. Waterleiding is er niet. Water halen ze aan de dorpspomp. Het laatste nieuws vernemen ze ’s avonds aan de rand van de straat wanneer ze samenkomen met de buren. De meester van de jongensschool, de zusters van de vrije school zijn de bronnen die de waarheid in pacht hebben. De pastoor preekt elke zondag welke kranten en boeken je wel of niet mag lezen. 1992. Ik maak mijn eindwerk. Voor informatie moet ik op zoek in de bibliotheek of ga ik te rade bij iemand die het weten kan. Teksten schrijf ik met de hand uit. Een buurman heeft een typemachine en zal alles uittikken. Een paar jaar later koop ik een computer, op dat moment al een oud ding, met Windows 3.1 en WordPerfect. Mijn moeder snapt die combinatie niet. Het lijkt op een tv met typemachine of net omgekeerd. Maar ze is wel verwonderd. 2011. Ik loop door een onbekende stad en richt mijn mobiele telefoon op een bepaald gebouw . Het toestel tovert informatie over de architect en de geschiedenis van het gebouw op het scherm zonder dat ik ook maar één zoekterm hebt ingegeven. Bovendien vertelt de smartphone ook nog eens dat op nauwelijks honderd meter naar het westen een interessante boekhandel te vinden is waar ik toeristische gidsen over de omgeving kan kopen. Wegwijzers en kaarten worden boven op het beeld van de omgeving geplakt op het touchscreen van mijn smartphone. In die winkel scan ik met het toestel QR-codes op de achterflap van het boek om een e-bookversie te kopen. Een Friend Finder-app toont me op een Google Maps-kaart dat mijn vrouw ondertussen een museum bezoekt. Handig om elkaar snel weer terug te vinden. Verdwalen hoort er niet meer bij. Zij krijgt op haar smartphone automatisch informatie over de aanwezige kunstwerken of 3D-modellen van verdwenen gebouwen. Welkom in de wereld van augmented reality. Augmented reality biedt nieuwe navigatie-ervaringen en zoektechnieken, maar is vooral ook voer voor kunstenaars. De Franse kunstenaar Patrice Warrener verpakte de stadhuizen van Leuven en Gouda in een indrukwekkende lichtprojectie. In Lausanne bouwde een groep studenten van het CV-lab en de universiteit het bevreemdende The Haunted book, een bizar AR-kunstwerk… Augmented reality is een hot item. Het spreekt tot de verbeelding, heeft een hoog wowgehalte, maar schrikt anderen ook weer af. Het lijkt immers alsof toestellen aan het denken gaan en dat roept voor sommigen het spookbeeld op van kunstmatige intelligentie en Big Brother-toestanden. Augmented reality is op zich niet nieuw. In een aantal toepassingen is het zodanig ingeburgerd dat we het zelfs niet meer merken. De echte explosie van
8
voorwoord
augmented reality moet echter nog komen. De boost is onder andere een gevolg van de groei van het mobiele internet en het succes van toestellen met iOS (iPhone, iPad) en Android. Tijd dus voor web- en app-ontwikkelaars om bewust te worden van de nieuwste ontwikkelingen op dit vlak. In dit boek bekijken we wat augmented reality nu precies is, wat we ermee kunnen doen. We richten ons niet alleen op mobiele toepassingen, maar brengen ook heel wat andere toepassingsgebieden onder de aandacht. Kunstenaars, muzikanten, videofreaks, reclamemakers, ze kunnen allemaal inspiratie opdoen voor hun eigen projecten. Aan de hand van praktische voorbeelden en codefragmenten tonen we welke richtingen je met augmented reality uit kan. Daarnaast bekijken we hoe je met een minimum aan kennis van elektronica je eigen AR-hardware kunt samenstellen en programmeren. De hoofdstukken vormen geen afgesloten geheel, en kunnen los van elkaar en door elkaar geraadpleegd worden. Het is wel zinvol om bij het eerste hoofdstuk te beginnen als je nog niet zoveel van augmented reality afweet. Dit boek is zeker niet volledig en biedt ook geen kant-en-klare oplossingen. Het is een gids die je op weg zal zetten in de wondere wereld van augmented reality en creative coding. Weinig pistes in de informaticawereld bieden zoveel perspectieven voor creatievelingen en kunstenaars als AR… Wees verbaasd en verbaas! Meer informatie, links en codevoorbeelden vind je op de website bij dit boek: www.computerkit.be/ar. Bij elk hoofdstuk in dit boek vind je QR-codes die links bevatten naar de corresponderende webpagina’s.
1 Augmented reality
1.1
Een eerste kennismaking met augmented reality
Het is niet zo eenvoudig om het begrip augmented reality duidelijk te omschrijven. In het Nederlands vertaalt men het vaak als ‘toegevoegde realiteit’, maar ‘uitgebreide’ of ‘verhoogde werkelijkheid’ dekt misschien beter de lading. In de rest van het boek zullen we de Engelstalige afkorting AR gebruiken. Bij AR worden directe of indirecte live-beelden aangevuld met digitale door de computer gegenereerde informatie. Die informatie wordt als een gedeeltelijk transparante laag over de live-beelden heen gelegd. De term AR zou in 1990 voor het eerst gebruikt zijn door Thomas Caudell, een ontwikkelaar bij Boeing. Hij gebruikte de term voor een head mounted display (HMD) die de arbeiders die de bedrading in de vliegtuigen aanbrachten, moest helpen bij die ingewikkelde taak. De digitale beelden verrijkten hun beeld van de werkelijkheid. De HMD zelf was geen uitvinding van Thomas Caudell, maar werd reeds in de jaren ’60 van de vorige eeuw ontwikkeld door de computerwetenschappers Bob Sproull en Ivan Sutherland, voor de weergave van virtual reality-beelden. Tegenwoordig kennen we AR vooral van applicaties zoals Layar op de smartphones met iOS en Google Android. Die AR-apps nemen met de webcam een live-beeld van de omgeving en voorzien dit van een extra laag informatie. Omdat de zoekopdracht niet meer door de gebruiker wordt ingegeven, maar automatisch door het toestel wordt opgevraagd en weergegeven, lijkt het alsof we hier met kunstmatige intelligentie of artificial intelligence (AI) te maken hebben. Vaak is de waarheid iets minder geavanceerd, maar je kunt het gerust als een eerste stap zien in de richting van AI in de dagdagelijkse werkelijkheid. De invoer voor AR komt soms, maar lang niet altijd, via user-input, maar tegenwoordig vaak ook via sensoren en chips. Een smartphone met AR-functionaliteit registreert via een GPS-chip de locatie van de gebruiker en via een digitaal kompas zijn oriëntatie, vergelijkt de resultaten met de informatie in een databank en toont het eindresultaat aan de gebruiker. Bij indirecte AR zijn de gegevens vaak wel door ‘onzichtbare’ personen ingegeven, daarom stellen gebruikers zich in dit geval minder vragen.
1.2
Een stukje verleden en een streepje toekomstmuziek
De meest geavanceerde head mounted display of head-up display is in gebruik bij de Amerikaanse luchtmacht. Piloten van een F-35 kunnen de gewenste vorm van informatie selecteren. Het directe beeld van de omgeving dat ze door hun helm en door de ramen van het vliegtuig te zien krijgen, wordt aangevuld met symbolen en/of een kaart. ’s Nachts toont de HUD een 3D-wireframe van de omgeving zodat de piloten letterlijk blindelings kunnen vliegen.
hoofdstuk 1
10
Figuur 1.1
De HUD in een F-35
Oorlogvoering is gelukkig niet het enige toepassingsgebied van HUD’s en HMD’s. Ook voor games, extreme sporten, geneeskunde, wetenschappelijk onderzoek enz. bestaan er gelijksoortige systemen die de gebruiker bij zijn taak moeten helpen. Voor de consument is een
augmented reality
11
HUD natuurlijk een beetje te veel van het goede, maar de ontwikkeling gaat ook op dit vlak razendsnel. Een simpele AR-bril of zelfs AR-contactlens behoort tot de mogelijkheden. Het idee van AR-contactlenzen stamt uit SF-verhalen. Het is misschien wel wat raar om aan de cyborg in Terminator AR-contactlenzen te geven. In het geval van een robot zullen de digitale data rechtstreeks in het virtuele brein zitten als een reeks te verwerken instructies. Maar het schept natuurlijk wel de juiste sfeer voor de film en de achtervolgingsscenes. In de boeken van de SF-schrijver, wiskundige en informaticus Vernor Vinge hebben de personages geen hersenimplantaten of smartphones voor AR-informatie, maar elektronische contactlenzen. Vernor Vinge heeft een cultstatus in kringen van transhumanisten door zijn essay Singularity. Transhumanisten geloven rotsvast in technologische singulariteit. Singulariteit is een moment in de (al dan niet nabije) toekomst waarin technologie en wetenschap een zodanig niveau bereiken dat het verstand van hedendaagse mensen tekortschiet om de ontwikkeling nog te kunnen begrijpen. Volgens hen zullen machines die over een geavanceerde kunstmatige intelligentie beschikken en posthumans (mensen die zich door bionische ingrepen en genetische manipulatie hebben ‘verbeterd’) hun eigen evolutie in de hand nemen. Het idee van transhumanisme komt sterk naar voren in de film Matrix. Naast talloze SF-romans en novellen publiceerde Vinge in het gerenommeerde tijdschrift Nature een interessant artikel over de toekomst van het internet. (Bron: http://www.nature.com/nature/journal/v440/n7083/full/440411a.html#a1). De Virtual Retinal Display van Microvision (www.mvis.com) is een vorm van HUD waarbij de beelden rechtstreeks op het netvlies worden geprojecteerd. Babak A. Parviz, professor bionanotechnologie aan de universiteit van Washington (Seattle) werkt samen met een team van professoren en studenten aan een AR-contactlens. Een eerste werkende versie is klaar voor ‘massaproductie’, ook al is de functionaliteit op dit moment nog erg beperkt. Naast een glucosemonitor bouwde zijn team ook biosensoren die informatie met bepaalde molecules kunnen uitwisselen via elektrische signalen. Ze hebben met andere woorden alle technologie voor handen die nodig is voor de verdere ontwikkeling van AR-contactlenzen. De lenzen zijn ingepakt in een polymeerlaag en grondig op veiligheid getest (op konijnen!). De lens voorziet zichzelf van energie via lage radio-frequentie-signalen (RF power) waarmee een kleine hoeveelheid energie kan worden opgewekt, want slechts een paar microwatt zijn nodig om een voor het oog zichtbaar beeld op te bouwen. Het menselijk oog heeft immers geen massa licht nodig om informatie te registreren. Anders dan bij een computermonitor of smartphonescherm, waar het grootste deel van de uitgezonden energie verloren gaat, helpt bij de AR-lens elk foton bij de opbouw van het AR-beeld omdat de lens meteen op het oog ligt. Eenmaal voldoende ontwikkeld kan de lens tekst, grafieken, kaarten, afbeeldingen of zelfs film direct ‘op het oog’ weergeven. Uiteraard moet in dat geval nog steeds een extern draagbaar toestel zorgen voor het draadloos doorgeven van de informatie aan de lens. Maar het is niet moeilijk om toekomstige mogelijkheden voor deze vorm van nanotechnologie te bedenken. Mogelijk vervangt het in de toekomst computerschermen!
hoofdstuk 1
12
Figuur 1.2
AR-contactlenzen
Met een AR-lens zullen we ons nog niet meteen massaal op straat begeven. Maar andere toepassingen van AR zijn zodanig ingeburgerd dat we het zelfs niet meer als dusdanig herkennen. Het weergeven van een laag tekstinformatie bovenop een live-voetbalwedstrijd op televisie is het bekendste voorbeeld van indirecte AR. De wedstrijdresultaten, de tijd enz. worden superimposed over de wedstrijdbeelden gelegd. Bij concerten is het weergeven van een mix van live-beelden en vooraf opgenomen film en animaties op reusachtige projectieschermen de gewoonste zaak van de wereld geworden.
Figuur 1.3
Via AR is het mogelijk om de indruk te wekken dat Elvis Presley nog echt op het podium staat in de concertreeks ‘The King Returns’
augmented reality
13
AR-geschiedenis in een notendop 19571962
Morton Heilig ontwikkelt Sensorama, een simulator die beelden, geluid, vibraties en geuren combineert.
1966
Ivan Sutherland introduceert HMD.
1968
Ivan Sutherland, eerste AR-systeem op basis van twee trackers (ultrasoon en mechanisch)
1975
Videoplace van Myron Krueger laat interactie toe tussen gebruikers en virtuele objecten.
1992
Virtual Fixtures, eerste werkende AR-systeem (US Air Fore Research Laboratory).
1992
KARMA, een AR-prototype.
1993
Een navigatiesysteem voor slechtzienden met een elektronisch kompas, GPS en een akoestische virtueel display, data uit een GIS (geographic information system).
1994
Eerste AR-theaterproductie ‘Dancing in cyberspace’.
1994
Steve Mann droeg een draadloze webcam die zijn afbeeldingen pucliceerde op het internet. Bezoekers van zijn pagina konden tekstboodschappen sturen die op een scherm verschenen.
1995
NaviCam. Combinatie van een camera met live-beelden. Computer voegde tekstinformatie toe op basis van de in de afbeeldingen aanwezige informatie.
Figuur 1.4 Navicam-systeem 1996
Jun Rekimoto presenteert het eerste markersysteem (met vierkantige patronen).
1997
MARS (mobile augmented reality system) van Steve Feiner. Draagbaar AR-systeem met HUD, computer, radio, GPS, touch interface, stylus.
1998
‘Map-in-the-hat’-systeem van Bruce Thomas. HMD, elektronisch kompas. Hulpmiddel om te navigeren.
1998
Spatial AR ontwikkeld door University of North Carolina.
hoofdstuk 1
14
1999
AR-Toolkit (zie verderop).
1999
Eerste GPS-telefoon (Benefon ESC).
2000 BARS (Battlefield Augmented Reality System). Systeem helpt militairen om vriend en vijand te lokaliseren en onderscheiden. 2000 Mobiele telefoon met camera van Sharp. 2001
AR-PDA van Jurgen Fruend. Streamt vanaf een AR-server video en audio en voegt virtuele informatie toe.
2001
AR-systeem voor historische sites. In eerste instantie ontworpen voor Olympia (Griekenland): navigatie, avatars, 3D-modellen van verdenen gebouwen, wireless verbinding, HMD, pocket-PC’s/palmtops etc.
2001
GEIST-applicatie in de vorm van een game. Vertelt verhalen over historische gebeurtenissen. Gebruikers kunnen informatie over feiten opvragen.
2001
Eerste AR-browser (RWWW) van Kooper en McIntyre. AR-applicatie haalt via internet zijn informatie op. Maar erg gecompliceerd door ingewikkeld trackingsysteem en headset.
2002
Op het hoofd bevestigde camera voor het tracken, een computer op de rug helpt gebruiker de weg te vinden in gebouwen.
2003
Adrian David Cheok ontwikkelt Pacman-achtig AR-game. Gebruikers kunnen elkaars bewegingen volgen (maakt gebruik van sensoren en Bluetooth).
2003
Ramesh Raskar ontwikkelt de iLamps-projector voor ‘augmentation’ op echte objecten.
2003
AR-navigatiesysteem van Daniel Wagner en Dieter Schmalstieg. Gebruiker ziet 3D-beeld van gebouw op PDA om hem de weg te wijzen.
2004
Augmented video op basis van 3D-markers.
2004/ AR-games (The Invisible Train, AR-Tennis) 2005 2006 AR-trackingsysteem van Reitmayr. 2007
GroundCam van DiVerdi en Hollerer. Camera houdt de route bij en berekent de geschatte tijdsduur.
2008 Eerste commerciële AR-museumgids. Ontwikkeld door Metajo in samenwerking met het Louvre (Parijs). 2009 MapLens (kaartapplicatie), Arhrrr!-game 2010
Google zet in op AR voor zijn Android-platform. Goggles is een AR-image-recognitionszoekmachine.
1.3
Een definitie voor AR
Ronald Azuma is een van de pioniers op het vlak van augmented reality. Momenteel leidt hij het Pervasive Media and Gaming team bij het Nokia Research Center in Santa Monica. Hij en zijn team onderzoeken en ontwikkelen nieuwe manieren voor wat ze noemen ‘mobile entertainment experiences’. De grote krachtlijn voor hun onderzoek is het ontwikkelen van een platform voor ‘mixed reality’-ervaringen. Hun eerste project was de legendarische ‘Westwood Experience’ (december 2009 en januari 2010) waarbij echte filmsets
augmented reality
15
werden gemengd met AR-beelden op smartphones. Hij benadrukt in zijn lezingen het belang van het verhaal in AR-ervaringen en dat het vooral aan de ‘artiesten’ is om nieuwe ARtoepassingen te bedenken. Voor zijn werk bij Nokia was hij al actief op het vlak van augmented reality. Als professor in electrical engineering en computerwetenschappen deed hij al onderzoek aan het NSF/ARPA Science and Technology Center for Computer Graphics and Scientific Visualization (http://www.cs.unc.edu/~azuma/azuma_AR.html), onder andere naar HUD’s. Azuma is echter vooral bekend door zijn ietwat eigenzinninge definitie voor het begrip Augmented Reality: – het mengen van echte en virtuele beelden; – interactief in real time; – genereert 3D-beelden. Naast ‘augmented reality’ spreekt Azuma vaak van ‘mixed reality’ omdat beelden uit de echte wereld worden gemengd met digitale beelden. Als belangrijkste voordeel ziet hij de mogelijkheid om de werkelijkheid vanuit iemand anders zijn perspectief waar te nemen. Een ontwikkelaar van Bing Maps, de online kaartenservice van Microsoft, toonde hiervan op de beroemde TED-conferenties een prachtig voorbeeld (http://www.realityprime.com/ featured/best-use-of-augmented-reality-ever).
Figuur 1.5
De beelden in de online service Bing Maps worden ‘uitgebreid’ met live-camerabeelden van een smartphone van iemand die zich op de locatie bevindt (beelden TED-conferentie)
hoofdstuk 1
16
1.4
Augmented of virtual reality?
Het eerder vernoemde ‘mixed reality’ is ruimer dan het begrip AR. Paul Milgram en Fumio Kishino definieerden in 1994 het Milgram’s Reality Virtuality Continuum. Ze onderscheiden in mixed reality vier stappen: 1 real environment (de echte omgeving); 2 augmented reality (AR); 3 augmented virtuality (AV); 4 virtual environment (volledig virtuele omgeving). Bij real environment gaat het niet zo zeer over het waarnemen van de werkelijkheid, maar nog steeds over het mengen van echte met virtuele beelden. Een bekend voorbeeld zijn TUI’s (Tangible User Interfaces) of NUI’s (Natural User Interfaces). Hierbij gebruik je echte voorwerpen (eventueel uitgerust met sensoren) of mensen voor de interactie met computers. Een aantal voorbeelden van TUI’s vind je op http://www.guillaumeriviere.name/collection/ tui.html. Heel erg ingeburgerd zijn toestellen als de Wii en de Xbox Kinect – dat zijn KUI’s (Kinetic User Interfaces) – waarbij natuurlijke bewegingen van voorwerpen of mensen zorgen voor de interactie met computers. Bij augmented reality maakt men een onderscheid tussen Spatial AR, See-through AR en Projection Augmented Models (PA-models): 1 Bij Spatial AR wordt door de computer gegenereerde informatie in de omgeving geprojecteerd. De gebruiker kan interactief met de projecties omgaan of de projectie/computer reageert op de gebruiker. 2 Bij See-through AR draagt de gebruiker een HMD, AR-contactlens of bril. Augmented virtuality doet net het omgekeerde van AR. Het voegt echte beelden toe aan een virtuele omgeving. Virtual environment of virtual reality is het andere uiterste. Het volledige beeld wordt door de computer gegenereerd. Wel kunnen er net zoals in een 3D-programma afbeeldingen uit de echte wereld als textures (vullingen) op virtuele objecten worden ‘gemapt’ (virtueel geprojecteerd). Hier maakt men een onderscheid tussen Semi immersive VR en Immersive VR. Bij Semi Immersive VR vult het VR-beeld slechts een deel van het gezichtsveld van de gebruiker. Denk bijvoorbeeld aan een ‘flight simulator’. Een Immersive VR-beeld vult het volledige gezichtsveld, door gebruik van een HMD of projecties, met beelden over de gehele omgeving van de gebruiker. Het onderscheid tussen de verschillende fasen in het Milgram’s continuüm zijn niet altijd even duidelijk en vastomlijnd. Zo vormen PA-models echt een randgeval tussen Spatial AR en TUI’s. Bij een PA-model wordt op een fysisch object een computerafbeelding geprojecteerd (gemapt), op een gelijksoortige manier als in een 3D-programma een vulling op een object wordt geplaatst.
augmented reality
Figuur 1.6
1.5
17
Het programma Terragen is gespecialiseerd in het ‘uit het niets’ genereren van landschappen, zeeën, gebergtes, wolken. Het resultaat zijn hyperrealistische beelden die in vrijwel niets te onderscheiden zijn van echte foto’s (bron: afbeelding: www.picolous.com)
AR waarnemen
Eerder hadden we het al even over de AR-bril, de HMD en de AR-contactlens. Dat zijn slechts enkele, zij het zeer geavanceerde manieren om AR waar te nemen. Het zijn echter niet de meest voor de hand liggende technieken. Men onderscheidt verschillende types naargelang de manier waarop AR wordt waargenomen (display types). display type I
monitor, beamer, mobiele telefoon
digitale informatie wordt op een live-beeld gelegd
display type II
bril, HMD, contactlens
beelden zitten niet in het scherm, je krijgt de indruk dat je door beelden kunt ‘lopen’
display type III
projecties
projecties op objecten of gebouwen
Voor de display types I en II bestaan er dus ruwweg twee manieren om virtuele en echte beelden te mengen:
hoofdstuk 1
18
Mixing
Techniek
Voordelen
video see-through
De beelden worden met een camera opgenomen, gemengd met digitale beelden en live getoond. Je zou het realtime videomontage kunnen noemen. Ook live-voetbalbeelden vallen in principe in deze categorie (Figuur 1.7).
heel ‘breed’ FOV (field of view) is makkelijk te implementeren
meer speelruimte bij ‘compositing’ van beelden
optical see-through
De gebruiker ziet de werkelijkheid door een bril of HMD, maar op de display worden in real time beelden toegevoegd (Figuur 1.8).
relatief eenvoudig en goedkoper
volledige resolutie want echt beeld
veiliger en minder gevoelig voor storingen
geen vervormingen van het beeld
Figuur 1.7
De werking van video see-through
augmented reality
Figuur 1.8
19
De werking van optical see-through
Hoe noem je dan de techniek gebruikt in AR-browsers op mobiele telefoons? Dat is duidelijk geen optical see-through, maar video-see-through. Je ziet het beeld immers niet rechtstreeks, maar als een samengesteld beeld. Bij Projector-based AR worden met behulp van projectors beelden op bestaande opbjecten geprojecteerd.
Figuur 1.9
Projector-based AR
20
Figuur 1.10
hoofdstuk 1
De Franse lichtkunstenaar Patrice Warrener ‘verpakt’ historische gebouwen met kleurprojecties. Hier zie je het stadhuis van Leuven (bron: perswww.kuleuven .be). Ook het stadhuis van Gouda kreeg zo’n AR-behandeling (bron: http://nl .wikipedia.org/wiki/Patrice_Warrener).
Bij Projection Screen AR wordt tussen de toeschouwer en het publiek een glazen wand of doek geplaatst. De beelden worden ‘door’ het scherm op de echte objecten geprojecteerd. Hier kun je werkelijk spookachtige taferelen mee creëren. Deze techniek werd op een gelijksoortige manier al toegepast in de negentiende en misschien zelfs al achttiende eeuw bij fantasmagorieën waarbij diverse vaste en mobiele toverlantaarns (magic lanterns, lanterne magique) spiegels en projectieschermen werden gebruikt om echte acteurs tegen ‘virtuele’ uit te spelen.
Figuur 1.11 Fantascope projection, extraite de la Physique de Ganot (A. Molteni)
augmented reality
21
Figuur 1.12 Fantasmagorie, ‘Magasin Pittoresque’ 1849 Henry Dircks slaagde er in 1862 in met de hulp van de Londense hoogleraar scheikunde John Pepper om een ‘virtuele’ geest te laten verschijnen met behulp van toverlantaarns. In het kinderpark Efteling wordt ‘Pepper’s Ghost’-techniek onder andere gebruikt bij de prachtige voorstelling van Het meisje met de zwavelstokjes. Een uitgebreide beschrijving van de techniek vind je op http://en.wikipedia.org/wiki/Pepper’s_ghost.
Figuur 1.13
Pepper’s ghost
hoofdstuk 1
22
1.6
Spoorzoeken
Het belangrijkste en vooral ook moeilijkste onderdeel van augmented reality is het lokaliseren van de gebruiker(s) en het correct plaatsen van digitale beelden op de ‘echte’ wereld. Tracking (‘spoorzoeken’) vormt de basis voor AR en zorgt voor een realistische vermenging van echt en virtueel. In AR is tracking heel wat moeilijker dan in volledig virtuele omgevingen. De gebruiker merkt veel sneller afwijkingen. Een beeld komt pas als realistisch over wanneer het grote precisie bereikt en vertragingen zijn in dit geval helemaal onaanvaardbaar. Toch zijn fouten niet ondenkbaar: optische fouten, foute uitlijning, vertragingen door soft- en/of hardware en dergelijke. Er bestaat een groot aantal beschikbare technieken die los van elkaar of gecombineerd gebruikt kunnen worden. In de filmwereld maakt men vaak gebruik van armaturen met positiesensoren. Wanneer een acteur in zo’n pak kruipt, kan software de positie van de verschillende sensoren overbrengen op een virtueel model. Het meest bekende voorbeeld is ongetwijfeld Gollem in de verfilming van The Lord Of The Rings. In 3D-software kan men een virtueel skelet (bones) toekennen aan een 3D-model en er de bewegingen van een echte acteur aan koppelen. Met het programma Animata (zie hoofdstuk 7) kun je animaties bouwen en weergeven in real time op basis van bewegingen van acteurs of live-geluid. De positiesensoren die via kabels op een computer zijn aangesloten kunnen ook vervangen worden door bijvoorbeeld een led-licht of veelkleurige leds die we met computer vision-technieken laten registreren. Het nadeel is dat dit behoorlijk wat rekenkracht vraagt. In hoofdstuk 5 Zelf AR-hardware bouwen komen de belangrijkste elektronische of elektromagnetische sensoren aan bod: motion detection, warmtesensoren, infraroodsensoren, piëzo-elektrische elementen voor geluidsherkenning enzovoort. Kun je niet beschikken over sensoren voor positiebepaling, dan kun je nog steeds terugvallen op een klassieke technieken als dead reckoning. Het begrip dead is afgeleid van ded (de afkorting voor ‘deduced’ of ‘afgeleid’). Hierbij bereken je de huidige positie aan de hand van een vorige bekende positie daarbij rekening houdend met snelheid, richting, tijdsverloop et cetera. Nadeel is dat wijzigingen niet accuraat kunnen worden berekend. Fouten zijn in dit geval ook cumulatief: als een positie eenmaal fout wordt berekend, is ook de volgende positie verkeerd. Inertial navigation combineert het gebruik van een computer, motion sensors (accelerometers) en rotatiesensoren (gyroscopes) om continu via dead reckoning de plaats, oriëntatie, snelheid en richting te bepalen. In mobiele telefoons combineert men bijvoorbeeld inertial navigation met een GPSchip voor het tracken van de positie. De GPS-hardware in die toestellen is echter niet altijd even accuraat. Verderop in het boek vind je codevoorbeelden voor het opvragen van sensoren GPS-informatie op de bekendste mobiele platformen.
augmented reality
23
In de medische wereld maakt men al geruime tijd gebruik van heel geavanceerde technieken voor tracking. Bij computertomografie (CT-scan) doorzoekt men het menselijk lichaam met röntgenstraling. De computer bouwt aan de hand van de gevonden resultaten een 3D-beeld op van het onderzochte orgaan. Een MRI-scan (magnetic resonance imaging) daarentegen maakt voor het opbouwen van een beeld gebruik van magnetische resonantie. Voor heel andere (bijvoorbeeld wetenschappelijke) doeleinden kan men ook een 3D-laserscanner inzetten. Zo’n toestel plaatst op het te scannen object een groot aantal virtuele punten waarvan het de positie meet. Aan de punt van die punten wordt een waarheidsgetrouw digitaal 3D-model opgebouwd. De meeste mensen gebruiken voor het tracken op hun computer enkel een muis of tekentablet. De laatste jaren is het scala aan invoertechnieken enorm uitgebreid en dit opent een breed scala aan perspectieven voor AR-ontwikkelaars. De Wiimote en de X-box Kinect zijn een paar van de belangrijkste en bekendste voorbeelden. Hoe je de Kinect voor je eigen projecten kunt gebruiken, komt verderop in dit boek aan bod. De Kinect spreekt enorm tot de verbeelding omdat hij natural features (lichaamsdelen en natuurlijke bewegingen) herkent. Maar ook zonder dit toestel is het mogelijk om de computer elementen te laten herkennen via computer vision. Softwaretechnieken zoals blob detection, haar wavelets, motion detection en software als OpenCV vind je in hoofdstuk 3 Computer vision en image processing.
Figuur 1.14 Fotogrammetrie-software Bron: http://www.meettekenwerk.nl/meettechnieken /fotogrammetrie/
hoofdstuk 1
24
Voor het verkrijgen van een perfecte weergave van mixed reality is ook het positioneren van de virtuele beelden op het ‘echte’ beeld van groot belang. Een fiduciary marker of fiducial is een object (bijvoorbeeld een led-licht) of figuur die op de plaats van weergave wordt aangebracht als referentiepunt. De al oude techniek van de fotogrammetrie en stereofotogrammetrie gebruikt referentiepunten in foto’s om aan de hand daarvan 3D-modellen van gebouwen, landschappen of objecten te maken. Deze techniek en daaraan verwante algoritmes hebben hun weg gevonden naar AR. Heel bekend zijn de uit de auto-industrie afkomstige QR-markers. QR-lezers registreren (maken een foto van) de marker en vergelijken de grootte van de zwarte blokken op drie hoekpunten (referentiepunten) om bijvoorbeeld een 3D-beeld op de marker te ‘projecteren’ (figuur 1.14).
1.7
AR voor de massa
De groeiende invloed van AR-applicaties is aan een reeks factoren te danken. Nieuwe en snellere CPU’s en GPU’s zorgen voor meer rekenkracht en brengen computer vision-algoritmes tot op de kleinste toestellen. Elektronische sensoren worden steeds kleiner en een webcam is in zo wat ieder mobiel toestel en smartphone geïntegreerd. Door de explosie van het mobiele internet verslapt de aandacht voor AR naar AR-browsers en vergeten we maar al te snel welke fantastische educatieve en artistieke mogelijkheden AR daarnaast nog meer biedt.
1.8
Software en hardware op ons verlanglijstje
Processing De meeste voorbeelden in dit boek zijn afgestemd op Processing. Processing is een open source programmeertaal en IDE (integrated development environment) waarmee je in een oogwenk interactive animaties en programma’s schrijft. Casey Reas en Benjamin Fry ontwierpen de taal om kunstenaars, studenten en geïnteresseerden de mogelijkheid te geven op een eenvoudige manier krachtige interactieve toepassingen te schrijven. De taal is afgeleid van Java, maar veel eenvoudiger in gebruik. Processing maakt het voor artiesten en/of mensen met weinig programmeerervaring mogelijk om met een minimum van code, fantastische interactieve animaties en visualisaties te maken. Het eindresultaat kun je exporteren naar een Java-applet of programma’s voor Windows, Linux, Mac OS X en het mobiele platform Android. De Processing-IDE is beschikbaar voor al deze platformen. – Gratis te downloaden en open source. – Ontwerpen van interactieve programma’s met 2D-, 3D- en PDF-output! – Integratie van OpenGL (ook voor Android!). – Platformonafhankelijk (Windows, Linux, Mac OS X, Android). – Honderden vrij te installeren libraries voor de integratie van geluid, video, computer vision, QR-codes, netwerkverbindingen e.d. – Een Artoolkit-library voor Processing (http://code.google.com/p/simple-artoolkit-processing/). – Libraries voor Kinect, Wiimote enz.
augmented reality
25
Het onderstaande Processing-voorbeeld tekent een witte cirkel van 300 pixels breed en hoog in het midden van een zwart ‘canvas’ van 400 pixels breed en hoog. void setup(){ size(400, 400); background(0); stroke(255); ellipse(200, 200, 300, 300); }
Belangrijke links: – http://www.processing.org/ – http://processing.org/reference/ – http://www.processinghacks.com/
Figuur 1.15
De Processing-IDE met een voorbeeld in voorvertoning
Arduino Processing is eveneens de IDE voor het open source prototyping hardwareplatform Arduino. Het zag het levenslicht in 2005 in Ivrea (Italië). De geestelijke vaders Massimo Banzi en David Cuartielles noemden hun geesteskind Arduino naar de belangrijkste historische figuur van hun stad, Arduin van Ivrea. Hoofddoel was het ontwikkelen van een goedkoop alternatief voor dure prototyping-systemen om hun studenten te helpen bij het bouwen van interactieve design-projecten. De Arduino is afgeleid van het open source Wiring-platform van de Colombiaanse kunstenaar en programmeur Hernando Barragán. Wiring (http://wiring .org.co/) is op zijn beurt eveneens afgeleid van Processing.
hoofdstuk 1
26
Figuur 1.16
De Arduino-microcontroller
De ATmega168-microcontroller van Atmel vormt de kern van de Arduino. Met de Arduino bouw je toestellen die reageren op digitale en analoge invoersignalen. De invoer kan komen van een computer (via USB), het netwerk, schakelaars, lichtsensoren, bewegingsmeters, afstandsmeters, temperatuursensoren, commando’s afkomstig via internet, radiomodules enz. De Arduino kan de invoer verwerken en zorgen voor de gewenste uitvoer: beeldschermen, lampen, motoren. Naast sensoren kun je op de Arduino ook ‘shields’ inpluggen. Heel bekend zijn de WiFi- en GPS-shield, maar er bestaan shields met functionaliteit voor het bouwen van eigenhandige audiospelers, GSM’s en dergelijke. In hoofdstuk 5 Zelf ARhardware bouwen komen de belangrijkste shields en sensoren uitgebreid aan bod. Belangrijke links: – http://www.arduino.cc – http://www.arduino.nu Arduino-programma’s schrijf je in een aangepaste versie van de Processing-IDE (http:// arduino.cc/en/Main/Software). Als de code klaar is, kun je ze met een eenvoudige klik op de knop uploaden naar de Arduino. De Arduino krijgt stroom via een USB-verbinding, maar kan ook los van de computer functioneren via een netadapter of batterijen. De eerste stappen voor het gebruik van de Arduino vind je afhankelijk van het gebruikte besturingssysteem op http://arduino.cc/en/Guide/MacOSX, http://arduino.cc/en/Guide/ Windows of http://www.arduino.cc/playground/Learning/Linux. Net zoals bij Processing zit bij de Arduino-environment een aantal voorbeeldbestanden waarmee je meteen aan het experimenteren kunt gaan. Het onderstaande voorbeeld leest een analoog invoersignaal op pin 0 en drukt de resultaten af in de serial monitor van de Arduino environment. void setup(){ Serial.begin(9600); } void loop(){ int sensorValue = analogRead(A0); Serial.println(sensorValue, DEC); }
augmented reality
27
Figuur 1.17
De uitvoer van de bovenstaande code in de serial monitor
Figuur 1.18
De signalen van infraroodafstandsbedieningen herkennen. Uitvoer in de serial monitor. De code komt in hoofdstuk 5 (Zelf AR-hardware) bouwen aan bod.
hoofdstuk 1
28
Processing.js Processing.js is de Javascriptversie van de visuele programmeertaal Processing. John Resig, de man achter de jQuery-bibliotheek, ontwikkelde Processing.js waarmee je in een oogwenk Processing-code kunt converteren naar Javascriptcode. Hierdoor krijg je een krachtig instrument om data te visualiseren, interactieve animaties, grafieken, spelletjes enz. te programmeren en zonder de hulp van ‘plugins’ in een webpagina weer te geven. Processing.js werkt in elke HTML5-browser, dus ook in Internet Explorer 9! Omdat het een beroep doet op het HTML5-canvas-element, zullen Processing-animaties niet lopen in IE8 of lager. De gecompileerde Javascriptcode van het bovenstaande voorbeeld ziet er als volgt uit: (function(processing, $constants) { function setup() { processing.size(400, 400); processing.background(0); processing.stroke(255); processing.ellipse(200, 200, 300, 300); } processing.setup = setup; })
Je moet de vertaalslag niet zelf maken, ook dat doet Processing.js voor je. Zorg ervoor dat je het script processing.js aan je webpagina linkt met een script-tag. Sla de processing-code op in een apart tekstdocument met extensie js. <script type="text/javascript" src="processing.js">;
Maak nu een canvas-element aan in de body van de webpagina en voeg daaraan het attribuut "data-processing-sources" mee. Als waarde voer je de naam van het document met de processingcode in.
Processing.js ondersteunt niet alle mogelijkheden van zijn grote broertje Processing, maar toch wel heel wat. Voor mobiele AR-applicaties is Processing.js echter nog niet meteen geschikt. Dit ligt niet aan de library zelf, maar aan de beperkte mogelijkheden voor lokalisering (geolocation in Javascript en HTML5). Bovendien ondersteunt op dit moment zo goed als geen enkele browser (lees: hoofdstuk 3) het opvragen van webcambeelden en sensorinformatie. Android SDK en Eclipse Wanneer je Processing-programma’s of native-applicaties voor Android wil ontwikkelen dan moet je Eclipse en de Android-SDK (software development kit) installeren. Belangrijke links die je op weg helpen bij het installeren van de Android-SDK en Eclipse:
augmented reality
– – – –
29
http://www.eclipse.org http://www.talkandroid.com/android-sdk-install-guide/ http://developer.android.com/sdk/installing.html http://developer.android.com/sdk/eclipse-adt.html#installing
Eclipse van de Eclipse Foundation is een open source framework voor software-ontwikkeling. Het wordt actief ondersteund en ontwikkeld door IBM en de naam doet vermoeden dat het de concurrerende JAVA-IDE Netbeans van Sun Microsystems (nu Oracle) in de schaduw moet stellen. Eclipse bestaat uit een zeer kleine core en een uitbreidbare reeks plugins. Het pakket is zo open opgebouwd dat je het voor zo wat elk denkbare programmeertaal of scriptingtaal kunt inzetten. Plugins voor open source-talen zowel als voor closed sourceproducten zijn beschikbaar waardoor je Eclipse niet alleen voor Java-ontwikkeling kunt inzetten, maar ook voor C, C++, C#, Perl, PHP, Processing enz. Ook softwarefirma’s als Adobe enten hun producten steeds meer op Eclipse. Ook voor de Android SDK bestaat er een plugin (de ADT-plugin) voor Eclipse. Anders dan iOS voor Apple’s iPhone en iPad is Google Android een open source besturingssysteem voor mobiele telefoons. Het is gebaseerd op de Linux-kernel en Java. Android werd oorspronkelijk ontwikkeld door Android Inc, voor het in 2005 werd overgenomen door Google. Op dit moment is Android het vlaggenschip van de Open Handset Alliance (OHA). De OHA is een samenwerkingsverband van 83 firma’s die open standaarden voor mobiele toestellen willen ontwikkelen. Tot de belangrijkste leden behoren onder meer Google, HTC, Sony, Dell, Intel, Motorola, Qualcomm, Texas Instruments, Samsung, LG, T-Mobile, Nvidia en Wind River Systems. Omdat Processing gebaseerd is op Java, is het niet zo moeilijk om Processing-applicaties te schrijven voor Android. Hierdoor kunnen we de krachtige visuele en interactieve mogelijkheden van Processing ook inzetten bij mobiele AR-applicaties.
Figuur 1.19
Eclipse en de Android SDK en AVD Manager
hoofdstuk 1
30
Je hoeft niet over een Android-toestel te beschikken om je applicaties uit te testen. De SDK bevat ook een Android-emulator. In latere hoofstukken komt het gebruik van de emulator aan bod.
Figuur 1.20
De Android-emulator
OpenFrameworks Zach Lieberman, Theodore Watson en Arturo Castro en de groeiende OF-community ontwikkelen naar het voorbeeld van Processing en de ACU Toolkit de C++-library OpenFrameworks. De library moet het voor kunstenaars en ontwikkelaars met weinig C++-achtergrond toch mogelijk maken creatief te coderen (creative coding). De library bestaat uit een samenraapsel van verschillende andere C++-bibliotheken: openGL (voor graphics), rtAudio (invoer en uitvoer van audio), freeType (lettertypes), freeImage (invoer en uitvoer van afbeeldingen), quicktime (video en ‘sequence grabbing’). De code is crossplatform (Windows, Mac OS X, Linux, iOS, Android…) en cross compiler. Het aantal ingebouwde klassen en functies is beperkt gehouden om het gebruik ervan zo eenvoudig mogelijk te houden. Anders dan Processing (en dit maakt het instappen net iets moeilijker) heeft OpenFrameworks geen kant-en-klare IDE. Onder Windows kun je de bibliotheek aanspreken vanuit Code Blocks of Visual Studio. Programma’s voor Mac OS en iOS ontwikkel je vanuit X-Code. Linux-ontwikkelaars kunnen eveneens terugvallen op Code Blocks (http:// www.codeblocks.org/). Android-ontwikkeling met OpenFrameworks kan enkel onder Linux en OS X. Belangrijke links: – http://www.openframeworks.cc/setup – http://www.openframeworks.cc/documentation?detail=ofBaseApp#ofBaseAppsetup
augmented reality
31
Er bestaan heel wat gelijkenissen tussen Processing en OpenFrameworks. De grote kracht van OpenFrameworks ligt in de snelheid van uitvoer. Voor instappers is Processing een makkelijker keuze waarmee je sneller resultaat bereikt. Heel wat Processing-ontwikkelaars stappen na verloop van tijd over op OpenFrameworks. Omdat de OF-ontwikkelaars grondig naar Processing hebben gekeken, is de overstap niet zo groot. Een vergelijking: Processing
size(1024, 768, OPENGL)
openFrameworks
ofSetupOpenGL(&window, 1024, 768, OF_WINDOW)
Op http://vormplus.be/blog/article/introduction-to-openframeworks vind je een uitgebreidere vergelijking. Net zoals Processing kun je OpenFrameworks aanvullen met eigen functionaliteit. Omdat het gebouwd is op C++ kun je ook native libraries en systeemfuncties aanspreken. Mede hierdoor en door zijn creatieve karakter is OpenFrameworks uitermate geschikt voor AR-ontwikkeling. AR in 3D met ARToolkit ARToolKit is een softwarebibliotheek voor de ontwikkeling van AR-applicaties en meer bepaald voor het toevoegen van 3D-beelden aan echte beelden aan de hand van markers. Zoals eerder al besproken is de grootste moeilijkheid te tracken in welke richting de gebruiker kijkt om het virtuele 3D-beeld zo perfect mogelijk aan het beeld van de werkelijkheid (op een display) toe te voegen. Om deze moeilijkheid te overwinnen gebruikt ARTookit computer vision-algoritmes die de relatieve positie en oriëntatie van de camera ten opzichte van markeerpunten (referentiepunten) berekenen. ARToolkit werd ontwikkeld door Hirokazu Kato en de Human Interface Technology Laboratory (HIT Lab) van de universiteit van Washington, HIT Lab NZ van de University of Canterbury in Nieuw-Zeeland en ARToolworks Inc, Seattle (http://www.hitl.washington. edu/artoolkit/). Belangrijkste voordelen: – tracken van positie en oriëntatie van (meerdere) camera; – tracken van markers (bestaande uit patronen van zwarte vierkanten dus ook QR-codes); – cameracalibratie; – zeer snel; – multiplatform: SGI IRIX, Linux, Mac OS en Windows; – open source; – overlay-technieken voor weergave van virtuele 3D-beelden; – multiplatform video-library; – ondersteuning voor meerdere video-invoersignalen (USB, Firewire, capture card); – ondersteuning voor meerdere videoformaten (RGB/YUV420P, YUV); – snelle rendering dankzij OpenGL; – ondersteuning voor 3D VRML;
hoofdstuk 1
32
– – –
eenvoudige en modulaire API (C); ondersteuning voor andere programmeertalen zoals Java en Matlab; GPL-licentie voor niet-commercieel gebruik.
Figuur 1.21
ARToolkit-integratie in een iOS-applicatie (bron: http://arblog.inglobetechnologies.com/?p=397)
NyARToolkit NyARToolkit is afgeleid van ARToolkit en ondersteunt meerdere ‘virtual machine’-platformen zoals Java, Android, C#, Actionscript, C++. JAVA
http://nyatla.jp/nyartoolkit/wiki/index.php?NyARToolkit%20for%20Java.en
ondersteuning voor OpenGL en Java3D
Android http://nyatla.jp/nyartoolkit/wiki/index.php?NyARToolkit%20for%20Android.en ondersteuning voor camera en OpenGL ES Silverlight
http://slartoolkit.codeplex.com
SLARToolkit
C++
http://nyatla.jp/nyartoolkit/wiki/index.php?NyARToolkitCPP
in betastadium
Flash of HTML5? FLARToolkit is een implementatie van ARToolkit in Actionscript voor gebruik binnen Adobe Flash. Ook al is Flash in webpagina’s op zijn terugweg omdat Apple de Flashplayer weert uit
augmented reality
33
zijn iOS-systeem voor iPhone en iPad, toch is het op dit moment de enige manier om ARapplicaties te bouwen en weer te geven in webpagina’s. Voor de weergave van fake 3D zorgt een andere Actionscriptlibrary (o.a. Papervision3D). De nieuwe Adobe Flash Player heeft een ingebouwde 3D-API (zie hoofdsuk 6). FLARManager is een klein framework dat het bouwen van AR-applicaties met Flash moet vereenvoudigen. Het is compatibel met een reeks tracking-bibliotheken en 3D-frameworks. Ondersteunde tracking-bibliotheken: – FLARToolkit – flare*tracker – flare*NFT. Ondersteunde 3D-frameworks: – Alternativa3D – Away3D – Away3D Lite – Papervision3D – Sandy3D. Wil je je alleen aan de webstandaarden (HTML, CSS, Javascript) houden, dan kom je van een kouwe kermis thuis. Het grote nadeel is immers dat Javascript (de interactieve scriptingtaal voor webpagina’s) op dit moment nog geen data inlezen van ‘devices’ zoal een microfoon of webcam. In de HTML5-specificaties van het WhatWG voorzag men oorspronkelijk een <device>-tag voor het opvragen van bijvoorbeeld webcambeelden. De <device>-tag is ondertussen overboord gegooid en heeft plaats gemaakt voor een Javascript-API (navigator. getUserMedia) die op dit moment in vrijwel geen enkele browser is ingebouwd. Alleen de developmentversie van Opera voor Android biedt ondersteuning voor deze API. De lokalisatie-API van Javascript is wel in de meest recente browsers ingebouwd, maar levert zeer wisselvallige resultaten op, zeker op systemen waar geen GPS-chip is ingebouwd. Hoe je AR implementeert in FLARtoolkit en HTML, komt later aan bod. iOS en Xcode? iOS is het besturingssysteem van Apples iPod touch, iPhone en iPad. Apple laat ontwikkelaars alleen toe programma’s voor iOS te ontwikkelen in de programmeertaal Objective-C. Hiervoor bieden ze de Xcode-IDE aan intwikkelaars aan. Xcode is echter slechts beschikbaar voor Mac OS X. Toch bestaat er voor AR-ontwikkeling een reeks interessante libraries die je vanuit Xcode kunt aanspreken. iPhone ARKit is een reeks programmeerklassen voor AR en richt zich vooral op het toevoegen van een laag (meestal geografische) informatie over de camera view (een overlay). Raadpleeg de volgende links: – https://github.com/zac/iphonearkit/ – http://www.iphonear.org/
hoofdstuk 1
34
Op http://www.morethantechnical.com/2009/07/01/augmented-reality-on-the-iphoneusing-nyartoolkit-w-code/ vind je een beschrijving voor het gebruik van de NyARToolkit bij de ontwikkeling van iPhone-apps. SDK’s en libraries voor iPhone- en Android-apps QCAR SDK
https://ar.qualcomm.at/qdevnet/sdk/ios
Ontwikkeling voor iOS en Android
POPCODE
http://www.popcode.info/
Ontwikkeling voor iOS en Android
ARMSK
http://armsk.org
Augmented reality markerless support kit Herkent objecten zonder de klassieke markers met patronen van zwarte vierkanten Ontwikkeling voor Android
MagnitudeHQ http://code.google.com/p/magnitudehq/
AR-ontwikkeling onder Android
Andar
http://code.google.com/p/andar/
Markers met 3D-objecten (Android)
VRtoolkit
http://www.benjaminloulier.com/articles/ GPL-codevoorbeeld voor iPhone virtual-reality-on-iphone-code-inside
Phonegap Phonegap is een open source ontwikkeltool (http://www.nitobi.com) die een brug vormt tussen HTML en mobiele platforms als iOS, Android, Blackberry enz. Via Phonegap heeft de HTML-webontwikkelaar ook toegang tot de verschillende hardwarematige API’s van de diverse mobiele platformen via één enkele software-interface. De ontwikkelaar moet zich niet meer verdiepen in de verschillen tussen de diverse mobiele systemen. Via één en hetzelfde stuk code kun je applicaties ontwerpen die compatibel zijn met de meest gangbare mobiele platformen. Phonegap kan dus ook voor de AR-ontwikkelaar die lonkt naar een multiplatform AR-tool, een handig lanceerplatform zijn.
De toepassingen van mobiel internet groeien explosief. De ontwikkelaars van mobiele applicaties gaan steeds een stapje verder. Zo ook met Augmented Reality: de technologie waarbij de realiteit en de virtuele wereld met elkaar gecombineerd worden. Denk bijvoorbeeld aan de mogelijkheid om webcambeelden aan te vullen met informatie van internet. Of het ophalen van extra informatie over winkelwaren, boeken en cd’s via beeldherkenning, streepjescodes en QR-codes. Dit boek biedt nieuwe navigatie-ervaringen en zoektechnieken, en is daarnaast voer voor kunstenaars en creatievelingen. Het spreekt tot de verbeelding omdat het ook nieuwe vormen van interactie met computers mogelijk maakt: Kinect, Wiimote, sensoren enzovoort. Kris Merckx schreef deze praktische gids waarmee ontwikkelaars van mobiele applicaties kennismaken met de wereld van Augmented Reality en beeldherkenning. Maar ook kunstenaars, muzikanten, videoliefhebbers en reclamemakers kunnen inspiratie opdoen voor hun eigen projecten. De onderwerpen die in het boek worden besproken, zijn: s "EWEGINGSDETECTIE s 'EZICHTSHERKENNING
s 7ERKEN MET 12 CODES s "EELDHERKENNING
s !FSTANDSDETECTIE EN GESTURE DETECTION s !2 HARDWARE MET !RDUINO
Kris Merckx is actief als webontwikkelaar en auteur van tientallen boeken. Hij is docent informatica, geschiedenis, Nederlands en grafische vormgeving. Tevens werkte hij aan IT-projecten voor de Vlaamse overheid.
Y T I L A E R d e t Augmen Combineer de virtuele met de echte wereld
978 90 12 58284 1 980
Ë|xHSTALCy582841z