1.1K Views
March 23, 22
スライド概要
Kobe HoloLens Meetup! vol.5 - 春休みスペシャル(https://arkobe.connpass.com/event/241397/)登壇資料。
HoloLens 2向けのコンテンツをOpenXRだけで開発したり、OpenXR+XR Interraction Toolkitの組合わせて作ってみたりした話。コンテンツは最小限でCubeをいじるもの。
サンプルコード:https://github.com/TakahiroMiyaura/OpenXRHoloLensSamples
動画:https://youtube.com/playlist?list=PLc2Vh5cXp2W1EvV6ZEykfPqRTnvgogbeU
ICT業界でソフトウェアエンジニア/アプリケーションアーキテクトを担当。 社内ではXR関連技術に関する啓もう活動や技術支援に従事。 業務の傍ら、XR(特にMixed Reality領域)についての開発技術の調査、開発などを行っています。 また、「大阪駆動開発」コミュニティ所属しており、日々の調査で得た知見はコミュニティを通して情報発信を行っています。
OpenXR + XR Interaction Toolkit 使ったHoloLensコンテンツ開発検証 ~ (私が)完全に理解できたらちゃんと作れて、いろいろ話できるはず編 ~ 2022/03 Kobe HoloLens Meetup vol.5 takabrz1 大阪駆動開発 Takahiro Miyaura
Microsoft MVP for Windows Development 2018-2022 某会社でSE(アプリケーション領域のアーキテクト的なお仕事なはず)= XRは趣味です(貢献領域:Mixed Reality) 宮浦 恭弘 (Miyaura Takahiro) ◼ 大阪駆動開発(とHolomagicians)コミュニティに生息 ◼ HoloLens日本販売してからxR系技術に取組む ◼ 普段はよくMixed Reality Toolkitに関する調査している ✓ リリース機能調べたり・・・ ✓ 面白い機能使ってみたり・・・ ✓ 新しい実験してフィードバックしたり・・・ 最近はこちらに Come Back気味 と思ったらDigital Twins ◼ 新しい技術や、MRに使えそうな技術を調べる 技術Tips : https://qiita.com/miyaura @takabrz1 ※よかったらこれを機にお知り合いになってください
この話をしようと思った経緯は Mixed Reality Toolkit V3から来ています。 2022/02/16 Copyright © 2022 Takahiro Miyaura 3
Mixed Reality Toolkit V3について ◼ 詳細が知りたい人はアーカイブへ ✓Tokyo HoloLens ミートアップ vol.29 ~HoloLens日本上陸五周年記念!~ ◼ Microsoft YoonさんからのV3に関する情報 ✓ ✓ ✓ ✓ 経緯 アーキテクチャー リリース計画 Etc… 動画を見たい方は・・・ HoloLens ミートアップのアーカイブは Conpass等で後日共有予定 2022/01/19 Copyright © 2022 Takahiro Miyaura 4
Mixed Reality Toolkit V3について - ロードマップ 2022年春~夏にPublic Preview→その後リリース予定 2022/01/19 Development Public Preview Now Spring/Summer ‘22 • Port core UX building blocks • Internal Validation • Performance Analysis • OpenXR • New Architecture based on XRI • New Mixed Reality Design Language • Independent Subsystems • UI Theme System • Data Binding • Collection Navigator • Volumetric Layout Tools Copyright © 2022 Takahiro Miyaura Public Contributions 5
Mixed Reality Toolkit V3について - アーキテクチャ フィードバックと業界標準のサポート ○非MRTKのコードと容易に統合可能 ○独立したサブシステム ○MRTK V2を使いながらMRTK V3へ移行が可能 ○エンタープライズ規模に対応したコンポーネント ○トクロスプラットフォームデバイスのサポー ○業界標準のサポート(最小要件の変更) Unity XR Interaction Toolkit(XRI) xRデバイスとコンテンツのInteraction を抽象化しデバイス固有の実装を隠蔽 かすることでクロスプラットフォーム 開発を支援するための開発キット 2022/01/19 OpenXR Unity 2020.3 LTS xRコンテンツ開発を簡素化することを 目的としたクロスプラットフォームXR 体験を実現するための仕様およびSDK xRコンテンツ開発を実現する3D開発プ ラットフォーム Copyright © 2022 Takahiro Miyaura 6
Mixed Reality Toolkit V3について - アーキテクチャ 使いたい部分を導入しながらコンテンツ開発の自由度を上げる構造 MRTK(No dependencies) MRTK Unity Theming / Branding Core UX (Buttons, sliders, etc) MRTK Interaction Layer (Pointers, Gaze, Stateful interactions) XR Interaction Toolkit Volumetric Layout Data Binding Accessibility Tools (Build Window, etc) Input Simulator Visualizations (Spatial Mesh, Performance Monitor, Boundary) MRTK Subsystems (Hands, Performance data, Speech, etc) XR / AR Subsystems Input System OpenXR / Microsoft Extentions 2022/01/19 Copyright © 2022 Takahiro Miyaura 7
Mixed Reality Toolkit V3について - アーキテクチャ 使いたい部分を導入しながらコンテンツ開発の自由度を上げる構造 MRTK(No dependencies) MRTK Unity Theming / Branding Core UX (Buttons, sliders, etc) Volumetric Layout 【ポイント2】 Unityの標準の手段が MRTK Interaction Layer (Pointers, Gaze, Stateful 土台になっているInput Simulator Data Binding Accessibility Tools (Build Window, etc) interactions) XR Interaction Toolkit XR / AR Subsystems Input System OpenXR / Microsoft Extentions 2022/01/19 Visualizations (Spatial Mesh, Performance Monitor, Boundary) MRTK Subsystems (Hands, Performance data, Speech, etc) Copyright © 2022 Takahiro Miyaura 【ポイント1】 OpenXRが基本 8
本日のお題 ◼ OpenXR + XR Interaction Toolkitの話 ✓ 実際にHoloLens2向けにサンプルを構築 ✓ OpenXRのみでの開発(各種トラッキング、イベントの制御) ✓ OpenXR + XR Interaction Toolkitでの開発 ✓ と言いながらXR Interaction ToolkitのVRサンプルをコンパクトにして設定方法を調べた 作ってみて気づいたことや、それぞれの話を簡単に。 なお、空間マッピングはまだ(ちょっとハードル高いw) 2022/02/16 Copyright © 2022 Takahiro Miyaura 9
少しだけ技術の話 OpenXR 2022/02/16 Copyright © 2022 Takahiro Miyaura 10
OpenXR https://www.khronos.org/openxr/ デバイス固有の制御を隠蔽化し実装部分の共通化を図るための仕組み HoloLens を made with Unityすると。。。 OpenXRを使う開発 Windows XR / Legacy XRを使う開発 2022/02/16 移植が容易 (Mixed Reality OpenXR Plugin) Copyright © 2022 Takahiro Miyaura 11
XR Interaction Toolkit https://docs.unity3d.com/Packages/[email protected]/manual/installation.html デバイス操作とコンテンツ動作を容易に相互作用する Interactors Register Register 選択したりするアク ションを処理 Interaction Manager InteractorsとInteractablesの管理と仲介 Action Control 入力データを抽象化し、インターアク ターがそれを使ってインタラクション の状態(特に選択と起動)に変換する 方法を提供 2022/02/16 選択したり、アクティブに することができるシーン内 のオブジェクト Interactables Select Controllers Interactables 基本的な部分は Mixed Reality Toolkitの Input Systemに似ている Cursor,Focus,Pointer… MRTKが操作とコンテン ツをつなぐ… Controllers Copyright © 2022 Takahiro Miyaura 12
OpenXRだけでHoloLens 2コンテンツ作る 割と面倒でした。。。 2022/02/16 Copyright © 2022 Takahiro Miyaura 13
OpenXRだけでHoloLens 2コンテンツ作る 環境 今回は以下の環境 ◼ Unity 2020.3.8f1(リビジョン注意!時々HoloLensに致命的なバグあり) ◼ Microsoft OpenXR Plugin 1.3.1 ※Mixed Reality Feature Toolでセットアップ ◼ Visual Studio 2019 2022/02/16 Copyright © 2022 Takahiro Miyaura 14
OpenXRだけでHoloLens 2コンテンツ作る ◼ Tracked Pose Driverでデバイス操作と紐づけ ◼ Player Inputでデバイスのアクションと処理を紐づけ 【結構実装しないといけないです】 ※デバイスのトラッキングまでは実装不要 オブジェクトの制御は要実装 ✓ 手を認識→ハンドレイを表示 ✓ ハンドレイがオブジェクトに衝突→オブジェクトを選択 ✓ タップ→オブジェクトの色を変える 2022/02/16 Copyright © 2022 Takahiro Miyaura 15
OpenXRだけでHoloLens 2コンテンツ作る カメラ6DOF設定の例 Tracked Pose Driver(New Input System)をMainCameraに追加 Position Actionに devicePosition [OpenXR HMD]を設定 Rotation Actionに deviceRotation [OpenXR HMD]を設定 Tracked Pose Driverを追加するとデバイスの情報がオブジェクトに反映 OpenXR HMDなので頭の動きに追従 2022/02/16 Copyright © 2022 Takahiro Miyaura 16
OpenXRだけでHoloLens 2コンテンツ作る アクションの定義 Player Inputを利用 デバイス操作から必要なものを アクションとして定義 アクションに対応する処理を 処理するメソッドを関連付ける タップ操作でイベントを起こす場合 Input Action AssetにSelectPressedをアクションとして 定義する 2022/02/16 Copyright © 2022 Takahiro Miyaura 17
OpenXRだけでHoloLens 2コンテンツ作る アクションの定義 Input Action Assetはデバイス操作とアクションを紐づけ デバイス操作をアクションとして定義 (左手のタップ操作をSelectアクションで定義) 2022/02/16 Copyright © 2022 Takahiro Miyaura 18
OpenXRだけでHoloLens 2コンテンツ作る 色々頑張るといつものあれができます! ◼ 割り当てたアクション ✓ ✓ ✓ ✓ Head Position(6DOF) ハンドトラッキング(Palmのみ) ハンドレイ タップ操作でのアクション ◼ 実装例 ✓ ハンドレイでフォーカス、タップでオブジェクトの色変更 ✓ 空間でタップすると豆腐が生み出される 2022/02/16 Copyright © 2022 Takahiro Miyaura 19
OpenXR + XR Interaction Toolkit でHoloLens 2コンテンツ作る ほとんどサンプルを流用しました。 ほとんど変更いらないです。 2022/02/16 Copyright © 2022 Takahiro Miyaura 20
OpenXR + XR Interaction Toolkit でHoloLens 2コンテンツ作る 環境 今回は以下の環境 ◼ ◼ ◼ ◼ Unity 2020.3.8f1(リビジョン注意!時々HoloLensに致命的なバグあり) Microsoft OpenXR Plugin 1.3.1 ※Mixed Reality Feature Toolでセットアップ XR Interaction Toolkit 2.0.1 Visual Studio 2019 XR Interaction Toolkitのサンプル「Starter Assets」を流用 基本的にはこのサンプルの設定をHoloLens用に変えれば動きます。 2022/02/16 Copyright © 2022 Takahiro Miyaura 21
OpenXR + XR Interaction Toolkit で HoloLens 2コンテンツ作る 基本はOpenXRの時と同じ ◼ 基本的な設定 ✓ Tracked Pose Driverでデバイス操作と紐づけ ✓ Input Action Managerを配置 ✓ Interaction Managerを設置 ◼ ハンドトラッキング制御 ✓ ✓ ✓ ✓ Action Based Controller Manager(なくてもいいかも) XR Controller(Action-based) XR Ray Interactor(ハンドレイ利用の場合) XR Direct Interactor(つかむ動作用) ◼ 操作するオブジェクト ✓ XR Grab Interactable 2022/02/16 Copyright © 2022 Takahiro Miyaura 22
OpenXRだけでHoloLens 2コンテンツ作る カメラ6DOF設定の例 Tracked Pose Driver(Input System)をMainCameraに追加 Position Inputに XRI Head/Positionを設定 Rotation Inputに XRI Head/Positionを設定 考え方はOpenXRの時と一緒。 デバイスの動作を定義する方法がXRIではより共通化 2022/02/16 Copyright © 2022 Takahiro Miyaura 23
OpenXRだけでHoloLens 2コンテンツ作る アクションの定義 XRIでもデバイス操作とアクションを紐づけ Tracked Pose Driver(カメラ用) に紐づけたのはこの定義 2022/02/16 Copyright © 2022 Takahiro Miyaura 24
OpenXRだけでHoloLens 2コンテンツ作る オブジェクトの定義 操作対象オブジェクトにInteractableを設定 ここでInteraction Managerと紐づけ ◼ 動かしたいオブジェクトに追加 ◼ 実行時にInteractableをInteraction Managerに自動登録 ◼ InteractorからのアクションがInteraction Managerを経由 してInteractableに伝達 ◼ 条件に応じて(フォーカス持ってる)制御 2022/02/16 Copyright © 2022 Takahiro Miyaura 25
OpenXRだけでHoloLens 2コンテンツ作る おおむね最小限になりました ◼ 割り当てたアクション ✓ ✓ ✓ ✓ ✓ Head Position(6DOF) ハンドトラッキング(Palmのみ) ハンドレイ(左手のみ) つかむ制御(両手) 各オブジェクトへの操作 ◼ 実装内容 ✓ XRIのVRサンプルの一部を焼き直してHoloLens2用に 2022/02/16 Copyright © 2022 Takahiro Miyaura 26
まとめ ◼ OpenXR + XR Interaction Toolkitの話 ✓ 実際にHoloLens2向けにサンプルを構築 ✓ OpenXRのみでの開発(各種トラッキング、イベントの制御) ✓ OpenXR + XR Interaction Toolkitでの開発 ✓ と言いながらXR Interaction ToolkitのVRサンプルをコンパクトにして設定方法を調べた ✓ ✓ ✓ ✓ 2022/02/16 OpenXRのみでやるのはなかなか面倒 その面を補完できるのがXRIで使い勝手はMRTKに近い XRIとMRTKが融合するととても便利そう 空間マッピングはいずれやっておきますw Copyright © 2022 Takahiro Miyaura 27
最後に GitHubに今回作ったサンプルあげておきました ◼ https://github.com/TakahiroMiyaura/OpenXRHoloLensSamples もう少し細かいことはQiitaにも書く予定 2022/02/16 Copyright © 2022 Takahiro Miyaura 28
大阪駆動開発 関西を中心に、IT系のおもしろそうなことを 楽しんでやるコミュニティ