2012年9月26日 星期三

AIRKinect Demo(3)還是UserMask之Human Torch與Starling Particle

繼昨天成功將火焰特效套到UserMask上之後,今天開始考慮使用Stage3D來做特效,以便提高效能。第一個想到的就是之前玩過的Starling,以及它的外掛Starling Particle System。目前兩個都已更新到1.2版了。Starling Particle System可以玩出哪些效果可以參考之前介紹過的Particle EditorParticle Designer

要將UserMask與Starling Particle System結合,只要想辦法將UserMask轉成Texture,然後不斷更新給Particle System,就可以解決了。由於Particle System只能在一開始建構式的時候指定texture,因此這部分我們要自己加上更新texture的方法。經過小小的努力與測試之後,我成功啦:


測試結果,效能確實好很多。另外,Particle System有很多參數都可以即時控制,例如改變火焰大小、顏色、速度、方向等等,所以想結合音樂來變化也不是難事。而我們又有Particle Editor這樣的界面可以迅速調出超多種視覺特效,這真的是太強大了!

2012年9月25日 星期二

AIRKinect Demo(2)也是UserMask之Human Torch

使用UserMask抓出User影像後,還有很多很多的效果可以做。網路上也很容易可以搜尋到用AS3寫的影像處理特效,拿來跟UserMask結合,就可以很輕易玩出很炫的互動裝置。如果再配合音樂,用音樂頻率變化再進一步與影像結合,那就更High啦!不過,也是要搭配好的電腦才行。

2012年9月21日 星期五

AIRKinect Demo(1)UserMask

Kinect除了體感遊戲,還有其他的玩法。其中一個就是UserMask。所謂UserMask,就是Kinect會將偵測到的User去背出來,然後將這個去背影像獨立傳回來。前幾天去東京玩,在台場的SEGA JOYPOLIS入口,看到一個互動裝置,會將路過的人一段時間內的影像存下來,然後重疊播出,就變成一個有趣的影像:

2012年9月20日 星期四

Some extensions for AIRKinect(4)KinectGestureRecognizer

最後來看一下如何辨識Gesture。Gesture本身的定義有點廣,幾乎非語言的肢體表達都可以算是。參考Human Interface Guidelines,它把Gesture分成三大類:
1. Static Gestures:也就是Potures,一個靜態的姿勢,例如user擺出T字型。
2. Continuous Gestures:只要user在Kinect前就一直追蹤。
3. Dynamic Gesture:基本上是一個動作,可能包含了方向、經過時間等等因素,例如Swipe手勢。
可以想像,有無數種Gesture的可能,也就是說我們沒辦法開發出一個或有限個辨識器來滿足每個應用程式的需求。因此在我們的extensions裡面,先做出一個GestureRecognizer辨識器的雛形,以及一個Manger來管理所有的GestureRecognizer,然後試著開發出一個Static與一個Dynamic Gesture Recognizer,往後只要依循同一個開發模式,慢慢加入新的辨識器,這個extensions就會越來越強大,而每個應用程式在使用不同的辨識器的時候做法都一樣,很輕易可以達到程式碼重複使用的目的。Continuous Gestures因為只是一直的追蹤,暫時先不納入我們的考量。

2012年9月19日 星期三

Some extensions for AIRKinect(3)KinectCursor與KinectButton

接著我們來解決一個問題:在電腦上,我們用滑鼠點選按鈕;在行動裝置觸控螢幕上,我們用手指點選按鈕;在Kinect上,我們也會面臨提供一個或多個按鈕,讓使用者來選取。根據Human Interface Guidelines,我們可以設計一個游標跟著user的左手或右手移動,而當游標碰到按鈕時,如果直接觸發選取的效果,很容易發生user誤觸的狀況。解決的方式有兩種:一種是當user手往前推,才會試著去判斷是否選取某個按鈕;第二個方法是,當游標移動到按鈕上,進入hover狀態,按鈕出現一些hover的視覺效果(例如變色),而游標進入一個倒數的狀態,在倒數完成前,uer可以把游標移開,此時倒數就會停止,按鈕與游標都回到normal狀態。若游標倒數時間到了,則進入selected狀態,程式就去處理按鈕被選取後該做的事。我們選擇第二種方法來實作,一個游標與按鈕的示意圖如下:

Some extensions for AIRKinect(2)KinctSprite

在開始開發我們的extensions之前,還有一份文件應該先下載來研究:Human Interface Guidelines。這是在設計Kinect應用程式時可以參考的一些基本守則。接著就讓我們開始吧。

2012年9月18日 星期二

Some extensions for AIRKinect(1)AIRKinect簡介

雖然我應該在第0篇把基本的東西介紹完,在第1篇進入重點,但我發現不稍微介紹一下AIRKinect的一些類別,後面會有點難懂。以下就稍微介紹幾個重要的類別,詳細內容就請參考線上文件

Some extensions for AIRKinect(0)準備事項

AIRKinect是一套讓我們可以使用Adobe AIR來開發Kinect的native extention。可以搭配OpenNI或Microsoft Kinect SDK來使用,可以在Windows 7或Mac OSX上跑。目前最新版本是2.2版,基本功能大致上都有了,效能也相當不錯。但若想開發體感的應用程式,似乎還需要一點小工具。雖然AIRKinect更新還算頻繁,不過也說不準甚麼時候會提供我們需要的功能,例如常用UI跟Gesture。既然如此,就自己動手來刻一些小工具吧。