Passa ai contenuti principali

Post

Visualizzazione dei post da Marzo, 2012

Kinect: Gestiamo l’elevation angle del dispositivo

I cambiamenti apportati nell’SDK del Kinect rilasciata a febbraio scorso riguardano anche la gestione della modalità con cui si controlla l’angolo di elevazione del dispositivo.Anche in questo caso, il punto di ingresso della gestione del dispositivo è l’istanza della KinectSensor che si ottiene come già abbiamo più volte visto nei precedenti articoli:IfKinectSensor.KinectSensors.Any() Then    Sensor = KinectSensor.KinectSensors(0)If Sensor.Status = KinectStatus.Connected ThenTry            Sensor.Start()Catch ex AsExceptionEndTryEndIfEndIf Possiamo osservare che, per quanto riguarda la mera gestione dell’alzo, non è necessario abilitare alcuno stream, ma generalmente daremo all’utente un’anteprima di ciò che è inquadrato per permettergli di capire se l’alzo impostato è quello corretto.IfKinectSensor.KinectSensors.Any() Then    Sensor = KinectSensor.KinectSensors(0)If Sensor.Status = KinectStatus.Connected ThenAddHandler Sensor.ColorFrameReady, AddressOf ColorFrameReadyHandler        S…

Kinect: gli scheletri e l’uomo vitruviano

Continuando la carrellata di ciò che è cambiato nel nuovo SDK del Kinect rispetto alla beta2, eccoci all’uomo vitruviano (vedi post).E’ oramai noto che uno degli aspetti più interessanti del Kinect è il fatto che il suo SDK è in grado di fornirci la posizione di alcuni punti ben determinati dei player inquadrati e riconosciuti dal sensore.L’insieme di questi punti (20 per la precisione) per ogni player è detto Skeleton e i punti sono mostrati in figura:L’SDK è in grado di ritornare una collection di oggetti di tipo Joint, ognuno dei quali rappresenta i dati spaziali del singolo punto.Cominciamo dal vedere come accedere al sensore Kinect e attivare il riconoscimento dello scheletro (Skeletal Tracking).Come già visto nei precedenti due post della serie, il meccanismo per accedere al Kinect è quello di passare dalla collezione KinectSensors della classe KinectSensor, registrare l’opportuno gestore di evento e abilitare lo stream che ci interessa:IfKinectSensor.KinectSensors.Any() Then   …

Articolo su ioProgrammo di Aprile

Vi segnalo l’uscita del mio articolo “Traduzioni semplici con le API di Microsoft” in cui si parla di Microsoft Translator.L’argomento verrà trattato anche nella sessione del DotNetCampus nella sezione “Gaming & Fun”.Tag di Technorati: ,,,

Kinect: Questione di profondità

In questo post continuiamo ad analizzare i cambiamenti apportati all’SDK v.1.0 di Kinect pubblicato il 1 Febbraio 2012.
In particolare ci occuperemo della capacità che ha il Kinect di fornire frame in cui l’immagine non è la rappresentazione fedele della realtà che ci circonda ma la rappresentazione bidimensionale della distanza degli oggetti dai sensori di profondità.
Il Kinect, infatti, dispone di un sensore di profondità che è in grado di fornirci la distanza dei punti inquadrati da se stesso e, in più, è in grado di dirci a quale “player” fa riferimento ogni singolo pixel.
Come già visto nel precedente post (link), per recuperare l’istanza della classe che ci permette di accedere al dispositivo Kinect, abilitare lo stream dei dati di profondità e avviare il tutto possiamo procedere in questo modo:
Verificare se sono presenti dispositivi Kinect collegati tramite la proprietà statica KinectSensors della classe KinectSensor; Recuperare, ad esempio, il primo dei dispositivi; Abilitare …

Async : come trasformare un metodo non async in async

Windows 8, WinRT e le applicazioni Metro UI hanno portato una ventata di aria nuova nella progettazione delle interfacce, soprattutto per il fatto che tutte le operazioni la cui durata supera i 50 ms debbono essere asincrone (in realtà sarebbe stata buona norma anche prima, ma la legge è legge).Il paradigma Async prevede due nuove parole chiave del linguaggio, Async e Await, il cui utilizzo congiunto permette di ottenere applicazioni completamente asincrone mantenendo un codice pulito e chiaro.Vedremo in altri post (e, in ogni caso, internet è piena di fonti in da cui capire l’esatto funzionamento del meccanismo Async) come è implementato l’Async nel framework 4.5, ma in questo post ci chiediamo: “e se abbiamo già delle nostre classi con della logica (metodi) che potenzialmente possono durare più di 50ms?”………”Dobbiamo riscrivere tutto?”Cerchiamo di vedere come si possono facilmente far diventare Async metodi che, in realtà, non lo sono.Supponiamo di avere la nostra classe LegacyClass …

Kinect a Codemotion

Vi segnalo che venerdì 23 Marzo alle ore 16:40 terrò una sessione a CodeMotion dal titolo “Kinect + .NET = NUI : Interfacce naturali facili con Kinect!!!”.L’evento è di prim’ordine (nonostante la mia presenza) e non potete perderlo!!!!Tag di Technorati: ,,

Kinect: cosa cambia nella nuova SDK

Con questo post vorrei iniziare una serie dedicata alle novità e ai cambiamenti presenti nell’SDK rilasciato il 1 febbraio 2012.Cominciamo con riportare il link del portale Kinect in cui trovare il pacchetto di installazione dell’SDK e le risorse necessarie per cominciare a lavorare con lo stesso.In questi post prenderò spunto dagli esempi che avevo a suo tempo riportato in un’analoga serie di post (ai tempi della beta2) e proverò di farli funzionare nuovamente con il nuovo SDK analizzando ciò che è cambiato.Installato l’SDK, abbiamo a disposizione un browser che ci permette di accedere facilmente alla documentazione e agli esempi.Prima cosa che balza all’occhio quando tentiamo di utilizzare l’assembly contenente le classi di gestione del Kinect è che l’assembly da referenziare non è più Microsoft.Research.Kinect.dll ma Microsoft.Kinect.dll.In maniera analoga, il namespace principale delle classi dell’SDK non è più Microsoft.Research.Kinect ma Microsoft.Kinect.La classe principale uti…