3.1K Views
May 18, 22
スライド概要
XRミーティング 2022/05/18登壇資料(https://osaka-driven-dev.connpass.com/event/246954/)。OpenXRでHoloLens 2の機能(特にハンドトラッキング)を利用する方法について調べた話を共有。サンプルなどはMixed Reality OpenXR Pluginのサンプルアプリが参考になります(https://github.com/microsoft/OpenXR-Unity-MixedReality-Samples)
ICT業界でソフトウェアエンジニア/アプリケーションアーキテクトを担当。 社内ではXR関連技術に関する啓もう活動や技術支援に従事。 業務の傍ら、XR(特にMixed Reality領域)についての開発技術の調査、開発などを行っています。 また、「大阪駆動開発」コミュニティ所属しており、日々の調査で得た知見はコミュニティを通して情報発信を行っています。
【続】OpenXRでHoloLensアプリを作る 2022/04 XRミーティング 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 ※よかったらこれを機にお知り合いになってください
【続】OpenXRでHoloLensアプリを作る 2022/10/24 Copyright © 2022 Takahiro Miyaura 3
まずはOpenXRのおさらい 2022/10/24 Copyright © 2022 Takahiro Miyaura 4
OpenXR https://www.khronos.org/openxr/ デバイス固有の制御を隠蔽化し実装部分の共通化を図るための仕組み OpenXRで開発すると移植が簡単 2022/10/24 Copyright © 2022 Takahiro Miyaura 5
この話をしようと思った経緯は Mixed Reality Toolkit V3から来ています。 2022/02/16 Copyright © 2022 Takahiro Miyaura 6
Mixed Reality Toolkit V3について ◼ 詳細が知りたい人はアーカイブへ ✓Tokyo HoloLens ミートアップ vol.29 ~HoloLens日本上陸五周年記念!~ ◼ Microsoft YoonさんからのV3に関する情報 ✓ ✓ ✓ ✓ 経緯 アーキテクチャー リリース計画 Etc… 動画を見たい方は・・・ HoloLens ミートアップのアーカイブは Conpass等で後日共有予定 2022/01/19 Copyright © 2022 Takahiro Miyaura 7
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 8
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 9
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 10
実は以前少し試しました。 2022/10/24 Copyright © 2022 Takahiro Miyaura 11
神戸のミートアップで ◼ 詳細が知りたい人はアーカイブへ ✓ Kobe HoloLens ミートアップ vol.5 - 春休みスペシャル ◼ 多彩な内容 ✓ ✓ ✓ ✓ Microsoft Meshの話 入門者向けHoloLens開発 OpenXRな話 Etc… 動画を見たい方は・・・ youtubeでどうぞ! 2022/01/19 Copyright © 2022 Takahiro Miyaura 12
その時わかっていないことを継続調査 2022/10/24 Copyright © 2022 Takahiro Miyaura 13
お題 ◼ OpenXRでハンドトラッキングする ✓ OpenXRでHoloLensのハンドトラッキングどうなの? ✓ 他のHoloLensの機能はどうなの? ✓ 何か参考になる情報は? 2022/10/24 Copyright © 2022 Takahiro Miyaura 14
OpenXRでハンドトラキングをする ✓OpenXRでHoloLensのハンドトラッキングどうなの? ✓他のHoloLensの機能はどうなの? ✓何か参考になる情報は? 2022/10/24 Copyright © 2022 Takahiro Miyaura 15
ハンドトラッキング関連はいくつかある Tracking : OpenXR (Unity拡張) 2022/10/24 Tracking : OpenXR HandMesh : OpenXR (MS拡張) (MS拡張) Copyright © 2022 Takahiro Miyaura 16
OpenXR Unity拡張のハンドトラッキング
◼ UnityEngine.XR名前空間のクラスを利用
List<InputDevice> inputDeviceList = new List<InputDevice>();
InputDevices.GetDevicesWithCharacteristics(
InputDeviceCharacteristics.HandTracking | InputDeviceCharacteristics.Left
コントローラとして左手ハンドトラッキングのリストをデバイスとして取得
, inputDeviceList);
UnityEngine.XR.Hand xrHand = default;
foreach (InputDevice device in inputDeviceList)
{
if (device.TryGetFeatureValue(CommonUsages.isTracked, out bool isTracked)
&& isTracked
&& device.TryGetFeatureValue(CommonUsages.handData, out xrHand))
{
break;
}
検出したデバイスの値が取得可能かチェック
}
2022/10/24
Copyright © 2022 Takahiro Miyaura
17
OpenXR Unity拡張のハンドトラッキング ◼ UnityEngine.XR名前空間のクラスを利用 xrHand.TryGetRootBone(out Bone palm); //Palmの情報を取得 palm.TryGetPosition(out Vector3 position); //Palmの座標を取得 palm.TryGetRotation(out Quaternion rotation); //Palmの回転を取得 List<Bone> fingerBones = new List<Bone>(); xrHand.TryGetFingerBones(HandFinger.Thumb, fingerBones);// 指の関節情報を取得 fingerBones[0].TryGetPosition(out Vector3 position); //指の関節の座標を取得 fingerBones[0].TryGetRotation(out Quaternion rotation); //指の関節の回転を取得 2022/10/24 Copyright © 2022 Takahiro Miyaura 18
OpenXR(Microsoft拡張)のハンドトラッキング ◼ Microsoft.MixedReality.OpenXR名前空間を利用 ✓Microsoft.MixedReality.OpenXR.HandTracker ◼ 手の関節部分の位置と回転を取得 ✓ HandMeshTracker.Left. TryLocateHandJoints( FrameTime.OnUpdate, // 更新のタイミング new HandJointLocation[HandTracker.JointCount] // ジョイント数に応じた情報 ) 2022/10/24 Copyright © 2022 Takahiro Miyaura 19
OpenXR(Microsoft拡張)のHandMesh ◼ Microsoft.MixedReality.OpenXR名前空間を利用 ✓Microsoft.MixedReality.OpenXR.HandMeshTracker ◼ 手の形状をMeshとして取得 ✓ HandMeshTracker.Left.TryGetHandMesh(FrameTime.OnUpdate, mesh) ✓ HandMeshTracker.Right.TryGetHandMesh(FrameTime.OnUpdate, mesh) ◼ 手の位置と回転を取得 ✓ HandMeshTracker.Left.TryLocateHandMesh(FrameTime.OnUpdate, out Pose pose) ✓ HandMeshTracker.Right.TryLocateHandMesh(FrameTime.OnUpdate, out Pose pose) 2022/10/24 Copyright © 2022 Takahiro Miyaura 20
OpenXRでハンドトラキングをする ✓OpenXRでHoloLensのハンドトラッキングどうなの? ✓他のHoloLensの機能はどうなの? ✓何か参考になる情報は? 2022/10/24 Copyright © 2022 Takahiro Miyaura 21
例えば・・・ ◼ 空間認識はAR Foundation使えます。 壁 壁 床 通常のMeshやMaterialを張る 2022/10/24 Scene Understanding的なやつ Copyright © 2022 Takahiro Miyaura 22
OpenXRでハンドトラキングをする ✓OpenXRでHoloLensのハンドトラッキングどうなの? ✓他のHoloLensの機能はどうなの? ✓何か参考になる情報は? 2022/10/24 Copyright © 2022 Takahiro Miyaura 23
実はMicrosoft DocsとGithubにサンプルがある ◼ 最初に見つければよかった。。。 ✓ https://github.com/microsoft/OpenXR-Unity-MixedReality-Samples ◼ 充実のサンプル ✓ハンドトラッキング ✓ハンドレイ ✓アイトラッキング ✓空間認識 ✓メッシュ ✓Scene Understanding的な ✓つかむ操作 ✓Etc… 2022/10/24 Copyright © 2022 Takahiro Miyaura 24
まとめ 2022/10/24 Copyright © 2022 Takahiro Miyaura 25
お題 ◼ OpenXRでハンドトラッキングする ✓ OpenXRのMicrosoft拡張/Unity拡張で対応可能 ※HoloLens 2用のハンドトラッキングのため標準ではなく、MS拡張扱い ✓ 他のHoloLens機能もOpenXR標準、Microsoft拡張で対応可 ✓空間認識はAR Foundation経由で利用 ✓ GithubにOpenXR/Microsoft拡張用のサンプルがある! 次のMixed Reality Toolkitに備えたり、 独自に実装したいことがあるときはOpenXRも調べてみてね。 2022/10/24 Copyright © 2022 Takahiro Miyaura 26
大阪駆動開発 関西を中心に、IT系のおもしろそうなことを 楽しんでやるコミュニティ 2022/10/24Copyright © 2022 Takahiro Miyaura 27