26
OpenAppLab センサーコース KINECT Mixed Reality 一般社団法人T.M.C.N / 株式会社システムフレンド 前本 知志

KINECT Mixed Reality

Embed Size (px)

Citation preview

Page 1: KINECT Mixed Reality

OpenAppLab センサーコース

KINECTMixed Reality

一般社団法人T.M.C.N / 株式会社システムフレンド

前本 知志

Page 2: KINECT Mixed Reality

・システムフレンドという会社でセンサー&デバイス部長やってます!KINECT等のセンサーを使ったアプリ(イベント用コンテンツ、医療ヘルスケア系)スマフォのARアプリ(最近はやりのぬり絵してキャラに取り込めるやつとか)を作っています。http://www.systemfriend.co.jp/kinect_nui

・エアー書道では何度かテレビ出演をしています2013年1月6日 東京MX TV 「Tokyo, Boy」 新年スペシャル2013年8月26日 日本テレビ 「NEWS ZERO」 などなど。

・TMCN (Tokyo MotionControl Network) Co-founder(理事)https://www.facebook.com/TokyoMotioncontrolNetwork

自己紹介

Page 3: KINECT Mixed Reality

こういうのを作ってます。

https://youtu.be/ZSXwhj8HqkE

https://youtu.be/YxCGnmfChKk

Page 4: KINECT Mixed Reality

書籍執筆

https://www.shoeisha.co.jp/book/detail/9784798139630

Intel RealSense SDKセンサープログラミング2015/5/12発売

中村薫, 前本知志, 斎藤裕佑,

谷口直嗣, 初音玲(Tokyo MotionControl Network)

2016/01/23 updateRealSenseハッカソンで優勝しました。RealSenseでMRしました。

http://www.systemfriend.co.jp/node/687

Page 5: KINECT Mixed Reality

このセッションのながれ

1• Mixed Reality(MR)とは

2• KINECT-MR実現へのステップ

3• KINECT-MR GPU処理について

Page 6: KINECT Mixed Reality

Mixed Reality(MR)とは

Page 7: KINECT Mixed Reality

複合現実

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

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

Wikipediaより

Page 8: KINECT Mixed Reality

AR : Augumented Reality

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

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

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

Screen

High layer

Page 9: KINECT Mixed Reality

AR の例

Page 10: KINECT Mixed Reality

VR : Virtual Reality

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

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

Screen

Separate

CG World

Include

Page 11: KINECT Mixed Reality

VR の例

Page 12: KINECT Mixed Reality

MR : Mixed Reality

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

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

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

Screen+

MR World

CG WorldReal World

Page 13: KINECT Mixed Reality

MR の例

Page 14: KINECT Mixed Reality

KINECT-MR実現へのステップ

with Unity3D

Page 15: KINECT Mixed Reality

KINECTでのMR(きゃらみらー)

• KINECTのColorとDepthを利用してMR映像をリアルタイムに生成する

• KINECTを頭に装着し、MR映像をHMDに入力すれば動き回れないHoloLensになる状態

Page 16: KINECT Mixed Reality

STEP.1 座標系を合わせる

• KINECTの3D座標系(メートル座標系)とUnity座標系と対応させる(Unity内の1単位=1メートルと考える)

X

Y Z

1メートル↓

1Unity

Page 17: KINECT Mixed Reality

STEP.2二つの世界のカメラを同期

•リアル世界のKINECTの設置高と注視点、Unity内のMainCameraのY位置と注視点を合わせる

0.8m0.5m

4.0m

0.8

4.0

0.5

=

Page 18: KINECT Mixed Reality

STEP.2二つの世界のカメラを同期

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

• 初期状態でMainCameraは(0,0,0)にある

• KINECTのBodyFrame.FloorClipPlane.Wが床に対するKINECTの高さを表すのでY位置を自動同期する

• MainCameraは(0,Y,0)から(0,1,4)を見つめるように傾きを自動設定する。

• KINECTのカメラが見つめる位置を4メートル先の床上空1メートルになるように手動調整する(KINECTのチルトをAPIで制御できれば自動でできたのに…)

Page 19: KINECT Mixed Reality

STEP.3二つの世界の映像を重ねる

弊社開発風景

Page 20: KINECT Mixed Reality

STEP.3二つの世界の映像を重ねる

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

• MainCameraと別にKINECTのカラー映像だけを取得するSubCamera(Projection=Orthographic)を用意している

• SubCameraの映像をMainCameraの無限大に遠方にある背景映像として合成。

•理由:MainCameraのProjectionはPerspectiveで遠近法が適用されるため同一カメラで2D映像を表示させたPlane等をとらえる手法では周辺部が歪んで位置が合わなくなるため

ここはいろんなやり方があるので後述するShaderで吸収することもできる

Page 21: KINECT Mixed Reality

KINECT-MR GPU処理について

Page 22: KINECT Mixed Reality

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

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

Page 23: KINECT Mixed Reality

GPUでの処理

•基本的にはこんなに簡単

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

return KINECTのColor;}else{

return CGのピクセル}

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

Page 24: KINECT Mixed Reality

だが言うは易し…

発生する課題

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

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

1. RGBカラー映像(1920x1080 Full-Color Full-HD)2. KINECTのDepthデータ(512×424)3. RGBとDepthのマッピングデータ(1920x1080 )

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

Page 25: KINECT Mixed Reality

だが言うは易し…

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

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

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

Page 26: KINECT Mixed Reality

最後に

ぜひがんばってHoloLensが出る前にこれを作ってください!