Upload
tokuyama-sadao
View
1.806
Download
3
Embed Size (px)
DESCRIPTION
マイクロソフト社のKinectセンサーをAIRアプリから利用できるライブラリ「AIRKinect」についてお話しします。 ライブラリの概要と実装方法をお話しします。 また、デモアプリの実演や 「AIRKinect」で開発されたアプリなども紹介します。
Citation preview
AIRKinect について
FxUG 勉強会 第166回 in 仙台
2012年 04月21日 (水) 徳山禎男
アジェンダ
自己紹介
Kinectとは
Kinectの開発環境について
AIRKinectとは
AIRKinect2.1による開発
AIRKinect事例(動画)
AIRKinectをはじめる人は…
自己紹介
自己紹介
よく使用しているテクノロジー
Java (Servlet, JSP, Struts)
Flex 3, AIR 1.5
FxUG東京勉強会運営メンバー
Kinectとは
Kinectとは
マイクロソフト社の家庭用ゲーム機。 XBOX360用のモーションセンサー コントローラ。
Kinectとは
マイクロソフト社の家庭用ゲーム機。 XBOX360用のモーションセンサー コントローラ。
体の動きやジェスチャー、 音声を認識して遊ぶことが可能。
Kinectとは
KinectはUSBで接続します。
Kinectとは
USB接続が可能なことから、 PCやMacに接続して…
Kinectとは
USB接続が可能なことから、 PCやMacに接続して
Kinect用ライブラリを使ったアプリケーションが開発されました。
Kinectとは
この現象を「Kinectハック」と呼ばれるようになります。
Kinectとは
この現象を「Kinectハック」と呼ばれるようになります。
Kinectハックをきっかけに、 マイクロソフトから、 Windows用ドライバが リリースされます。
Kinect 開発環境について
Kinect SDK Beta2
対応OS:Windows7 ~(詳細な要件はこちら)
Kinect for XBOX ¥14,800-
Kinect 開発環境について
Kinect SDK Beta2
対応OS:Windows7 ~(詳細な要件はこちら)
商用利用不可 非商用可(2016年6月16日まで)
Kinect for XBOX ¥14,800-
Kinect 開発環境について
OpenNI(OpenNI, Nite, SensorDriver)
対応OS:Windows7 ~
SimpleOpenNIプロジェクトで 全て揃うようです。
Kinect for XBOX ¥14,800-
Kinect 開発環境について
商用利用版もあります。
Kinect 開発環境について
Windows に対応した Kinect for Window が必要です。
Kinect 開発環境について
Windows に対応した Kinect for Window が必要です。
価格は¥24,800- マイクロソフトオンラインショップで 販売しています。
Kinect 開発環境について
Windows に対応した Kinect for Window が必要です。
Kinect SDK Version 1
対応OS:Windows7 ~
Kinect 開発環境について
Windows に対応した Kinect for Window が必要です。
Kinect for Windows と Kinect SDK
バージョン1によるアプリは商用可。
Kinect 開発環境について
Windows に対応した Kinect for Window が必要です。
Kinect for XBOX と Kinect SDK
バージョン1によるアプリは、
商用/非商用どちらとも不可。
Kinect 開発環境について
Windows に対応した Kinect for Window が必要です。
Kinect for XBOX と Kinect SDK
バージョン1によるアプリは、
商用/非商用共に不可。
Kinect 開発環境について
Mac( Lion, Snow, Leopard )の場合
Kinect 開発環境について
Mac( Lion, Snow, Leopard )の場合
Kinect for XBOX ¥14,800-
Kinect 開発環境について
Mac( Lion, Snow, Leopard )の場合
OpenNI, Nite,
SensorKinect が必要。
Kinect for XBOX ¥14,800-
Kinect 開発環境について
Windows に対応した Kinect for Window は…
Kinect 開発環境について
Windows に対応した Kinect for Window は…
Macでは認識しませんでした…。
Kinect 開発環境について
Windows に対応した Kinect for Window は…
Kinect for XBOX でないと、
動作しないようです。
Kinect 開発環境について
AIRアプリからKinectセンサーに
アクセスするには…?
AIRKinectとは
AIRKinectとは
AIRアプリケーションから
Kinectセンサーを利用する為の
ライブラリ。
AIRKinectとは
AIR 3 の新機能、
ネイティブ拡張 for AIR で開発。
AIRKinectとは
AIR 3 の新機能、
ネイティブ拡張 for AIR で開発。
ライブラリだけでなく、
Windows なら Kinect SDK、
OpenNIが必要。
Mac は、OpenNIのみ。
AIRKinectとは
AIR 3 の新機能、
ネイティブ拡張 for AIR で開発。
ネイティブの実装は意識せず、
ActionScriptだけで、
Kinectアプリが、作れます。
AIRKinectとは
AIRKinectのバージョンについて
AIRKinectとは
AIRKinectのバージョンについて
AIRKinect version 1.x
AIRKibect version 2.x
AIRKinectとは
AIRKinectのバージョンについて
AIRKinect version 1.x
AIRKibect version 2.x
バージョンが2つ存在します。
AIRKinectとは
AIRKinect version 1.x
AIRKinectとは
AIRKinect version 1.x
最新版:version 1.7.1
はじめにリリースしたバージョン
機能:
RGBカメラ, 深度カメラ,
骨格追跡
AIRKinectとは
AIRKinect version 1.x
最新版:version 1.7.1
機能拡張用ライブラリも別途提供。
AIRKinectとは
AIRKinect version 1.x
最新版:version 1.7.1
機能拡張:
ヒストリー、骨格追跡の保存と再生、
ジェスチャー, 領域判定…etc
AIRKinectとは
AIRKinect version 2
最新版:version 2.1
AIRKinectとは
AIRKinect version 2
最新版:version 2.1
実装方法が簡単になりました。
機能:
RGBカメラ, 深度カメラ,
骨格追跡, PointCloud
AIRKinectとは
AIRKinect version 2
最新版:version 2.1
実装方法が簡単になりました。
機能:
OpenNI for Windowsの対応、
ニアモードの対応(MSオンリー)
AIRKinectとは
AIRKinectには、
オーディオ機能が
搭載されていません。
AIRKinectとは
今回は、
AIRKinect2.1を使用した
AIRアプリ開発に
ついて解説します。
AIRKinect2.1による開発
今回使用する開発環境:
AIRKinect2.1による開発
今回使用する開発環境:
Windows 7 搭載 PC
Kinect SDK version 1.0
Flash Builder 4.6
AIR 3.1
AIRKinect2.1による開発
今回使用する開発環境:
Windows 7 搭載 PC
Kinect SDK version 1.0
Flash Builder 4.6
AIR 3.1 AIRKinectがSWFバージョン14な為、
作成するアプリはAIR3.1以上が必須条件。
AIRKinect2.1による開発
準備
airkinect-2-coreページに
アクセス。
AIRKinect2.1による開発
準備
airkinect-2-coreページに
アクセス。
Download の zip をクリック。
AIRKinect2.1による開発
準備
ZIPフォルダを解凍後、binフォルダにあるairkinect-2-xx.aneを取り出します。
Kinect SDKの方
OpenNIの方
AIRKinect2.1による開発
準備
ANEファイルがネイティブ拡張 for AIR のライブラリファイルです。 Kinect SDKの方
OpenNIの方
AIRKinect2.1による開発
準備
AIRプロジェクトの作成を
行った後、
airkinect-2-xx.aneを
ネイティブ拡張ライブラリと
して登録します。
AIRKinect2.1による開発
準備 リソース→ActionScriptビルドパス→ネイティブエクステンションで「ANEを追加」
準備 リソース→ActionScriptビルドのパッケージ→ネイティブエクステンションでパッケージの箇所のチェックボックスに
チェックを入れます。
AIRKinect2.1による開発
開発
AIRKinect2.1による開発
開発
AIRKinect2.1のコアクラス
AIRKinect2.1による開発
開発
AIRKinect2.1のコアクラス
RGBカメラの実装
AIRKinect2.1による開発
開発
AIRKinect2.1のコアクラス
RGBカメラの実装
深度カメラの実装
AIRKinect2.1による開発
開発
AIRKinect2.1のコアクラス
RGBカメラの実装
深度カメラの実装
骨格追跡の実装
AIRKinect2.1による開発
開発
AIRKinect2.1のコアクラス
RGBカメラの実装
深度カメラの実装
骨格追跡の実装
マスクモードの実装
AIRKinect2.1による開発
開発
AIRKinect2.1のコアクラス
RGBカメラの実装
深度カメラの実装
骨格追跡の実装
マスクモードの実装
ポイントクラウドの実装
AIRKinect2.1による開発
開発
AIRKinect2.1のコアクラス
AIRKinect2.1による開発
開発
AIRKinect2.1のコアクラス
com.as3nuinativeExtensions.air.kinect
Kinectクラス
KinectSettingクラス
AIRKinect2.1による開発
開発
Kinectクラス
AIRKinect2.1による開発
開発
Kinectクラス
Kinectセンサーの設定、実行開始、
実行終了、カメラやセンサーから
取得した情報を管理するクラス。
AIRKinect2.1による開発
開発
Kinectクラス
実装例
var kinect:Kinect = Kinect.getDevice();
… … … … … …
kinect.addEventListener(…
kinect.start(kinectSetting);
AIRKinect2.1による開発
開発
KinectSettingクラス
AIRKinect2.1による開発
開発
KinectSettingクラス
Kinectセンサーの各種モードを
設定する為のクラス。
AIRKinect2.1による開発
開発
KinectSettingクラス
実装例(RGBカメラ - 320x240)
var setting:KinectSetting =
new KinectSetting();
setting.rgbEnabled = true;
setting.rgbResolution = CameraResolution_320_240;
AIRKinect2.1による開発
開発
実装の流れ
AIRKinect2.1による開発
開発
実装の流れ
if (Kinect.isSupported()) {
…
}
AIRKinect2.1による開発
開発
実装の流れ
// Kinectセンサーの接続有無
if (Kinect.isSupported()) {
…
}
AIRKinect2.1による開発
開発
実装の流れ
// Kinectセンサーの接続有無
if (Kinect.isSupported()) {
// Kinectの処理を記述…
}
AIRKinect2.1による開発
開発
実装の流れ
// Kinectの処理を記述
AIRKinect2.1による開発
開発
実装の流れ
// Kinectの処理を記述 var kinect:Kinect = Kinect.getDevice();
AIRKinect2.1による開発
開発
実装の流れ
// Kinectの処理を記述 var kinect:Kinect = Kinect.getDevice();
kinect.addEventListener(
DeviceEvent.STARTED, onStart);
kinect.addEventListener(
DeviceEvent.STOPPED, onStop);
AIRKinect2.1による開発
開発
実装の流れ var kinectSetting:KinectSetting =
new KinectSetting();
// kinectSettingで設定処理を行う。
AIRKinect2.1による開発
開発
実装の流れ var kinectSetting:KinectSetting =
new KinectSetting();
// kinectSettingで設定処理を行う。
// 必要なイベントを登録後、
// kinect開始。
kinect.start(kinectSetting);
AIRKinect2.1による開発
開発
RGBカメラとは?
AIRKinect2.1による開発
Kinectの映像カメラから BitmapDataに変換したデータを 取得する機能。 解像度: 160x120, 320x240, 640x480
開発
RGBカメラの実装
AIRKinect2.1による開発
開発
RGBカメラの実装
Kinectクラスの取得。
KinectSettingにRGBカメラモードを
設定。解像度も設定する。
AIRKinect2.1による開発
開発
RGBカメラの実装
KinectクラスにRGBカメラ更新
イベントを登録。
AIRKinect2.1による開発
開発
RGBカメラの実装
KinectクラスにRGBカメラ更新
イベントを登録。
CameraImageEvent.RGB_IMAGE_UPDATE
AIRKinect2.1による開発
開発
RGBカメラの実装
Kinectをスタート。
AIRKinect2.1による開発
開発
RGBカメラの実装
Kinectをスタート。
RGBカメラのデモを行います
AIRKinect2.1による開発
開発
深度カメラとは?
AIRKinect2.1による開発
Kinectの近赤外線カメラから BitmapDataに変換したデータを 取得する機能。 奥行情報をモノクロ階調で 表現。ユーザー認識や ニアモードにも対応。
開発
深度カメラの実装
AIRKinect2.1による開発
開発
深度カメラの実装
Kinectクラスの取得。
KinectSettingに深度カメラモードを
設定。解像度も設定する。
AIRKinect2.1による開発
開発
深度カメラの実装
Kinectクラスに深度カメラ更新
イベントを登録。
AIRKinect2.1による開発
開発
深度カメラの実装
Kinectクラスに深度カメラ更新
イベントを登録。
CameraImageEvent.DEPTH_IMAGE_UPDATE
AIRKinect2.1による開発
開発
深度カメラの実装
Kinectをスタート。
AIRKinect2.1による開発
開発
深度カメラの実装
Kinectをスタート。
深度カメラのデモを行います
AIRKinect2.1による開発
開発
骨格追跡とは?
AIRKinect2.1による開発
Kinectセンサーが認識した 身体の関節部位を推定し、 骨格情報を構築する機能。 AIRKinectが提供する 独自クラスで取得する。
開発
骨格追跡の実装
AIRKinect2.1による開発
開発
骨格追跡の実装
Kinectクラスの取得。
KinectSettingに骨格追跡モード
を設定する。
AIRKinect2.1による開発
開発
骨格追跡の実装
Kinectクラスの取得。
ENTER_FRAMEでイベント登録後、
Kinectをスタート。
AIRKinect2.1による開発
開発
骨格追跡の実装
ENTER_FRAME毎に骨格追跡の情報を持つ
ユーザー情報を取得。(Vectorで
人数分を一括取得。)
AIRKinect2.1による開発
開発
骨格追跡の実装
ENTER_FRAME毎に骨格追跡の情報を持つ
ユーザー情報を取得。(Vectorで
人数分を一括取得。)
Kinect.getDevice().userWithSkeletion
AIRKinect2.1による開発
開発
骨格追跡の実装
ユーザー情報 = Userクラス
AIRKinect2.1による開発
開発
骨格追跡の実装
com.as3nui.nativeExtensions
.air.kinect.data.User
AIRKinect2.1による開発
開発
骨格追跡の実装
com.as3nui.nativeExtensions
.air.kinect.data.User
骨格追跡や位置情報などを
保持するクラス。
AIRKinect2.1による開発
開発
骨格追跡の実装
com.as3nui.nativeExtensions
.air.kinect.data.SkeletonJoint
AIRKinect2.1による開発
開発
骨格追跡の実装
com.as3nui.nativeExtensions
.air.kinect.data.SkeletonJoint
骨格部位の名前、位置情報を
保持するクラス。
AIRKinect2.1による開発
開発
骨格追跡の実装
Userクラスから骨格情報を繰り返し取得。
for each(var user:User in Kinect.getDevice().usersWithSkeleton) {
// ユーザー情報にある骨格情報を繰り返し取得
for each(var joint:SkeletonJoint in user.skeletonJoints) {
// 描画処理を行う。
}
}
AIRKinect2.1による開発
開発
骨格追跡の実装
Userクラスから骨格の各部位を
取得することも可能。
頭:user.head, 左足:user.leftFoot…
AIRKinect2.1による開発
開発
骨格追跡の実装
骨格追跡のデモを行います
AIRKinect2.1による開発
開発
マスクモードとは?
AIRKinect2.1による開発
RGBカメラで取得した画像に、 ユーザー認識した画像だけを、 切り抜く機能。 ニアモードにも対応。
開発
マスクモードの実装
AIRKinect2.1による開発
開発
マスクモードの実装
Kinectクラスの取得。
KinectSettingにユーザーマスク
モードを設定。解像度も設定する。
AIRKinect2.1による開発
開発
マスクモードの実装
KinectクラスにUserのマスク
イメージ更新イベントを登録。
AIRKinect2.1による開発
開発
マスクモードの実装
KinectクラスにUserのマスク
イメージ更新イベントを登録。
UserEvent.USER_MASK_IMAGE_UPDATE
AIRKinect2.1による開発
開発
マスクモードの実装
Kinectをスタート。
AIRKinect2.1による開発
開発
マスクモードの実装
Kinectをスタート。
マスクモードのデモを行います
AIRKinect2.1による開発
開発
ポイントクラウドとは?
AIRKinect2.1による開発
ポイントクラウドとは点群 とも呼ばれ、3次元座標の 集合です。 Kinectから得たRGBカメラ と深度カメラ情報から 解析して、ByteArrayで 返却されます。
開発
ポイントクラウドの実装
AIRKinect2.1による開発
開発
ポイントクラウドの実装
Kinectクラスの取得。
KinectSettingにポイントクラウド
使用可とする。解像度も設定する。
AIRKinect2.1による開発
開発
ポイントクラウドの実装
KinectクラスにPointCloudの
更新イベントを登録。
AIRKinect2.1による開発
開発
ポイントクラウドの実装
KinectクラスにPointCloudの
更新イベントを登録。
PointCloudEvent.POINT_CLOUD_UPDATE
AIRKinect2.1による開発
開発
ポイントクラウドの実装
Kinectをスタート。
AIRKinect2.1による開発
開発
ポイントクラウドの実装
Kinectをスタート。
ポイントクラウドのデモを
行います
AIRKinect2.1による開発
開発
ポイントクラウドの実装
Kinectをスタート。
ポイントクラウドのデモを
行います
AIRKinect2.1による開発
AIRKinect作品
ペイントするアプリ
Kinect + Flash + Natzke
Ribbons
AIRKinect事例(動画)
AIRKinect作品
ゲームアプリ
羽を動かして遊ぶゲームアプリ
料理するゲームアプリ
ボクシングゲームアプリ
ヒーローアプリ
AIRKinect事例(動画)
AIRKinect作品
as3NUIチームのデモ
サンタなりきり
モンスターなりきり
AIRKinect事例(動画)
参考ページ
as3NUI
http://www.as3nui.com/
airkinect-2-core
http://as3nui.github.com/airkinect-2-core/
AIRKinectをはじめる人は…
参考ページ
airkinect-2-examples(source) github
https://github.com/AS3NUI/airkinect-2-
examples
ANE-LAB (Google Code)デモアプリはここにあります。
http://goo.gl/hi8OM
AIRKinectをはじめる人は…
ご清聴ありがとうございました。