SlideShare ist ein Scribd-Unternehmen logo
1 von 99
Downloaden Sie, um offline zu lesen
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:00~17:00)
はじめに
自己紹介
➢ 長峰慶三 (Keizo Nagamine)
➢ Jollystics Inc.
➢ アプリ開発など(Unity / Xamarin)
➢ 勉強会とかハッカソンとか好き(FMCN / Unity Fukuoka)
➢ Twitter : @KzoNag
FMCNとは
FMCN:Fukuoka MotionControl Network
KinectやOculusRiftなど、センサー&デバイスに関する
オープンなエンジニアリングコミュニティです。
デジタルなものづくり・ことづくりに関心のある
開発者やデザイナーと共に創る、「共創の場」を生み出します。
今日の資料など
➢ ハンズオンの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
アンケート
➢ 開発環境はどうですか?(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 2012~
Unity5
動作仕様 (1/2)
カラー解像度 1920 x 1080
カラーフレームレート 30fps / 15fps(暗所)
深度データ解像度 512 x 424
深度データフレームレート 30fps
深度センサー方式 ToF (Time of Flight)
深度測定範囲 500mm ~ 8000mm
水平視野角 70度
垂直視野角 60度
動作仕様 (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/Mac/HTML5/...)
ネイティブ機能へのアクセス
AssetStoreの活用
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 : 最初のUpdateの前に1度だけ実行される
- Update : 毎フレーム実行される
- OnDestroy : ゲームオブジェクトが破棄されるときに実行される
- … 他にもたくさん
ネイティブプラグイン
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 extensions" の "Unity Pro packages")
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 0 0 ...
1 255 255 255 2 2 2 2 ...BodyIndex
テクスチャ
データ
テクスチャにデータをロード・反映
スクリプトのエラーを確認
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上で表示できる
➢ データ間の対応関係はCoordinateMapperから取得できる
ここからは自由に遊んでみてください
➢ BodyIndexだけでも「かまいたちの夜」ごっことかできそう
➢ 3Dのキャラクターと共演するとか
➢ Bodyデータを使えば当たり判定もつけられる?

Weitere ähnliche Inhalte

Was ist angesagt?

Kinect深度情報処理入門
Kinect深度情報処理入門Kinect深度情報処理入門
Kinect深度情報処理入門
伸男 伊藤
 
Kinect for windows sdk cpp
Kinect for windows sdk cppKinect for windows sdk cpp
Kinect for windows sdk cpp
Kaoru NAKAMURA
 
わんくまT84 kinect深度情報処理入門
わんくまT84 kinect深度情報処理入門わんくまT84 kinect深度情報処理入門
わんくまT84 kinect深度情報処理入門
伸男 伊藤
 

Was ist angesagt? (20)

Kinect for Windows v2
Kinect for Windows v2Kinect for Windows v2
Kinect for Windows v2
 
Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space
Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz SpaceUnity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space
Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space
 
続・Kinect v2を通してMicrosoft技術を考える
続・Kinect v2を通してMicrosoft技術を考える続・Kinect v2を通してMicrosoft技術を考える
続・Kinect v2を通してMicrosoft技術を考える
 
Kinect深度情報処理入門
Kinect深度情報処理入門Kinect深度情報処理入門
Kinect深度情報処理入門
 
OpenNI 3Dセンサープログラミング
OpenNI 3DセンサープログラミングOpenNI 3Dセンサープログラミング
OpenNI 3Dセンサープログラミング
 
TMCN Vol 8
TMCN Vol 8TMCN Vol 8
TMCN Vol 8
 
Kinect for windows sdk introduction
Kinect for windows sdk introductionKinect for windows sdk introduction
Kinect for windows sdk introduction
 
KinectやRealSenseの概要とさまざまな使い方
KinectやRealSenseの概要とさまざまな使い方KinectやRealSenseの概要とさまざまな使い方
KinectやRealSenseの概要とさまざまな使い方
 
ジェスチャ認識・物体形状取得がもたらす新たな未来
ジェスチャ認識・物体形状取得がもたらす新たな未来ジェスチャ認識・物体形状取得がもたらす新たな未来
ジェスチャ認識・物体形状取得がもたらす新たな未来
 
Kinect Camp with TMCN / Kinect v2 概要
Kinect Camp with TMCN /  Kinect v2 概要Kinect Camp with TMCN /  Kinect v2 概要
Kinect Camp with TMCN / Kinect v2 概要
 
Scratchとkinectで簡単モーションプログラミング
Scratchとkinectで簡単モーションプログラミングScratchとkinectで簡単モーションプログラミング
Scratchとkinectで簡単モーションプログラミング
 
ViEW2013 「SS-01 画像センサと応用事例の紹介」
ViEW2013 「SS-01 画像センサと応用事例の紹介」ViEW2013 「SS-01 画像センサと応用事例の紹介」
ViEW2013 「SS-01 画像センサと応用事例の紹介」
 
Kinect、real senseの概要とさまざまな使い方
Kinect、real senseの概要とさまざまな使い方Kinect、real senseの概要とさまざまな使い方
Kinect、real senseの概要とさまざまな使い方
 
Kinect for windows sdk c#
Kinect for windows sdk c#Kinect for windows sdk c#
Kinect for windows sdk c#
 
Kinect for windows sdk cpp
Kinect for windows sdk cppKinect for windows sdk cpp
Kinect for windows sdk cpp
 
Kinect入門
Kinect入門Kinect入門
Kinect入門
 
内蔵化、モバイル化に向かうDepthセンサー
内蔵化、モバイル化に向かうDepthセンサー内蔵化、モバイル化に向かうDepthセンサー
内蔵化、モバイル化に向かうDepthセンサー
 
わんくまT84 kinect深度情報処理入門
わんくまT84 kinect深度情報処理入門わんくまT84 kinect深度情報処理入門
わんくまT84 kinect深度情報処理入門
 
インテル Real Sense Hands On Lab
インテル Real Sense Hands On Labインテル Real Sense Hands On Lab
インテル Real Sense Hands On Lab
 
今だから聞きたい 「一番新しい xRアプリの作り方」 2020年 最新版
今だから聞きたい 「一番新しい xRアプリの作り方」 2020年 最新版今だから聞きたい 「一番新しい xRアプリの作り方」 2020年 最新版
今だから聞きたい 「一番新しい xRアプリの作り方」 2020年 最新版
 

Ähnlich wie FMCN Kinectハンズオン

N01_多様に活用可能なマイクロソフトのゲーム関連技術や開発の DX ~高品質リアルタイムビジュアライズのリモート活用からリアルタイムコラボレーションま...
N01_多様に活用可能なマイクロソフトのゲーム関連技術や開発の DX  ~高品質リアルタイムビジュアライズのリモート活用からリアルタイムコラボレーションま...N01_多様に活用可能なマイクロソフトのゲーム関連技術や開発の DX  ~高品質リアルタイムビジュアライズのリモート活用からリアルタイムコラボレーションま...
N01_多様に活用可能なマイクロソフトのゲーム関連技術や開発の DX ~高品質リアルタイムビジュアライズのリモート活用からリアルタイムコラボレーションま...
日本マイクロソフト株式会社
 
devsumi2012 17-D-1 Kinectで創る10年後のカタチ
devsumi2012 17-D-1 Kinectで創る10年後のカタチdevsumi2012 17-D-1 Kinectで創る10年後のカタチ
devsumi2012 17-D-1 Kinectで創る10年後のカタチ
Kaoru NAKAMURA
 
Kinectプログラミング Step by Step
Kinectプログラミング Step by StepKinectプログラミング Step by Step
Kinectプログラミング Step by Step
Akira Hatsune
 
第5回業開中心会議
第5回業開中心会議第5回業開中心会議
第5回業開中心会議
Kaoru NAKAMURA
 
Dev(ice)love デバイス祭り
Dev(ice)love デバイス祭りDev(ice)love デバイス祭り
Dev(ice)love デバイス祭り
Kaoru NAKAMURA
 
Android & Nui & Physical Computing
Android & Nui & Physical ComputingAndroid & Nui & Physical Computing
Android & Nui & Physical Computing
Takahiro KUREBAYASHI
 

Ähnlich wie FMCN Kinectハンズオン (20)

What's TMCN?
What's TMCN?What's TMCN?
What's TMCN?
 
ウェアラブルデバイスとモーションセンサーの融合
ウェアラブルデバイスとモーションセンサーの融合ウェアラブルデバイスとモーションセンサーの融合
ウェアラブルデバイスとモーションセンサーの融合
 
TMCN振り返り 令和ver
TMCN振り返り 令和verTMCN振り返り 令和ver
TMCN振り返り 令和ver
 
「アーティスト活動」というプログラマの自己防衛術 - 坪倉輝明
「アーティスト活動」というプログラマの自己防衛術 - 坪倉輝明「アーティスト活動」というプログラマの自己防衛術 - 坪倉輝明
「アーティスト活動」というプログラマの自己防衛術 - 坪倉輝明
 
Kinect入門
Kinect入門Kinect入門
Kinect入門
 
N01_多様に活用可能なマイクロソフトのゲーム関連技術や開発の DX ~高品質リアルタイムビジュアライズのリモート活用からリアルタイムコラボレーションま...
N01_多様に活用可能なマイクロソフトのゲーム関連技術や開発の DX  ~高品質リアルタイムビジュアライズのリモート活用からリアルタイムコラボレーションま...N01_多様に活用可能なマイクロソフトのゲーム関連技術や開発の DX  ~高品質リアルタイムビジュアライズのリモート活用からリアルタイムコラボレーションま...
N01_多様に活用可能なマイクロソフトのゲーム関連技術や開発の DX ~高品質リアルタイムビジュアライズのリモート活用からリアルタイムコラボレーションま...
 
コスギソン/本日のセンサー&デバイス
コスギソン/本日のセンサー&デバイスコスギソン/本日のセンサー&デバイス
コスギソン/本日のセンサー&デバイス
 
人類kintoneマスター化計画
人類kintoneマスター化計画人類kintoneマスター化計画
人類kintoneマスター化計画
 
Unity ゲーム開発
Unity ゲーム開発Unity ゲーム開発
Unity ゲーム開発
 
Mastering open cv kinectv1 marker based ar
Mastering open cv kinectv1 marker based arMastering open cv kinectv1 marker based ar
Mastering open cv kinectv1 marker based ar
 
devsumi2012 17-D-1 Kinectで創る10年後のカタチ
devsumi2012 17-D-1 Kinectで創る10年後のカタチdevsumi2012 17-D-1 Kinectで創る10年後のカタチ
devsumi2012 17-D-1 Kinectで創る10年後のカタチ
 
Twinmotion 2021とAEC分野向けソリューションのご紹介
Twinmotion 2021とAEC分野向けソリューションのご紹介Twinmotion 2021とAEC分野向けソリューションのご紹介
Twinmotion 2021とAEC分野向けソリューションのご紹介
 
Open Campus 20170820
Open Campus 20170820Open Campus 20170820
Open Campus 20170820
 
Azure Digital TwinとUnreal Engineを統合するADTLink Pluginについて
 Azure Digital TwinとUnreal Engineを統合するADTLink Pluginについて Azure Digital TwinとUnreal Engineを統合するADTLink Pluginについて
Azure Digital TwinとUnreal Engineを統合するADTLink Pluginについて
 
Kinectプログラミング Step by Step
Kinectプログラミング Step by StepKinectプログラミング Step by Step
Kinectプログラミング Step by Step
 
第5回業開中心会議
第5回業開中心会議第5回業開中心会議
第5回業開中心会議
 
KinectプログラミングStepByStep
KinectプログラミングStepByStepKinectプログラミングStepByStep
KinectプログラミングStepByStep
 
Dev(ice)love デバイス祭り
Dev(ice)love デバイス祭りDev(ice)love デバイス祭り
Dev(ice)love デバイス祭り
 
Android & Nui & Physical Computing
Android & Nui & Physical ComputingAndroid & Nui & Physical Computing
Android & Nui & Physical Computing
 
ARコンテンツ作成勉強会 はじめてのKinect openFrameworks編
ARコンテンツ作成勉強会 はじめてのKinect openFrameworks編ARコンテンツ作成勉強会 はじめてのKinect openFrameworks編
ARコンテンツ作成勉強会 はじめてのKinect openFrameworks編
 

FMCN Kinectハンズオン