Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space

63
Unity meets Kinect -Unity で NUI を扱ってみた- 2015.06.23 (Tue) / Unity 勉強会 #32 株式会社キッズスター システムデベロプメントチーム リーダー 森 哲哉

Transcript of Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space

Page 1: Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space

Unity meets Kinect -Unity で NUI を扱ってみた-

2015.06.23 (Tue) / Unity 勉強会 #32株式会社キッズスター

システムデベロプメントチーム リーダー 森 哲哉

Page 2: Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space

こんばんは!

Page 3: Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space

「またお前か」 でお馴染みの もんりぃです!

Page 4: Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space

今日は

Page 5: Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space
Page 6: Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space

meets

Page 7: Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space
Page 8: Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space

というコトで

Page 9: Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space

Natural User

Interface

Page 10: Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space

のおはなしです

Page 11: Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space

おしながき

Page 12: Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space

おしながき

• Kinect って?

• Unity × Kinect の準備

• Unity × Kinect の開発

• おまけ

Page 13: Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space

さて、本題

Page 14: Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space

の、前に

Page 15: Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space

自己紹介

Page 16: Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space

whoami

• “森 哲哉” と申します

• a.k.a: もんりぃ / T: @monry / F: monry84

• 30歳 / ♂ / O型 / 天秤座 / 既婚

• 趣味は「お酒」と「合唱」です

Page 17: Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space

whoami• 大学を (自主的に) 卒業後、ベンチャーを転々

• Web のフロントエンド、サーバサイドが得意

• Unity 歴 2 年くらい

• インフラ (AWS) も、ちょいちょいやってます

• Cocos2d-JS も触ってます

Page 18: Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space

jobs• “株式会社キッズスター” って会社で働いてます

• 未就学児~小学生のお子さまをお持ちのファミリーをターゲットにした、知育/教育に関わるアプリ・サービスを展開しております

• 「IID 世田谷ものづくり学校」という、元中学校に入居しております

Page 19: Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space

office

Page 20: Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space

office

Page 21: Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space

apps

なりきり!! ごっこランド

パズル&テイルズおかしのくにを つくるのじゃ!!

なりきり!! アイスクリーム 屋さんごっこ

なりきり!! ママごっこ

お弁当をつくろう!

おかしの家を つくろう!

ハンバーガー やさんごっこ

飛行機を 組み立てよう!

i18n i18n i18n

i18n

ゆかいな お花屋さん

App Sto

re / Goo

gle Play

カテゴリランキング1位

多数獲得!!!きかんしゃ トーマスと

パズルで あそぼう!

キョロちゃん 大冒険

Page 22: Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space

events

Page 23: Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space

events

Page 24: Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space

今度こそ、本題

Page 25: Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space

Kinect って?

Page 26: Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space

Kinect って?

• Microsoft が開発した NUI デバイス

• 複数のセンサーを搭載

• v1 と v2 がある

Page 27: Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space

Kinect って?

詳しくは ココ 参照

Page 28: Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space

Kinect って?

Page 29: Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space

Kinect って?

今なら何と!

Page 30: Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space

Kinect って?

¥16,178-(2015/06/22 現在)

Page 31: Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space

Kinect って?

更に!!

Page 32: Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space

Kinect って?

別売りの Windows PC アダプタ (¥5,378-) も付けて…

Page 33: Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space

Kinect って?

¥21,556-(2015/06/22 現在)

Page 34: Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space

Kinect って?

(きゃー) (やす~い!)

Page 36: Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space

Unity × Kinect の準備

Page 37: Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space

準備• 大まかな流れは以下の通り

1. Kinect 買う

2. マシン要件確認

3. SDK インストール

4. Unity Package 取得

Page 38: Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space

準備

• Kinect 買う

• 買いましょう。

• 届くのをソワソワしながら待ちましょう。

Page 39: Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space

準備• ハードウェア要件

• OS: Windows 8 (64bit) 以降

• 端子: USB 3.0

• CPU: Intel Core i7 3.1GHz 以上

• GPU: DirectX 11

• RAM: 4GB 以上

Page 40: Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space

準備

セレブ向けですね!

Page 41: Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space

準備

なお、GPU の絡みで Parallels Desktop とかの VM では動きません!

Page 42: Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space

準備

Page 43: Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space

準備

• SDK インストール

• Kinect for Windows SDK 2.0

• Kinect Studio とか色々指示に従ってインスコ

• Visual Gesture Builder とか大事

Page 44: Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space

準備• Unity Package 取得

• Unity で Kinect に繋ぐためのスクリプトと DLL が含まれてる

• これが、地味に見付けづらい!

• コチラにあります。

Page 45: Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space

Unity × Kinect の開発

Page 46: Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space

開発

• 「最低限動かしてみたい!」って場合は

• Kinect v2 with MS-SDK (Unity 5.0.1 以上)

• FreeKinectV2 Bone (Unity 4.5.5 以上)

• 辺りを使えば楽に出来るんじゃないかな?

Page 47: Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space

開発先ずは基本

KinectSensor sensor = KinectSensor.GetDefault(); if (!sensor.IsOpen) { sensor.Open();}

これで、センサーとの接続を確立

Page 48: Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space

開発Color Camera のデータを取得

FrameDescription frameDescription = sensor.ColorFrameSource .CreateFrameDescription(ColorImageFormat.Rgba);

byte[] data = new byte[ frameDescription.BytesPerPixel * frameDescription.LengthInPixels ];

ColorFrame frame = reader.AcquireLatestFrame(); if (null != frame) { frame.CopyConvertedFrameDataToArray(data, ColorImageFormat.Rgba); frame.Dispose(); frame = null;}

これで data に画像データが格納される

Page 49: Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space

開発IR Camera / IR Projector から骨格情報を取得

BodyFrameReader reader = sensor.BodyFrameSource.OpenReader(); BodyFrame frame = reader.AcquireLatestFrame();

Windows.Kinect.Body[] data = new Windows.Kinect.Body[sensor.BodyFrameSource.BodyCount];

if (null != frame) { frame.GetAndRefreshBodyData(data); frame.Dispose(); frame = null;}

これで data に認識可能人数分の骨格データが入る ただし、認識していないデータは null

Page 50: Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space

開発

あとは、ドキュメント読むと 良いと思うよ!

Page 51: Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space

開発

と、言うのもアレなので Visual Gesture Builder

のおはなしを

Page 52: Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space

開発• Visual Gesture Builder って?

• Kinect の骨格認識を用いたジェスチャーの機械学習補助ツール

• Kinect SDK 2.0 に付随

• まだ Preview 版 (Stable まだー?)

Page 53: Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space

開発

• Visual Gesture Builder の使い方

• 先ずは Kinect Studio でストリームを記録

• KSConvert.exe で xrf → xef への変換

• Visual Gesture Builder で学習

Page 54: Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space

開発• Visual Gesture Builder の使い方

• 学習結果のデータベース (.gbd) を出力

• Unity Package に含まれるMicrosoft.Kinect.VisualGestureBuilder .VisualGestureBuilderDatabaseを使って読み込む

• 後は頑張るw

Page 55: Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space

開発

Visual Gesture Builder の使い方については

この動画が詳しいです。

Page 56: Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space

おまけ

Page 57: Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space

おまけ

• AR ライブラリと組み合わせると死ねる

• Color Sensor は WebCam 扱いにならない

• DLL の取り回しが非常に厄介

• 私は metaio と組み合わせようとして爆死

Page 58: Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space

おまけ

• Visual Gesture Builder は Preview 版

• Continuous ジェスチャの学習時にフレーム挿入になるような操作をするとクラッシュ!

• そもそも xrf → xef の変換マンドクセ

Page 59: Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space

おまけ• BootCamp 行けます!

• MacBook Air (13-inch, Mid 2012)

• CPU: 1.8 GHz Intel Core i5

• GPU: Intel HD Graphics 4000 1024 MB

• RAM: 8GB

Page 60: Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space

おまけ• しかし!

• 一定時間以上稼働させると、突然 Kinect が沈黙する事象が発生

• 熱暴走なのか、MBA との組み合わせの問題なのかは謎

• Surface Pro 3 で動かした場合は無問題

Page 61: Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space

おまけ• 「マイクロソフト、Kinect for Windows v2 の 販売を終了」

• 「マジかよ!!!」

• とか思ったけど、"Kinect v2" と Windows 用アダプタの同梱セットの販売を終了しただけ

• 普通に Xbox One 用の Kinect とアダプタを 買いましょう

Page 62: Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space

Any Questions ?

Page 63: Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space

Thank you foryour attention !!