Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
FMCN Kinect ハンズオン
長峰慶三 (Keizo Nagamine)
Jollystics Inc.
今日の流れ
はじめに (13:00~13:10)
Kinect について (13:10~13:25)
Unity について (13:25~13:40)
Kinect x Unity ハンズオン (13:45~15:00)
自由制作時間 (15:...
はじめに
自己紹介
➢ 長峰慶三 (Keizo Nagamine)
➢ Jollystics Inc.
➢ アプリ開発など(Unity / Xamarin)
➢ 勉強会とかハッカソンとか好き(FMCN / Unity Fukuoka)
➢ Twitter...
FMCNとは
FMCN:Fukuoka MotionControl Network
KinectやOculusRiftなど、センサー&デバイスに関する
オープンなエンジニアリングコミュニティです。
デジタルなものづくり・ことづくりに関心のある
...
今日の資料など
➢ ハンズオンのUnityプロジェクトリポジトリ
○ https://github.com/KzoNag/UnityKinect/tree/master
➢ ハンズオン解説用のGistコード
○ https://gist.git...
アンケート
➢ 開発環境はどうですか?(PC, SDK)
➢ Kinectさわったことありますか?
➢ Unityさわったことありますか?
おことわり
➢ 今回はKinect & Unity に触れてみる、導入部分を目的とします
➢ なるべく分かりやすく説明したい
➢ 厳密でなかったり、深く言及しない部分もあります
➢ ハンズオン形式は慣れてないのでゴメンナサイ。。。
➢ 楽しくや...
Kinect v2について
RGBカメラ
深度センサ
(IRカメラ + IRプロジェクタ)
マイクアレイ
システム要件
OS Windows8 ~
CPU Core i7 3.1GHz以上の64ビットCPU
メモリ 4G以上
USB USB3.0
グラフィック DirectX11 対応グラフィックカード
開発環境 Visual Studio 201...
動作仕様 (1/2)
カラー解像度 1920 x 1080
カラーフレームレート 30fps / 15fps(暗所)
深度データ解像度 512 x 424
深度データフレームレート 30fps
深度センサー方式 ToF (Time of Fli...
動作仕様 (2/2)
人の検出人数 6人
人の検出可能距離 500mm ~ 4500mm
骨格数 25カ所 / 人
ジェスチャー検出 ◯
手のポーズ検出 ◯
マイク 4 (マイクアレイ)
音声入力 ◯
接続 (Kinect for Xbox One + PCアダプター)
Kinect for Xbox One
PCアダプター
電源
USB
ソフトウェア構成
Kinect
Kinect Driver
Kinect Service
Kinect SDK
Application
Kinect SDK
Application
Kinect SDK
Application
取得データ①カラー
取得データ②深度データ
取得データ③赤外線画像
取得データ④BodyIndex(人の検出)
取得データ⑤Body(人の骨格)
役に立つツール①Kinect Configuration Verifier
SDK Browserから
“Kinect Configuration Verifier” をRun
コンピューターがシステム要件を
満たすかを確認できる
役に立つツール②Kinect Studio
Kinectのデータを保存・再生するツール
保存したデータがあれば Kinectがなくても動作確認できる
Kinect Studioでデータを保存
① RECORDタブを選択
② Kinectが接続された状態で Connectボタン
③ 設定ボタンからプレビューするデータを選択
④ 保存するデータを選択
⑤ 録画ボタン
⑥ 録画終了するときはもうい...
Kinect Studioでデータを再生
① PLAYタブを選択
② 接続状態にする
 (Kinectは実際に接続しなくも OK)
③ 再生ボタン
※別のデータを再生したい場合は FILEから選択
①
②
③
Unityについて
Unityとは
Unity Technologies社製のゲームエンジン
2D/3Dのゲームを作るための統合開発環境
GUIベースのUnityエディタ
C#/JSでのスクリプティング
多くのプラットフォーム対応(iOS/Android/Win/...
Unityエディタ
Projectビュー
使用するアセット(素材)の一覧
モデル、テクスチャ、オーディオ、スクリプトetc…
追加は “Create”ボタンから
画像や音声などは外部からD&Dできる
移動、削除はProjectビューで行う
Hierarchyビュー
現在のシーンに含まれるゲームオブジェクト
階層構造になっている
“Create”からゲームオブジェクト作成
一部アセット(プレハブなど)はProjectからD&D
Sceneビュー
現在のシーンが表現された3D空間
ゲームオブジェクトの配置等を行う
Gameビュー
実際にゲームプレイ時に表示される画面
カメラと表示対象のゲームオブジェクトの位
置関係、UIオブジェクトの設定などから表
示内容が決まる
Inspectorビュー
ゲームオブジェクトやアセットの設定を行う
Hierarchy/Projectビューで選択するとその設定内
容が表示される
ゲームオブジェクトとコンポーネント①
シーンを構成する要素
シーンビュー、ヒエラルキーで確認
階層化できる
モデルやUIのように見えるオブジェクト
管理用や階層化のための見えないオブジェクト
ゲームオブジェクトとコンポーネント②
ゲームオブジェクトの機能を表す
ひとつのゲームオブジェクトに複数
インスペクターに表示され、設定できる
あらかじめ用意されたもの
自分で作成するもの(C#/JS)
publicで定義したメンバは編集可能に(...
スクリプティング
C#/JSで記述できる(今回はC#)
MonoBehaviourを継承するとコンポーネントになる
publicで定義したメンバはInspectorで設定可能
特定のタイミングで実行される特別なメソッドがある
- Start :...
ネイティブプラグイン
C++等で記述されたプログラム利用するための仕組み
今回のKinectもこれのおかげで使える
Kinect用プラグインはMicrosoftが公式で配布している
フォルダごとプロジェクトビューにD&Dするだけ
C#からアクセ...
Kinect x Unity
ハンズオン
つくるもの
ゲームの世界に入ってみよう!
ゲームの3D空間にカメラから取得した自分の姿を重ねて表示する
デモ
使うデータ
Color
BodyIndex
Depth
Body Index Color
BodyIndexのピクセルに対応するColorのピクセルを参照する(マップする)
このときにDepthデータが引数として必要
人物領域以外は透明(アルファ値 =0)にす
る
Body Index + Color 3D空間
ゲームの世界にこんにちは!
ステップ
① 3D空間を用意しよう
② BodyIndexを表示しよう
③ Colorデータを参照しよう
ステップ① 3D空間を用意しよう
Unityのプロジェクトを作成する
Unityを立ち上げて”NEW”をクリック
Unityのプロジェクトを作成する
Unityを立ち上げて”NEW”をクリック①3Dを選択
②Create project
ビューのレイアウトを調整
①ここを”2 by 3”にすると同じビューの
レイアウトになる(自由にしてください)
②Projectビューの設定を”One Column
Layout”にすると同じ見た目に
(好きなほうでいいです)
3Dの地面を追加
HierarchyのCreateから
“3D Object” > “Plane”を選択
Planeをいいかんじに配置する
①HierarchyでPlaneを選択する
②トランスフォームツールを使って
Sceneビューで移動・拡縮・回転する
シーンビューでの配置方法
移動 回転 拡縮
右クリック → ドラッグ / WASDキーで視点を移動・回転
Gameビューでいいかんじの見た目になればOK!!
シーンを保存しておこう
Ctrl + S でシーンを保存
シーンの状態を変更したらこまめに
保存しましょう!
ステップ② BodyIndexを表示しよう
画像を表示するゲームオブジェクトを配置する
①HierarchyのCreateから
“UI” > “Raw Image”を選択
②Hierarchyに
-Canvas
-RawImage
ができるのでRawImageの配置を調整
Kinectのデータからテクスチャを作り
Raw Imageに設定することで表示されます
Kinectを制御するコンポーネントを作成する
①ProjectのCreateから
“C# Script”を選択して作成
ファイル名は”KinectController”
作成したコンポーネントをRaw Imageにアタッチ
① HierarchyのRaw Imageを選択
①
② ② コンポーネントをInspectorにD&D
 (Add Componentボタンあたりに)
Inspectorに作成したコンポーネントの
情報が表示されれば OK
Unity用のKinect SDKをインポートする①
Unity用KinectプラグインをProjectにD&D
プラグインの入手先
https://dev.windows.com/en-us/kinect/tools
( "Tools and...
Unity用のKinect SDKをインポートする②
すべてチェックされた状態で “Import”
コンポーネントを実装しよう!
作成したコンポーネントをダブルクリックでテキストエディタを開く
全体像は以下のGistで
https://gist.github.com/KzoNag/70770b8bfca8a54bd00d
名前空間の宣言
RawImage
Kinect関連
フィールドの定義
初期化(Start)
初期化(Start)
1. センサー取得
2. リーダー取得
3. BodyIndexを受け取るバッファを用意
4. RawImageに表示するテクスチャを用意
5. テクスチャをRawImageにセット
6. センサーを開く
BodyIndexデータ
byte型
ピクセルごとに1つのbyte値
人物領域には0~254の値(ID)
人物以外の領域には255
左上ピクセルから開始される1次元配列
1 255 255 255 2 2 2 2 ...
BodyIndexデータ
Texture2D
画像を表すクラス
サイズとフォーマットを指定してインスタンス化する
画像表示オブジェクトにセットすると表示される
byte配列のバッファを読み込んで更新できる
R G B A R G B A R G B A R G ... ...
Texture2D
終了処理(OnDestroy)
更新処理(Update)
1. BodyIndexの最新データを取得
2. ピクセルごとにテクスチャデータを更新
3. テクスチャにデータをロード・反映
BodyIndexの最新データを取得
ピクセルごとにテクスチャデータを更新
各ピクセルごとにBodyIndexの値を調べる
BodyIndexの値に応じてテクスチャデータを更新
255でなければ人物領域なので色付け
255なら人物領域でないので透明に
255 0 0 255 0 0...
テクスチャにデータをロード・反映
スクリプトのエラーを確認
Window > Console を選択
エラーがある場合はここに赤字で表示される
UnityエディタでRawImageを関連づけ
RawImageを選択
KinectControllerのRawImageフィールドに
D&Dして関連付け
Kinectをつないで実行してみよう!!!
どうですか?
Texture2Dは左下が原点なので上下反転
Raw Imageの設定を調整して上下反転させる
Raw Image の UV Rect を
Y = 1
H = -1
に設定する
こうなるはずです!
ステップ③ Colorデータを参照しよう
ステップ③ Colorデータを参照しよう
全体像は以下のGistで
https://gist.github.com/KzoNag/3602488de99ff1586e9a
フィールドの定義に追加
初期化(Start)変更・追加
Colorデータ
byte型
ピクセルごとに4つのbyte値
RGBAの値
左上ピクセルから開始される1次元配列
124 213 84 255 145 4 19 255 ...
Depthデータ
ushort型
ピクセルごとに1つのushort値
カメラからの距離(500mm~8000mm)
データが取れない点は 0
左上ピクセルから開始される1次元配列
1200 500 0 7000 5181 2120 ...
更新処理(Update)追加・変更
1. Color, Depthの最新データを取得
2. Colorデータを参照するための対応情報を取得
3. ピクセルごとの処理を変更(人物領域はColorデータを参照して色付け)
Color, Depthの最新データを取得
Colorデータを参照するための対応情報を取得
ColorSpacePoint
カラー画像の点を表す(X,Y)の値
BodyIndexの任意の点が、カラー画像上のどの点に対応するかを取得できる
bodyIndexData[100]の点
カラー画像のX=1100, Y=200の点
ピクセルごとの処理を変更 (1/3)
対応するカラー画像の座標を取得
配列アクセスするためにインデックスを計算
ピクセルごとの処理を変更 (2/3)
対応するカラー座標が適切な範囲内であればデータを参照して色付け
ピクセルごとの処理を変更 (3/3)
適切な範囲内でなければ固定の色をつける
Kinectをつないで実行してみよう!!!
ゲームの世界にこんにちは!
まとめ
➢ KinectのデータはReaderからFrameを取得し、バッファにコピーすることで得られる
➢ KinectのデータをもとにTexture2Dを作ればUnity上で表示できる
➢ データ間の対応関係はCoordinateMappe...
ここからは自由に遊んでみてください
➢ BodyIndexだけでも「かまいたちの夜」ごっことかできそう
➢ 3Dのキャラクターと共演するとか
➢ Bodyデータを使えば当たり判定もつけられる?
FMCN Kinectハンズオン
Upcoming SlideShare
Loading in …5
×

FMCN Kinectハンズオン

1,505 views

Published on

FMCN Kinectハンズオンの発表資料です

Published in: Engineering
  • Be the first to comment

FMCN Kinectハンズオン

  1. 1. FMCN Kinect ハンズオン 長峰慶三 (Keizo Nagamine) Jollystics Inc.
  2. 2. 今日の流れ はじめに (13:00~13:10) Kinect について (13:10~13:25) Unity について (13:25~13:40) Kinect x Unity ハンズオン (13:45~15:00) 自由制作時間 (15:00~17:00)
  3. 3. はじめに
  4. 4. 自己紹介 ➢ 長峰慶三 (Keizo Nagamine) ➢ Jollystics Inc. ➢ アプリ開発など(Unity / Xamarin) ➢ 勉強会とかハッカソンとか好き(FMCN / Unity Fukuoka) ➢ Twitter : @KzoNag
  5. 5. FMCNとは FMCN:Fukuoka MotionControl Network KinectやOculusRiftなど、センサー&デバイスに関する オープンなエンジニアリングコミュニティです。 デジタルなものづくり・ことづくりに関心のある 開発者やデザイナーと共に創る、「共創の場」を生み出します。
  6. 6. 今日の資料など ➢ ハンズオンのUnityプロジェクトリポジトリ ○ https://github.com/KzoNag/UnityKinect/tree/master ➢ ハンズオン解説用のGistコード ○ https://gist.github.com/KzoNag/70770b8bfca8a54bd00d ○ https://gist.github.com/KzoNag/3602488de99ff1586e9a ➢ 発表資料 ○ http://www.slideshare.net/KeizoNagamine/fmcn-kinect
  7. 7. アンケート ➢ 開発環境はどうですか?(PC, SDK) ➢ Kinectさわったことありますか? ➢ Unityさわったことありますか?
  8. 8. おことわり ➢ 今回はKinect & Unity に触れてみる、導入部分を目的とします ➢ なるべく分かりやすく説明したい ➢ 厳密でなかったり、深く言及しない部分もあります ➢ ハンズオン形式は慣れてないのでゴメンナサイ。。。 ➢ 楽しくやりたいので質問などドンドンしてください!
  9. 9. Kinect v2について
  10. 10. RGBカメラ 深度センサ (IRカメラ + IRプロジェクタ) マイクアレイ
  11. 11. システム要件 OS Windows8 ~ CPU Core i7 3.1GHz以上の64ビットCPU メモリ 4G以上 USB USB3.0 グラフィック DirectX11 対応グラフィックカード 開発環境 Visual Studio 2012~ Unity5
  12. 12. 動作仕様 (1/2) カラー解像度 1920 x 1080 カラーフレームレート 30fps / 15fps(暗所) 深度データ解像度 512 x 424 深度データフレームレート 30fps 深度センサー方式 ToF (Time of Flight) 深度測定範囲 500mm ~ 8000mm 水平視野角 70度 垂直視野角 60度
  13. 13. 動作仕様 (2/2) 人の検出人数 6人 人の検出可能距離 500mm ~ 4500mm 骨格数 25カ所 / 人 ジェスチャー検出 ◯ 手のポーズ検出 ◯ マイク 4 (マイクアレイ) 音声入力 ◯
  14. 14. 接続 (Kinect for Xbox One + PCアダプター) Kinect for Xbox One PCアダプター 電源 USB
  15. 15. ソフトウェア構成 Kinect Kinect Driver Kinect Service Kinect SDK Application Kinect SDK Application Kinect SDK Application
  16. 16. 取得データ①カラー
  17. 17. 取得データ②深度データ
  18. 18. 取得データ③赤外線画像
  19. 19. 取得データ④BodyIndex(人の検出)
  20. 20. 取得データ⑤Body(人の骨格)
  21. 21. 役に立つツール①Kinect Configuration Verifier SDK Browserから “Kinect Configuration Verifier” をRun コンピューターがシステム要件を 満たすかを確認できる
  22. 22. 役に立つツール②Kinect Studio Kinectのデータを保存・再生するツール 保存したデータがあれば Kinectがなくても動作確認できる
  23. 23. Kinect Studioでデータを保存 ① RECORDタブを選択 ② Kinectが接続された状態で Connectボタン ③ 設定ボタンからプレビューするデータを選択 ④ 保存するデータを選択 ⑤ 録画ボタン ⑥ 録画終了するときはもういちど録画ボタン ① ⑤,⑥ ③ ④ ②
  24. 24. Kinect Studioでデータを再生 ① PLAYタブを選択 ② 接続状態にする  (Kinectは実際に接続しなくも OK) ③ 再生ボタン ※別のデータを再生したい場合は FILEから選択 ① ② ③
  25. 25. Unityについて
  26. 26. Unityとは Unity Technologies社製のゲームエンジン 2D/3Dのゲームを作るための統合開発環境 GUIベースのUnityエディタ C#/JSでのスクリプティング 多くのプラットフォーム対応(iOS/Android/Win/Mac/HTML5/...) ネイティブ機能へのアクセス AssetStoreの活用
  27. 27. Unityエディタ
  28. 28. Projectビュー 使用するアセット(素材)の一覧 モデル、テクスチャ、オーディオ、スクリプトetc… 追加は “Create”ボタンから 画像や音声などは外部からD&Dできる 移動、削除はProjectビューで行う
  29. 29. Hierarchyビュー 現在のシーンに含まれるゲームオブジェクト 階層構造になっている “Create”からゲームオブジェクト作成 一部アセット(プレハブなど)はProjectからD&D
  30. 30. Sceneビュー 現在のシーンが表現された3D空間 ゲームオブジェクトの配置等を行う
  31. 31. Gameビュー 実際にゲームプレイ時に表示される画面 カメラと表示対象のゲームオブジェクトの位 置関係、UIオブジェクトの設定などから表 示内容が決まる
  32. 32. Inspectorビュー ゲームオブジェクトやアセットの設定を行う Hierarchy/Projectビューで選択するとその設定内 容が表示される
  33. 33. ゲームオブジェクトとコンポーネント① シーンを構成する要素 シーンビュー、ヒエラルキーで確認 階層化できる モデルやUIのように見えるオブジェクト 管理用や階層化のための見えないオブジェクト
  34. 34. ゲームオブジェクトとコンポーネント② ゲームオブジェクトの機能を表す ひとつのゲームオブジェクトに複数 インスペクターに表示され、設定できる あらかじめ用意されたもの 自分で作成するもの(C#/JS) publicで定義したメンバは編集可能に(後述)
  35. 35. スクリプティング C#/JSで記述できる(今回はC#) MonoBehaviourを継承するとコンポーネントになる publicで定義したメンバはInspectorで設定可能 特定のタイミングで実行される特別なメソッドがある - Start : 最初のUpdateの前に1度だけ実行される - Update : 毎フレーム実行される - OnDestroy : ゲームオブジェクトが破棄されるときに実行される - … 他にもたくさん
  36. 36. ネイティブプラグイン C++等で記述されたプログラム利用するための仕組み 今回のKinectもこれのおかげで使える Kinect用プラグインはMicrosoftが公式で配布している フォルダごとプロジェクトビューにD&Dするだけ C#からアクセスできるようになる
  37. 37. Kinect x Unity ハンズオン
  38. 38. つくるもの ゲームの世界に入ってみよう! ゲームの3D空間にカメラから取得した自分の姿を重ねて表示する
  39. 39. デモ
  40. 40. 使うデータ Color BodyIndex Depth
  41. 41. Body Index Color BodyIndexのピクセルに対応するColorのピクセルを参照する(マップする) このときにDepthデータが引数として必要 人物領域以外は透明(アルファ値 =0)にす る
  42. 42. Body Index + Color 3D空間
  43. 43. ゲームの世界にこんにちは!
  44. 44. ステップ ① 3D空間を用意しよう ② BodyIndexを表示しよう ③ Colorデータを参照しよう
  45. 45. ステップ① 3D空間を用意しよう
  46. 46. Unityのプロジェクトを作成する Unityを立ち上げて”NEW”をクリック
  47. 47. Unityのプロジェクトを作成する Unityを立ち上げて”NEW”をクリック①3Dを選択 ②Create project
  48. 48. ビューのレイアウトを調整 ①ここを”2 by 3”にすると同じビューの レイアウトになる(自由にしてください) ②Projectビューの設定を”One Column Layout”にすると同じ見た目に (好きなほうでいいです)
  49. 49. 3Dの地面を追加 HierarchyのCreateから “3D Object” > “Plane”を選択
  50. 50. Planeをいいかんじに配置する ①HierarchyでPlaneを選択する ②トランスフォームツールを使って Sceneビューで移動・拡縮・回転する
  51. 51. シーンビューでの配置方法 移動 回転 拡縮 右クリック → ドラッグ / WASDキーで視点を移動・回転
  52. 52. Gameビューでいいかんじの見た目になればOK!!
  53. 53. シーンを保存しておこう Ctrl + S でシーンを保存 シーンの状態を変更したらこまめに 保存しましょう!
  54. 54. ステップ② BodyIndexを表示しよう
  55. 55. 画像を表示するゲームオブジェクトを配置する ①HierarchyのCreateから “UI” > “Raw Image”を選択 ②Hierarchyに -Canvas -RawImage ができるのでRawImageの配置を調整
  56. 56. Kinectのデータからテクスチャを作り Raw Imageに設定することで表示されます
  57. 57. Kinectを制御するコンポーネントを作成する ①ProjectのCreateから “C# Script”を選択して作成 ファイル名は”KinectController”
  58. 58. 作成したコンポーネントをRaw Imageにアタッチ ① HierarchyのRaw Imageを選択 ① ② ② コンポーネントをInspectorにD&D  (Add Componentボタンあたりに)
  59. 59. Inspectorに作成したコンポーネントの 情報が表示されれば OK
  60. 60. Unity用のKinect SDKをインポートする① Unity用KinectプラグインをProjectにD&D プラグインの入手先 https://dev.windows.com/en-us/kinect/tools ( "Tools and extensions" の "Unity Pro packages")
  61. 61. Unity用のKinect SDKをインポートする② すべてチェックされた状態で “Import”
  62. 62. コンポーネントを実装しよう! 作成したコンポーネントをダブルクリックでテキストエディタを開く 全体像は以下のGistで https://gist.github.com/KzoNag/70770b8bfca8a54bd00d
  63. 63. 名前空間の宣言 RawImage Kinect関連
  64. 64. フィールドの定義
  65. 65. 初期化(Start)
  66. 66. 初期化(Start) 1. センサー取得 2. リーダー取得 3. BodyIndexを受け取るバッファを用意 4. RawImageに表示するテクスチャを用意 5. テクスチャをRawImageにセット 6. センサーを開く
  67. 67. BodyIndexデータ byte型 ピクセルごとに1つのbyte値 人物領域には0~254の値(ID) 人物以外の領域には255 左上ピクセルから開始される1次元配列 1 255 255 255 2 2 2 2 ...
  68. 68. BodyIndexデータ
  69. 69. Texture2D 画像を表すクラス サイズとフォーマットを指定してインスタンス化する 画像表示オブジェクトにセットすると表示される byte配列のバッファを読み込んで更新できる R G B A R G B A R G B A R G ... ... バッファの構造
  70. 70. Texture2D
  71. 71. 終了処理(OnDestroy)
  72. 72. 更新処理(Update) 1. BodyIndexの最新データを取得 2. ピクセルごとにテクスチャデータを更新 3. テクスチャにデータをロード・反映
  73. 73. BodyIndexの最新データを取得
  74. 74. ピクセルごとにテクスチャデータを更新 各ピクセルごとにBodyIndexの値を調べる BodyIndexの値に応じてテクスチャデータを更新 255でなければ人物領域なので色付け 255なら人物領域でないので透明に 255 0 0 255 0 0 0 0 ... 1 255 255 255 2 2 2 2 ...BodyIndex テクスチャ データ
  75. 75. テクスチャにデータをロード・反映
  76. 76. スクリプトのエラーを確認 Window > Console を選択 エラーがある場合はここに赤字で表示される
  77. 77. UnityエディタでRawImageを関連づけ RawImageを選択 KinectControllerのRawImageフィールドに D&Dして関連付け
  78. 78. Kinectをつないで実行してみよう!!!
  79. 79. どうですか? Texture2Dは左下が原点なので上下反転
  80. 80. Raw Imageの設定を調整して上下反転させる Raw Image の UV Rect を Y = 1 H = -1 に設定する
  81. 81. こうなるはずです!
  82. 82. ステップ③ Colorデータを参照しよう
  83. 83. ステップ③ Colorデータを参照しよう 全体像は以下のGistで https://gist.github.com/KzoNag/3602488de99ff1586e9a
  84. 84. フィールドの定義に追加
  85. 85. 初期化(Start)変更・追加
  86. 86. Colorデータ byte型 ピクセルごとに4つのbyte値 RGBAの値 左上ピクセルから開始される1次元配列 124 213 84 255 145 4 19 255 ...
  87. 87. Depthデータ ushort型 ピクセルごとに1つのushort値 カメラからの距離(500mm~8000mm) データが取れない点は 0 左上ピクセルから開始される1次元配列 1200 500 0 7000 5181 2120 ...
  88. 88. 更新処理(Update)追加・変更 1. Color, Depthの最新データを取得 2. Colorデータを参照するための対応情報を取得 3. ピクセルごとの処理を変更(人物領域はColorデータを参照して色付け)
  89. 89. Color, Depthの最新データを取得
  90. 90. Colorデータを参照するための対応情報を取得
  91. 91. ColorSpacePoint カラー画像の点を表す(X,Y)の値 BodyIndexの任意の点が、カラー画像上のどの点に対応するかを取得できる bodyIndexData[100]の点 カラー画像のX=1100, Y=200の点
  92. 92. ピクセルごとの処理を変更 (1/3) 対応するカラー画像の座標を取得 配列アクセスするためにインデックスを計算
  93. 93. ピクセルごとの処理を変更 (2/3) 対応するカラー座標が適切な範囲内であればデータを参照して色付け
  94. 94. ピクセルごとの処理を変更 (3/3) 適切な範囲内でなければ固定の色をつける
  95. 95. Kinectをつないで実行してみよう!!!
  96. 96. ゲームの世界にこんにちは!
  97. 97. まとめ ➢ KinectのデータはReaderからFrameを取得し、バッファにコピーすることで得られる ➢ KinectのデータをもとにTexture2Dを作ればUnity上で表示できる ➢ データ間の対応関係はCoordinateMapperから取得できる
  98. 98. ここからは自由に遊んでみてください ➢ BodyIndexだけでも「かまいたちの夜」ごっことかできそう ➢ 3Dのキャラクターと共演するとか ➢ Bodyデータを使えば当たり判定もつけられる?

×