PROVARSI I VESTITI CON IL KINECT KINECT FOR WINDOWS Who I am • • • • • • • • • Microsoft MVP ASP.NET Founder of SmartCore Tech DotNetToscana Staff Member & Speaker Speaker for various events Trainer SharePoint addicted from 2007 Enthusiast ASP.NET Developer NopCommerce Contributor MCPD Web applications, MCTS BING Applications, MCTS Silverlight, MCTS HTML5 & CSS3 • • • • Italian blog: www.emanuelebartolesi.com English blog: www.geekswithblogs.net/emanueleb/ Twitter: @kasuken Email: [email protected] KINECT FOR WINDOWS TWITTER #bem14 KINECT FOR WINDOWS Agenda • • • • • • Natural User Inteface Skill innati e skill appresi Informazione tecniche sul Kinect Gesture e Posture Demo Q&A KINECT FOR WINDOWS Natural User Interface Si definisce NUI l’interfaccia di un sistema in cui gli utenti riescono ad interagire utilizzando un approccio «naturale» cioè riescono ad utilizzare le funzionalità del sistema senza l’uso di dispositivi artificiali (come mouse, trackball o tastiera) KINECT FOR WINDOWS NUI: vantaggi • Rapido apprendimento delle funzionalità • L’utente è in grado di diventare «esperto» sull’interfaccia in minor tempo senza particolare training • Può aiutare portatori di handicap nell’utilizzo del sistema KINECT FOR WINDOWS Skill innati e skill appresi • Affinchè le NUI siano efficaci è necessario che utilizzino gli Skill Innati • Uno Skill Innato è un «movimento» insito nella natura umana e nel suo quotidiano (il gesto di sfogliare è uno skill innato) • Uno Skill Appreso è un «movimento» non naturale e che necessita di un periodo di training (muovere un mouse è uno skill appreso) KINECT FOR WINDOWS Come è fatto? IR Emitter Color Sensor IR Depth Sensor Tilt Motor Microphone Array KINECT FOR WINDOWS Come funziona 1 4 La nostra applicazione utilizza le info dell’SDK Il proiettore ad infrarossi illumina il soggetto con dei pattern 3 2 La camera infrarossi misura la distanza con un approccio «a luce strutturata» KINECT FOR WINDOWS L’SDK è in grado di convertire lo stream della depth cam in dati utilizzabili Angolo di visuale Angolo di visuale: • Orizzontale: 57,5° • Verticale: 43,5° (da +27° a -27°) KINECT FOR WINDOWS Profondità Profondità (Near Mode): Limite fisico: 0,4m – 3,0m Limite pratico : 0,8m – 2,5m Profondità (Default Mode): Limite fisico: 0,8m – 4,0m Limite pratico : 1,2m – 3,5m KINECT FOR WINDOWS DEMO KINECT FOR WINDOWS RISOLUZIONE • Color • 12 FPS: 1280X960 RGB • 15 FPS: Raw YUV 640x480 • 30 FPS: 640x480 • Depth • 30 FPS: 80x60, 320x240, 640x480 KINECT FOR WINDOWS DEMO KINECT FOR WINDOWS DEPTH DATA • Restituisce la distanza e il player per ogni pixel • Ex: 320x240 = 76,800 pixels • Distanza • Distance in mm from Kinect ex: 2,000mm (6.56 feet) • Player • 1-6 players KINECT FOR WINDOWS Suono • Audio: • Angolo di ascolto: 100° (da -50° a +50° rispetto all’asse centrale) • Possibilità di restringere l’angolo di ascolto a step di 10° • Noise reduction: • -20dB per l’audio proveniente da davanti • -26db per l’audio proveniente da dietro KINECT FOR WINDOWS Architettura • L’SDK mette a disposizione una serie di strumenti e una libreria di classi in grado di interagire con i sensori del dispositivo fornendo allo sviluppatore oggetti ed eventi. KINECT FOR WINDOWS Stream • Il device restituisce 3 stream: • Video • Depth • Audio KINECT FOR WINDOWS Default e Near Mode Il Kinect può gestire oggetti a differenti distanze in base alla modalità selezionata: • Default Mode: oggetti tra 80 cm e 4 metri • Near Mode: oggetti tra 40 cm e 3 metri KINECT FOR WINDOWS DEMO KINECT FOR WINDOWS Skeleton Tracking Kinect fornisce un insiemi di «scheletri» dei player rilevati: • Al massimo due player contemporanei (più altri 4 con informazioni ridotte) • Ogni «scheletro» può essere Tracked o NotTracked • Ogni scheletro prevede un array di 20 Joint ognuno con la propria posizione (x,y,z) • Ogni Joint può essere Tracked, NotTracked o Inferred (NotTracked è raro) • La classe Skeleton fornisce anche informazioni sulle «ossa» del player KINECT FOR WINDOWS DEMO KINECT FOR WINDOWS Gesture Tre tipologie di gesture: • Static Gesture (posture) • Continuous Gesture • Dynamic Gesture KINECT FOR WINDOWS Posture Nelle Static Gesture, chiamate anche Posture, l'utente mantiene una posizione (anche solo di una parte del corpo) fino a quando questa non viene riconosciuta. E’ opportuno non scegliere posture che possono avere diversi significati in diverse culture (ad esempio il «pollice in alto») Va benissimo in Europa non in Iran!!!! KINECT FOR WINDOWS Continuos Gesture Le Continuos Gesture sono le gesture che permettono di tracciare gli utenti che si spostano davanti al Kinect. Sono le gesture più adatte per i giochi. KINECT FOR WINDOWS Dynamic Gesture Le Dynamic Gesture sono quelle gesture che forniscono un feedback all’utente a seguito di un movimento eseguito con una determinata parte del corpo. Sono le gesture più conosciute. KINECT FOR WINDOWS Alcune regole • Alcune regole relative alle gesture: • Dare sempre un feedback all’utente quando il sistema riconosce una gesture; • Prevedere gesture confortevoli; • Disegnare gesture che, almeno per i controlli di base, siano innate oppure di semplice comprensione; • Cercare di implementare gesture da eseguire in maniera rapida e precisa con movimenti quanto più possibili naturali KINECT FOR WINDOWS DEMO KINECT FOR WINDOWS Q&A KINECT FOR WINDOWS SOME EXAMPLES • • • • • Coca Cola - http://www.youtube.com/watch?v=3MnDAWlhegw Barbie - http://www.youtube.com/watch?v=kVDFzZ97XaY Boing 737 - http://www.youtube.com/watch?v=hwBo_LtjSUs AUDI - http://www.youtube.com/watch?v=3F9H0tdCnQw BIBLE - https://www.youtube.com/watch?v=5B9vNU9c9Ac KINECT FOR WINDOWS Riferimenti e download • Sorgenti: https://github.com/kasuken/BetterEmbedded2014FittingRoom.git • Slide: http://www.slideshare.net/emanuelebartolesi/provarsi-i-vestiti-con-il-kinect Twitter: @kasuken Email: [email protected] KINECT FOR WINDOWS GRAZIE KINECT FOR WINDOWS