56
Kinect センサーデバイスと連動した 楽しいアプリ開発 一般社団法人T.M.C.N 株式会社システムフレンド 前本 知志

Kinect やセンサーデバイスと連動した楽しいアプリ開発

Embed Size (px)

Citation preview

Kinect やセンサーデバイスと連動した

楽しいアプリ開発

一般社団法人T.M.C.N

株式会社システムフレンド

前本知志

・会社ではセンサー&デバイス部長やってます!KINECT等のセンサーを使ったアプリ(イベントコンテンツ、画像処理、画像認識、医療ヘルスケア系)スマフォのARアプリなどを作っています。http://www.systemfriend.co.jp/kinect_nui https://youtu.be/ZSXwhj8HqkE

・TMCN (Tokyo MotionControl Network) Co-founder(共同創設者)https://www.facebook.com/TokyoMotioncontrolNetwork

・著書「Intel RealSense SDK センサープログラミング」https://www.shoeisha.co.jp/book/detail/9784798139630

・HoloMagicians – 日本初のホロレンズ開発者チームhttp://holomagicians.azurewebsites.net/

・Microsoft MVP for Windows Developmenthttps://mvp.microsoft.com/ja-jp/PublicProfile/5002154?fullName=Satoshi%20%20Maemoto

まえもと さとし

2

今日名刺を忘れてしまいました!Facebook 前本 知志

Twitter @peugeot106s16

https://www.facebook.com/TokyoMotioncontrolNetwork

https://www.facebook.com/HiroshimaMotionControlNetwork/

安価なデバイスと開発環境

高性能なデバイスやセンサーが比較的安価に手に入るようになった

無料で利用できる開発環境が手に入るようになった

最近いろいろ流行ってますよね!

やっぱりキネクトが好き!

全身をトラッキングできる

6人まで骨格情報が同時にとれる

カメラ映像も綺麗になった

>> みんなで一緒に盛り上がれる! <<

Unityと相性がよい

Kinect for Windows v2 SDKが公式にUnityプラグインを提供>> 簡単にKINECTを使えるプレファブ群>> サンプルシーンの提供

Visual Studio 2015 Tools for Unity>> Visual Studioでデバッグが可能>> UnityのGameObject用コード補完

KINECT V2とUnityならこんなことやりたくなるよね

座標系合わせたくなるよね

KINECTの3D骨格情報を取得(メートル座標系)

Unity座標系と対応させる(1Unity=1メートル設定で考える)

X

Y Z

1メートル↓

1Unity

リアルとバーチャルをシンクロしたくなるよね

KINECTのリアル位置とUnity内のカメラ位置、角度、視点を合わせる

カメラ映像とのシンクロを取る

<三種の神器>• メジャー• 養生テープ• 三角関数

3Dモデルを操りたくなるよね

骨格情報をリアルタイムに3Dモデルに反映してみると…

このコンテンツは、『ユニティちゃんライセンス』で提供されています。

やばい、たのしい!!!

https://youtu.be/M8e9mCI-u80

KINECT と Unityでいろいろ作ってみた

PROJECT DAFTY

DAFTY Live System

エアーシンセ

一緒に踊ってエアーで音を鳴らすアプリ(単純)http://www.systemfriend.co.jp/airsynth

子どもは大好きみたいです

いろんなパーティにオファーが!

アキバで学べるパーティAKIPARTY vol.3 ~くりすますだお☆~

学校でもやっちゃったw(横浜 岩崎学園ISCプログラミングコンテスト)

https://youtu.be/ivL6ZxukTlo

http://www.systemfriend.co.jp/charamirror

ユニティちゃんと踊れる!抱っこだってできる!

2015/08/28

CEDEC 2015

https://youtu.be/ZSXwhj8HqkE

子どもが狂ったように遊びます

現実空間とCGのミキシング -> MR

https://youtu.be/YxCGnmfChKk

KINECT-MR

GPU処理について

リアルとバーチャルの重なりを計算する

KINECTのDepthとCGのZバッファをGPUで高速に比較し物体の前後関係を判定し表示する

GPUでの処理 – UnityでShaderを書く

基本的にはこんなに簡単

if (KINECTのDepth<CGのZバッファ)

{return KINECTのColor;

}

else

{return CGのピクセル

}

CGのZバッファ(_CameraDepthTexture)からはスクリーン座標をキーにしてアクセスします。詳しくは調べてみてください^^

だが言うは易し…

発生する課題

スムーズな体験をするためには秒間30フレームを下回らない処理スピードを保持する

メインメモリ→GPU転送は低速だが、下記は転送しなければならない

1. RGBカラー映像(1920x1080 Full-Color Full-HD)

2. KINECTのDepthデータ(512×424)

3. RGBとDepthのマッピングデータ(1920x1080 )

Zバッファに書き込みをしないshaderを使っているオブジェクトやパーティクルは表示されなくなる

だが言うは易し…

「きゃらみらー」では、、

メインメモリ→GPUへのデータ転送を数フレームに渡って分割したり、送る頻度を展示中でもリアルタイムに調整できる→少々送るのがずれても体験として気にならないものを見極め、この処理の対象とする

パーティクルについては専用の表示レイヤーを設けて表示されるようにしている。その代わりパーティクルについてはMRでなくAR表示となるがあまり気にならない感じ

AR・VR・MR

AR : Augumented Reality

現実世界の上に仮想世界(CG)を上書きする。

現実世界の映像上にCGを重ね合わせる。

映像の表示優先度は常に 現実世界<CG

Screen

High layer

ARの例

まあ、今はこれですよね。

VR : Virtual Reality

現実世界からの情報を100%カットし、仮想世界(CG)に没入する。現実世界の映像、自分の手などの物体をセンシングして融合する場合もCGオブジェクトとしてそれらが登場する。

映像の表示比率は常に 現実世界:CG = 0:100

Screen

Separate

CG World

Include

VRの例

HTC VIVE やばい。。

https://youtu.be/40Xogw0mg4Q?t=14m3s

VRとポジショントラッキングが合わさるとすごい

複合現実

(ふくごうげんじつ、英: Mixed Reality、MR)とは、現実空間と仮想空間を混合し、現実のモノと仮想的なモノがリアルタイムで影響しあう新たな空間を構築する技術全般を指す。複合現実感とも。拡張現実と拡張仮想を包含する概念である。

空間的整合性、時間的整合性、光学的整合性など実空間と合致させる要素によって、その性質が評価される。

Wikipediaより

MR : Mixed Reality

現実世界と仮想世界(CG)を融合する。

融合結果の前後関係を反映した状態の映像が創り出される。

MRを実現するためには現実世界の3Dスキャンが必要となる。

Screen+

MR World

CG WorldReal World

MR の例

知っておくと頭が良さそうに思われる?表

日本語名 見分けるポイント 必要な処理能力

AR(エイアール) 拡張現実 カメラ映像で現実世界が見えるCGに自分の手をかざすと絶対手より前にCGが表示される

VR(ブイアール) 仮想現実 宇宙とか体内とか女の子の部屋とか、ありえない場所に放り込まれる振り向くとゾンビがいる

中~高

MR(エムアール) 複合現実 カメラ映像または普通に眼鏡越しで現実世界が見えるCGに自分の手をかざすと手より前のCGは見えるし、手より奥のCGは手に隠れる

中~高

HoloLens

こんなイメージですよね

かわいくないよう。。

かわいい子を呼び出したくなりますよね。

https://youtu.be/_st7Z_L-Aw8

では、作り方を。

最低限必要なもの

Visual Studio 2015 Update 3

Universal Windows App Development Tool- Tools (1.4) and Windows 10 SDK (10.0.10586) を選択

https://developer.microsoft.com/en-us/windows/downloads

Unity HoloLens Technical PreviewUnity5.4.0f3のHoloLens開発用特別版https://unity3d.com/jp/partners/microsoft/hololens

Unityちゃん3Dモデルデータhttp://unity-chan.com/

超便利なツールキットHoloToolkit-Unity

ジェスチャー入力や、空間マッピングなどなど豊富な機能を備

えたUnityプロジェクト

HoloLens開発をサポートしてくれるエディタ拡張もある

かなりアクティブに更新されてる

もちろんオープンソースなので、困ったときに読み込むと結構

答えがあったりする。

https://github.com/Microsoft/HoloToolkit-Unity/

Unityプロジェクトとシーンの設定

HoloToolkit-Unityのエディタ拡張でHoloToolkitメニューが現れる

Apply HoloLens Project Settings でプロジェクト設定がいいかんじに

Apply HoloLens Scene Settings でシーン設定(カメラなど)がいい感じに

https://developer.microsoft.com/en-us/windows/holographic/unity_development_overview

手動設定はめんどくさい

Unityプロジェクトとシーンの設定

MainCameraのClipping Planes – Near を小さくするとより一層彼女と親密になれます

Unityプロジェクトとシーンの設定

現実世界をスキャンしてメッシュ化してくれるSpatialMappingプレファブを配置します

ユニティちゃんを配置

ユニティちゃんの入れ方はわかるよね?(PrefabなどなどをもってきてAssetsにいれてね)

MainCameraの視野内で少し高めに配置する事

ユニティちゃんへの設定

物理エンジン系設定を追加Colliderはこんな感じに↓

コンテンツの制御

空のGameObjectにScriptをぺたん。

コンテンツの制御

実機にデプロイ

ビルド設定

Windows Store (UWP)アプリとして書き出します→Visual Studioのソリューションができる

Visual Studioでビルドする

HoloLensをPCにUSB接続し、x86デバイスとして実行する

ふぅ。

https://youtu.be/_st7Z_L-Aw8

まとめ

KINECTやHoloLensのアプリはUnityでつくれる

Unityを使えば現実空間とCGをミックスした楽しいコンテンツが作れる

HoloLensのアプリはUnityからWindows Store(UWP)プロジェクトを書き出す流れで実機へデプロイする

HoloLensのアプリをつくるには以下の3つのスキルがいりそうです。1. Unityをつかえる2. 現実空間とVR空間のことがわかる3. Windows Store(UWP)アプリが作れる(凝り始めると必須)

https://github.com/SystemFriend/HoloLensUnityChan/

ソースコードはこちら