kinect for flash新手上路

34
Kinect to Flash新手上路 林克融

Upload: -

Post on 15-May-2015

8.483 views

Category:

Technology


5 download

DESCRIPTION

第八回AS3讀書會-Kinect for flash新手上路投影片

TRANSCRIPT

Page 1: Kinect for flash新手上路

Kinect to Flash新手上路

林克融

Page 2: Kinect for flash新手上路

關於我

• 林克融(阿邪)

• 台藝大 古蹟藝術修護學系

• 一個不務正業熱血的開始

• 大一開始碰FLASH製作動畫

• 大四為了玩多媒體互動而開始研究AS3。

• 雲科大 設計運算所

E-mail : [email protected] Web : http://blog.roodo.com/sayaku 或google sayaku or 阿邪

Page 3: Kinect for flash新手上路

Kinect發音?啃奶?

• 「 Kinect 」為 kinetics (動力學)加上 connection(連接)兩字所自創的新詞彙,讀音為ki-nect(/kɪn‘ɛkt/),並非con-nect(/kən'ɛkt/)。

參考資料:http://zh.wikipedia.org/wiki/Kinect

Page 4: Kinect for flash新手上路

Kinect是什麼?

Page 5: Kinect for flash新手上路

Kinect構造

圖片出處: http://www.techbang.com.tw/posts/2936-get-to-know-how-it-works-kinect

Page 6: Kinect for flash新手上路

感應器

• 彩色和深度感應鏡頭

• 陣列式麥克風

• 輔助感應傾斜驅動馬達

Page 7: Kinect for flash新手上路

視野角度

• 水平視野:57度

• 垂直視野:43度

• 實體傾斜範圍:± 27度

• 深度感應器範圍:1.2m – 3.5m

Page 8: Kinect for flash新手上路

資料串流

• 深度感應器:320×240 16-bit 30 fps

• 彩色攝影機:640×480 32-bit 30 fps

Page 9: Kinect for flash新手上路

骨架追蹤系統

• 同時辨識6人,包含2人的動作追蹤

• 每人能追蹤20個點

Page 10: Kinect for flash新手上路

可以做什麼??

Page 11: Kinect for flash新手上路

怎麼連接到電腦?

Page 12: Kinect for flash新手上路

• OpenKinect的libfreenect

• OpenNI+SensorKinect

• Kinect SDK(官方正式版)

驅動程式

Page 13: Kinect for flash新手上路

使用OpenNI Framework

Page 14: Kinect for flash新手上路

什麼是OpenNI ?

Page 15: Kinect for flash新手上路

OpenNI

OpenNI=Open Natural Interaction開放式自然互動

資料來源: http://kheresy.wordpress.com/2011/01/19/openni_1st/

Page 16: Kinect for flash新手上路

• OpenNI 基本上是一個跨平台的「自然互動」(Natural Interaction) 開放原始碼架構,提供了一組標準的 API 來針對不同的裝置、中介軟體來做操作。

資料來源: http://viml.nchc.org.tw/blog/paper_info.php?CLASS_ID=1&SUB_ID=6&PAPER_ID=212

Page 17: Kinect for flash新手上路

圖片來源: http://kheresy.wordpress.com/2011/01/19/openni_1st/

Page 18: Kinect for flash新手上路

怎麼連接到FLASH ?

Page 19: Kinect for flash新手上路

Socket server + AS3 library

• as3Kinect

• Jazztures

• flKinect(Mac OS only)

Page 20: Kinect for flash新手上路

前置作業

Page 21: Kinect for flash新手上路

下載可以執行以 Visual C++ 開發的應用程式

• Microsoft visual c++ 2010 redistributable package

• http://www.microsoft.com/downloads/zh-tw/details.aspx?FamilyID=A7B7A05E-6DE6-4D3A-A423-37BF0912DB84

Page 22: Kinect for flash新手上路

• OpenNI :OpenNI Framework

http://openni.org/

• SensorKinect : 支援OpenNI的Kinect驅動程式他是基於 PrimeSense 官方的版本、專門針對 Kinect 修改出來的;算是 OpenNI 的一部分,要先安裝 OpenNI 後才可安裝。

https://github.com/avin2/SensorKinect

Page 23: Kinect for flash新手上路

NITE

• 由 PrimeSense 提供的 OpenNI 的中介軟體,負責分析 Kinect 抓到的資料,轉換為人體骨架、手勢等資料。

• http://www.primesense.com/?p=515

• 授權碼:( 0KOIk2JeIBYClPWVnMoRKn5cdY4= )

參考資料: http://viml.nchc.org.tw/blog/paper_info.php?CLASS_ID=1&SUB_ID=6&PAPER_ID=212

Page 24: Kinect for flash新手上路

下載as3Kinect

• as3Kinect OpenNI wrapper

http://www.as3kinect.org/download/

Page 25: Kinect for flash新手上路

as3Kinect

• OpenKinect wrapper

• OpenNI wrapper

• Codelaboratories (NUI) wrapper (不再開發)

Page 26: Kinect for flash新手上路

OpenNI wrapper

• Single socket

• Depth Camera. (With user detection).

• Skeleton detection

Page 27: Kinect for flash新手上路

as3Kinect OpenNI wrapper

Page 28: Kinect for flash新手上路

Demonstration 1

Get Depth

Page 29: Kinect for flash新手上路

public class GetDepth extends Sprite { private var as3w:as3kinectWrapper; private var _canvas:BitmapData; private var _bmp:Bitmap; public function GetDepth():void { init(); //將要建構的物件初始化 initListener(); //初始化偵聽事件 } private function init():void { as3w = new as3kinectWrapper(); //建構as3kinectWrapper物件 _canvas = new BitmapData(as3kinect.IMG_WIDTH, as3kinect.IMG_HEIGHT, false, 0xFF000000); //先建構一張空白的點陣圖資料好用來儲存深度影像 _bmp = new Bitmap(_canvas); addChild(_bmp); //將圖片加到場景上 }

Page 30: Kinect for flash新手上路

private function initListener():void { as3w.addEventListener(as3kinectWrapperEvent.ON_DEPTH, got_depth); //偵聽取得深度影像事件,只要每取得一次深度影像就會執行 got_depth函式 this.addEventListener(Event.ENTER_FRAME, onRender); //偵聽ENTER_FRAME不斷去執行 } private function got_depth(e:as3kinectWrapperEvent):void { as3w.byteArrayToBitmapData(e.data, _canvas); /* 功用是將從伺服器傳回來Kinect的深度影像的二進位資訊 * 轉成點陣圖資訊再存到_canvas */ } //不斷更新 private function onRender(e:Event):void { as3w.getDepthBuffer(); //執行從伺服器抓深度資訊回來 }

Page 31: Kinect for flash新手上路

Demonstration 2

Get Skeleton

Page 32: Kinect for flash新手上路
Page 33: Kinect for flash新手上路

• 從伺服器抓回的骨架資訊

• as3w.getSkeleton();

• 偵聽抓回骨架資訊的事件

• as3w.addEventListener(as3kinectWrapperEvent.ON_SKEL, Function);

Page 34: Kinect for flash新手上路

Thank you !!