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.

KINECT Mixed Reality

2,334 views

Published on

2016/01/26 会津大学講義用

Published in: Technology
  • Login to see the comments

KINECT Mixed Reality

  1. 1. OpenAppLab センサーコース KINECT Mixed Reality 一般社団法人T.M.C.N / 株式会社システムフレンド 前本 知志
  2. 2. ・システムフレンドという会社でセンサー&デバイス部長やってます! 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 自己紹介
  3. 3. こういうのを作ってます。 https://youtu.be/ZSXwhj8HqkE https://youtu.be/YxCGnmfChKk
  4. 4. 書籍執筆 https://www.shoeisha.co.jp/book/detail/9784798139630 Intel RealSense SDK センサープログラミング 2015/5/12発売 中村 薫, 前本 知志, 斎藤 裕佑, 谷口 直嗣, 初音 玲 (Tokyo MotionControl Network) 2016/01/23 update RealSenseハッカソンで優勝しました。 RealSenseでMRしました。 http://www.systemfriend.co.jp/node/687
  5. 5. このセッションのながれ 1 • Mixed Reality(MR)とは 2 • KINECT-MR実現へのステップ 3 • KINECT-MR GPU処理について
  6. 6. Mixed Reality(MR)とは
  7. 7. 複合現実 (ふくごうげんじつ、英: Mixed Reality、MR) とは、現実空間と仮想空間を混合し、現実のモ ノと仮想的なモノがリアルタイムで影響しあう 新たな空間を構築する技術全般を指す。複合現 実感とも。 拡張現実と拡張仮想を包含する概念である。 空間的整合性、時間的整合性、光学的整合性な ど実空間と合致させる要素によって、その性質 が評価される。 Wikipediaより
  8. 8. AR : Augumented Reality 現実世界の上に仮想世界(CG)を上書きする。 現実世界の映像上にCGを重ね合わせる。 映像の表示優先度は常に 現実世界<CG Screen High layer
  9. 9. AR の例
  10. 10. VR : Virtual Reality 現実世界からの情報を100%カットし、仮想世界(CG)に没 入する。 現実世界の映像、自分の手などの物体をセンシングして 融合する場合もCGオブジェクトとしてそれらが登場する。 映像の表示比率は常に 現実世界:CG = 0:100 Screen Separate CG World Include
  11. 11. VR の例
  12. 12. MR : Mixed Reality 現実世界と仮想世界(CG)を融合する。 融合結果の前後関係を反映した状態の映像が創り出され る。 MRを実現するためには現実世界の3Dスキャンが必要と なる。 Screen + MR World CG World Real World
  13. 13. MR の例
  14. 14. KINECT-MR 実現へのステップ with Unity3D
  15. 15. KINECTでのMR(きゃらみらー) • KINECTのColorとDepthを利用してMR映像をリア ルタイムに生成する • KINECTを頭に装着し、MR映像をHMDに入力す れば動き回れないHoloLensになる状態
  16. 16. STEP.1 座標系を合わせる • KINECTの3D座標系(メートル座標系) とUnity座標系と対応させる (Unity内の1単位=1メートルと考える) X Y Z 1メートル ↓ 1Unity
  17. 17. STEP.2 二つの世界のカメラを同期 • リアル世界のKINECTの設置高と注視点、Unity 内のMainCameraのY位置と注視点を合わせる 0.8m 0.5m 4.0m 0.8 4.0 0.5 =
  18. 18. STEP.2 二つの世界のカメラを同期 「きゃらみらー」では、、 • 初期状態でMainCameraは(0,0,0)にある • KINECTのBodyFrame.FloorClipPlane.Wが床に対する KINECTの高さを表すのでY位置を自動同期する • MainCameraは(0,Y,0)から(0,1,4)を見つめるように傾 きを自動設定する。 • KINECTのカメラが見つめる位置を4メートル先の床 上空1メートルになるように手動調整する (KINECTのチルトをAPIで制御できれば自動ででき たのに…)
  19. 19. STEP.3 二つの世界の映像を重ねる 弊社開発風景
  20. 20. STEP.3 二つの世界の映像を重ねる 「きゃらみらー」では、、 • MainCameraと別にKINECTのカラー映像だけを 取得するSubCamera(Projection=Orthographic) を用意している • SubCameraの映像をMainCameraの無限大に遠方 にある背景映像として合成。 • 理由:MainCameraのProjectionはPerspectiveで遠 近法が適用されるため同一カメラで2D映像を 表示させたPlane等をとらえる手法では周辺部 が歪んで位置が合わなくなるため ここはいろんなやり方があるので後述 するShaderで吸収することもできる
  21. 21. KINECT-MR GPU処理について
  22. 22. リアルとバーチャルの 重なりを計算する • KINECTのDepthとCGのZバッファをGPUで高速に 比較し物体の前後関係を判定し表示する
  23. 23. GPUでの処理 • 基本的にはこんなに簡単 if (KINECTのDepth<CGのZバッファ) { return KINECTのColor; } else { return CGのピクセル } CGのZバッファ(_CameraDepthTexture)からはスクリーン座標をキーにして アクセスします。詳しくは調べてみてください^^
  24. 24. だが言うは易し… 発生する課題 • スムーズな体験をするためには秒間30フレーム を下回らない処理スピードを保持する • メインメモリ→GPU転送は低速だが、下記は転 送しなければならない 1. RGBカラー映像(1920x1080 Full-Color Full-HD) 2. KINECTのDepthデータ(512×424) 3. RGBとDepthのマッピングデータ(1920x1080 ) • Zバッファに書き込みをしないshaderを使って いるオブジェクトやパーティクルは表示されな くなる
  25. 25. だが言うは易し… 「きゃらみらー」では、、 • メインメモリ→GPUへのデータ転送を数フレー ムに渡って分割したり、送る頻度を展示中でも リアルタイムに調整できる →少々送るのがずれても体験として気にならな いものを見極め、この処理の対象とする • パーティクルについては専用の表示レイヤーを 設けて表示されるようにしている。 その代わりパーティクルについてはMRでなく AR表示となるがあまり気にならない感じ
  26. 26. 最後に ぜひがんばってHoloLensが出る前にこれを作っ てください!

×