2017年1月10日 星期二

Adobe AIR + Kinect (1) - Beginning and UserMask with Effect



Before Start

Kinect1 vs Kinect2



如上圖,Kinect有2種類型,
這裡使用的是第一代Kinect,對應的SDK版本是1.8。
若使用的硬體是Kinect 2,那麼就下載 Kinect for Windows SDK 2.0。
規定要 Win8以上才能使用,不然就會出現以下畫面....






使用AIRKinect開發,網路上已經有很多前輩分享的資訊可以參考,在此感謝。

韩 Hanleon - AIRKinect Tutorial
Gray Liao - AIRKinect
林克融 - 使用FlashDevelop與AirKinect 2.X開發Kinect應用程式
鴨道比 - [教學] AIRKinect 2.0 安裝
Alex - AIRKinect


另外,使用原生開發的 Heresy 也有相當豐富的資料。


照著連結下載SDK、ANE、設定開發環境,
跟著airkinect-2-examples的範例做,很快就可以發現有哪些功能可以玩玩,
不過如果只是照個範例依樣畫葫蘆就沒那麼有趣了,
AirKinect 正是要發揮Flash強大的互動能力才有意思呀!

For example:UserMask、Gesture、Skeleton、AR、with Arduino......











UserMask

一開始想到的方式是直接採用Starling Particle Effect套用在UserMask上,

Particle System只有在建構式的時候才能指定Texture,
我嘗試想要把UserMask.Bitmap放在EnterFrame中,
讓UserMask更新時同時指定給PDParticleSystem 建構式的texture參數,

可惜失敗了 ,看訊息是超過Texture所能承載的限制。

Error: Error #3691: Resource limit for this resource type exceeded.

只有靜止沒更新的BitmapData搭配PDParticleSystem 沒問題,
雖是學藝不精,但也花了太多時間在測試上只能喊停停損。




好吧,那麼退而求其次採用flash native effect

在網路上找到兩個特效範例 (搭配影片服用)

Electric: (程式碼由網友分享,出處已不可考。)

由於UserMask的特性是會不停變更 Bitmap.bitmapdata,
因此調整了一下原本的程式碼,讓UserMask套用效果時(onEnterFrame),
必須將其變更的內容不斷重繪,這麼一來當User影像變更時,

不管採取甚麼姿勢,都可以看到影像周圍都有電流特效。


也可以看到FPS不甚理想(都已經是桌機了怎麼還....=_=),
原來是因為效果是建立於不斷地重繪濾鏡,這吃效能的小怪獸身上。





Fire:(source)

出處來自人稱GS大神製作的火焰特效,
搭配組件使用,調整參數,完全不用coding,效能維持不墜,

(組件MC的圖層要在target上方)
讓你第一次當驚奇四超人的霹靂火就上手! (咦)

FireEffect 同樣是基於
不斷變更的UserMask.bitmap而隨之變化,在畫面中可以發現,當User移動時效果會有略為延遲,
因而露出底下的UserMask,
這也是運用時要稍微留意之處。


影片請看我



沒有留言:

張貼留言