Slide 1

Slide 1 text

MRTK で HoloLens 2 個人開発をしてみよう Let`s Develop HoloLens 2 App Using MRTK xR Developers Community Conference / HoloLens Meetup Session #xRDCC

Slide 2

Slide 2 text

自己紹介 【名前/ハンドルネーム】 Denik Hatsushika / デニキ 【Twitter】 @xrdnk (真面目な方) 【職歴とか】 TIS Inc. 19年度入社 Incubation Center XR Team 所属 XR Developer として,XR遠隔コミュニケーション サービス「TeleAttend®」の開発に従事 【趣味とか】 アニメ・マンガ鑑賞,野球観戦(巨人ファン) 連載開始から鬼滅の刃が好きなオタク アイコンは禰豆子の”ておくれアイコン”(自作)

Slide 3

Slide 3 text

本セッションの内容と想定対象者 • 内容 MRTKが提供している機能説明 MRTK を使って手軽に HoloLens 2 アプリを作成してみる • 想定対象者 HoloLens 2 開発初心者 本セッションの内容外については他の方の発表にお任せします. 発表内容に誤植や間違い等ありましたら,優しくマサカリを投げてください. 後ほどスライドはconnpassと私のブログ『デニッキ』にアップいたします. https://xrdnk.hateblo.jp/ ハッシュタグは #xRDCC #HoloMagicians でお願いします!

Slide 4

Slide 4 text

Agenda • 初期環境構築 • Features And Making Sample App • Experimental Features • HoloLens 2 持ってないけど MRTK 触りたい • その他 小ネタ • 終わりに

Slide 5

Slide 5 text

初期環境構築

Slide 6

Slide 6 text

HoloLens 2 初期環境構築 本セッションでは以下の環境で実装しております. • Unity 2019.4.8f1 (LTS) • Visual Studio 2019 ver16.7.0 • MRTK 2.4.0 • Windows SDK 10.0.18362.0 以降 Windows SDK 10.0.19041.0 を PC自体にインストールしていると 環境次第で HoloLens 2 で Photon Server に繋がらない不具合があります. PUN 2 を用いた XR 開発を行っている場合はご注意を.(これの解決のために1週間かかった….) 参考: HoloLens 2 公式チュートリアル「Multi-user capabilities tutorials」を試してみた [前編] https://qiita.com/Futo_Horio/items/d1b828db2aeadaa46288 HoloLens 2 で Photon サーバーに繋がらない場合の対処法 https://xrdnk.hateblo.jp/entry/2020/06/22/233522

Slide 7

Slide 7 text

MRTK • Mixed Reality Toolkit (MRTK) MR 体験構築用の Cross Platform Toolkit. HoloLens 2 開発には欠かせない. AR Foundation,Open VR にも対応しています. MRTK はこちらから入手できます. https://github.com/microsoft/MixedRealityToolkit-Unity/releases

Slide 8

Slide 8 text

MRTK の Unity Package 構成 MRTK の Unitypackage 構成 • Foundation MRTK のコアとなるもの. Required. • Extensions MRTK の拡張機能.Experimental 機能も含む.Optional. • Examples MRTK のサンプルが入っている.Optional. • Tools MRTK 用の便利ツールが入っている.Optional. ぶっちゃけ全部脳死で Import しても大丈夫です.

Slide 9

Slide 9 text

Unity Build Settings • Platform: Universal Windows Platform • Target Device: HoloLens • Architecture: ARM64 • Target SDK Version 10.0.18362.0 • Visual Studio Version: VS 2019 • Build and Run on: Local Machine • Build Configuration: Master or Release or Debug

Slide 10

Slide 10 text

Unity XR Settings | Legacy XR Legacy XR (今までの Build-in XR の設定)を利用する場合 XR Plugin Management でもだいたい同じ Microsoft 推奨設定を適用. 参考: Microsoft MR Document / Unity で推奨される設定 Recommended settings for Unity https://docs.microsoft.com/ja-jp/windows/mixed-reality/recommended-settings-for-unity Settings for UWP • VRSDKs に Windows MR 追加 • Depth Format は 16-bit depth • Enable Depth Buffer Sharing ☑ • Stereo Rendering Mode は Single Pass Instanced Depth Format や Depth Buffer などの 深い話については,ホロラボのデコシさんの スライドを参照. 参考: ようこそHoloLensアプリ開発の深淵へ https://speakerdeck.com/decoc/tokyohololensmeetup-vol21

Slide 11

Slide 11 text

Unity Publish Settings | Capabilities 以下の Capabilities に☑することで アプリ内で以下の機能が利用できるようになります. • Spatial Perception 空間認識が利用可能に. そもそもこれのチェック必須. • WebCam カメラ機能が利用可能に. QR コードトラッキングなど カメラを使う場合はチェック必須. • Microphone 声認識を利用可能に. • Internet Client PUN 2 を利用する場合は必須. 参考:App capability declarations https://docs.microsoft.com/ja-jp/windows/uwp/packaging/app-capability-declarations?WT.mc_id=docs-blog-machiy

Slide 12

Slide 12 text

MRTK Project Configurator MRTK を Import した後に, 以下の画面が表示される. MRTK デフォルト設定に自動的に設定してくれるので基本的に Apply すれば大丈夫です. (ただし,アプリ内でカスタマイズする場合は注意すること)

Slide 13

Slide 13 text

Holographic Remoting (Windows XR Plugin Remoting) HoloLens 2 で直接デプロイせずに Unity Editor 上で動作確認を行うことができます. Holographic Remoting が Deprecated になっているのは, こちらは Build-in XR 用で, XR Plugin Management 用に新しく Windows XR Plugin Remoting に名称が変わります. Remote Machine に IPアドレスを入力します. WiFi 接続版より,USB 接続版で使った方が途切れ途切れにならずに安定します. USB 接続で使う時は,HoloLens 側で WiFi を切る必要があります. 参考: Holographic Remoting https://microsoft.github.io/MixedRealityToolkit-Unity/Documentation/Tools/HolographicRemoting.html#connecting-to-the-hololens-with-usb-cable

Slide 14

Slide 14 text

Features And Making Sample App

Slide 15

Slide 15 text

豊富なUIセット MRTK には HoloLens に最適なUIコンポーネントが提供されています.

Slide 16

Slide 16 text

MRTK Toolbox MRTK UX Prefab Components を簡単に見つけることが出来ます. MRTK 2.4 Tools Package を Import する必要があります. Button,Button Collection, Menu, Slate, Slider, Progress Indicator 等があります.

Slide 17

Slide 17 text

UX Building Blocks Bouding Box, Object Manipulator(Manipulation Handler), Hand Menu, Pointers, Voice Command, Hand Tracking, Eye Tracking など, MR開発に必要なコンポーネントがたくさん提供されています. これらをいくつか使って,AR物体とインタラクションできる簡単なアプリを作ってみます.

Slide 18

Slide 18 text

MRTK Sample App (1/4) サンプルシーンを作成します. Mixed Reality Toolkit のタブの Add to Scene and Configure... を押すと Hierarchy に自動的に Mixed Reality Toolkit, Mixed Reality Play Spaceが追加されます. • Mixed Reality Toolkit こちらでMRTKの設定を行います. 追加で設定したいことがあれば, こちらをいじることになります. • Mixed Reality Play Space 子がMain Cameraになってます.

Slide 19

Slide 19 text

MRTK Sample App (2/4) インタラクション用の物体を用意します.今回はコロナを3体用意しました.コライダーをつけましょう. コロナ3Dモデル https://booth.pm/ja/items/1874369

Slide 20

Slide 20 text

MRTK Sample App (3/4) Object Manipulator スクリプトをコロナにアタッチします. これにより,コロナを操作できるようになります. 操作時にカスタマイズしたいときは項目をいじります. 例えば,両手で物体を操作した時に拡大を行いたい場合 Two Handed Manipulation の Two Handed Manipulation Type を Scale のみにします. (デフォルトではScaleもRotateもMoveもできるが使いにくい) また,直で掴みたい場合は, Near Interaction Grabbable スクリプトをアタッチします. 参考: Object Manipulator https://hololabinc.github.io/MixedRealityToolkit-Unity/Documentation.ja/README_ObjectManipulator.html How to add near interaction in MRTK https://hololabinc.github.io/MixedRealityToolkit-Unity/Documentation.ja/Input/HowToAddNearInteractivity.html?q=Near%20Interati

Slide 21

Slide 21 text

MRTK Sample App (4/4) Bounding Box スクリプトをアタッチします. これにより,コロナの周りに立方体が表示されます. これを Bounding Box といいます. 角っこや端っこに触れると拡大・縮小や回転ができます. 立方体自体に触れると動かせることもできます. Bounding Box があると,視覚的にわかりやすいですよね. このように,スクリプトをアタッチするだけで 基本的なARインタラクションが出来るようになっています. 参考: Bounding Box https://hololabinc.github.io/MixedRealityToolkit-Unity/Documentation.ja/README_BoundingBox.html

Slide 22

Slide 22 text

Experimental Features

Slide 23

Slide 23 text

Hand Physics Service (Experimental) 3月のxRLT#3 で発表しています. https://speakerdeck.com/xrdnk/xrdnk-xrlt3-presentation 手に物理判定 AR物体とインタラクションが可能 ① 拡張機能のため,Extensions Package を Import ② 触れる物体に Collider と Rigidbody を Attach ③ Is Kinematic は Uncheck Collision Detection (衝突判定) を適切に設定しないと すり抜ける現象が起きうる. バーチャルキャストさんの以下のブログが詳しいです. 参考: 最適な衝突判定を即選択。Collision Detection 早見表【Unity 2018.3 以降】 https://virtualcast.jp/blog/2020/05/collisiondetectionchart/

Slide 24

Slide 24 text

Hand Coach (Experimental) ハンドジェスチャーをコーチングしてくれます. Hand Interaction Hint スクリプトで Animation を登録 MRTK では 以下が提供されています • AirTap • Move • Scroll • HandFlip • PalmUp MoveToTarget スクリプト と RotateAroundPoint スクリプトを使えば動きが増える 自作もできますが,まだ試していません. 参考: Hand Coach https://docs.microsoft.com/ja-jp/windows/mixed-reality/hand-coach https://github.com/microsoft/MixedRealityToolkit- Unity/blob/mrtk_development/Assets/MRTK/SDK/Experimental/HandCoach/README_HandCoach.md

Slide 25

Slide 25 text

Dock (Experimental) AR物体を所定の位置に出し入れすることが出来る • Dock にする物体 Dock スクリプトをアタッチ Dock Position スクリプトをアタッチ • Dock させたい物体 Dockable スクリプトをアタッチ 参考: MRTK 2.4 から追加された Dock を使ってみた【MRTK】 https://xrdnk.hateblo.jp/entry/2020/08/30/175015

Slide 26

Slide 26 text

HoloLens 2 持ってないけど MRTK 触りたい

Slide 27

Slide 27 text

AR Foundation を使おう 自分のスマホを Mobile AR として MRTK を使うことができます. Camera Setting Providers に UnityARCameraSettingsを追加します. Depth API を組み合わせれば, 深度情報も加わります. AR Core の場合は,Main Cameraに AR Occlusion Manager スクリプトをアタッチするのみ 参考: Mobile AR で MRTK のサンプルシーンを起動する 【MRTK 2.4, AR Foundation】 https://xrdnk.hateblo.jp/entry/2020/06/28/145125 MRTK のサンプルシーンに ARCore Depth API を適用して Environment Occlusion をしてみた 【MRTK 2.4, AR Foundation 4.1】 https://xrdnk.hateblo.jp/entry/2020/06/28/145200 深度情報なし 深度情報あり

Slide 28

Slide 28 text

Oculus Quest を使おう 非公式ですが,MRTK を Oculus で使えます. • Quest の Hand Tracking 対応 • Link on Quest の Controller 対応 • Teleport 可能 • MRTK 2.4 の Interaction 体験可能 参考: MRTK-Quest https://github.com/provencher/MRTK-Quest

Slide 29

Slide 29 text

Leap Motion (UltraLeap) を使おう MRTK 2.4 から Leap Motion が使えるようになっています. 主に手入力のテストに使えます. Leap Motion SDK , Core Assets を別途DL必要 • Input Data Providers に Leap Motion Device Manager 追加 • Leap Controller Orientation で 机上テスト(Desk)かヘッドセットテスト(Headset)が選べる 参考: Using Leap Motion by Ultraleap hand tracking in MRTK https://microsoft.github.io/MixedRealityToolkit-Unity/Documentation/CrossPlatform/LeapMotionMRTK.html

Slide 30

Slide 30 text

その他 小ネタ

Slide 31

Slide 31 text

MRTK 2.5 MRTK 2.5 は 9月末くらいにリリース予定. 主なアップデート(予定)は以下. • UPM (Unity Package Manager) 対応 MRTK 2.5 の Import の手間が省ける • Oculus Quest 公式対応 参考: MRTK 2.5.0 Milestone https://github.com/microsoft/MixedRealityToolkit-Unity/milestone/12

Slide 32

Slide 32 text

HoloLens 2 Display Improvements ソフトウェアのアップデートを通してHoloLens 2 のディスプレイが今後改善される模様 • 目の位置の自動キャリブレーション • ディスプレイの赤み問題の改善 • 視野角を犠牲にコンテンツの解像度を向上させる閲覧モードの導入 視野角が30%ほど減る模様. MRTK で導入予定. 参考: Microsoft promises display improvements for HoloLens 2 through software updates https://www.neowin.net/news/microsoft-promises-display-improvements-for-hololens-2-through-software-updates

Slide 33

Slide 33 text

終わりに

Slide 34

Slide 34 text

HoloLens 2 はじめるなら 【書籍】 • HoloLens 2 入門 (著:ホロラボ中村さん) HoloLens 2 の概要,セットアップ,基本操作,アプリの使い方が説明 【サイト】 • MRTK ドキュメント https://github.com/microsoft/MixedRealityToolkit-Unity https://hololabinc.github.io/MixedRealityToolkit-Unity/README.html MRTK 開発時は必ず見る.ホロラボさん提供の日本語訳もある.(多大な感謝) • HoloLens Microsoft 公式ドキュメント https://partner.microsoft.com/en-us/training/training-center/assets#/?role=archtct&search=hololens アプリデザイン,パフォーマンス,Spatial Mapping などの知識が得られる • Microsoft 公式 Mixed Reality チュートリアル https://docs.microsoft.com/ja-jp/windows/mixed-reality/tutorials 2020/07/01 にチュートリアルがアップデートされている気がする.(量が多く,豊富になった?)

Slide 35

Slide 35 text

終わりに • HoloLens 2 開発をするときは,MRTK を使いましょう • まずは MRTK の Examples を舐めるように触れるとよいと思います • 公式だけでなく,HoloMagicians コミュニティの方々が HoloLens に関する情報を 沢山アウトプットしているので,参考にしていきましょう.(多大な感謝) • HoloLens 2 は 42万円かかるけど,最高です. (ボクは会社のものを利用していますが…) HoloLens 2 はいいぞ.