takabrz1 大阪駆動開発 Takahiro Miyaura
MRTK V2のHand Menuを
HoloLens1でつかう方法
宮浦 恭弘 (Miyaura Takahiro)
 大阪駆動開発コミュニティに生息
 HoloLens日本販売してからXR系技術に取組む
 HoloLens系技術Tipsを公開し続けた結果、よく知っている人扱いを受ける。
 Mixed Reality Toolkit(以降MRTK)のTipsが比較的多めで、普段(?)からよく
(?)MRTKの調査などを行っているうちにMRTKに詳しい人扱いを受ける。
 HoloLensを中心にXR系技術と相性のいい技術(機械学習、IOT)を組合せ
て日々遊びの中で知見を蓄えています。
技術Tips : https://qiita.com/miyaura
takabrz1 ※よかったらこれを機にお知り合いになってください
Microsoft MVP for Windows Development 2018-2020
某会社でSE(アプリケーション領域のアーキテクト的なお仕事なはず)= XRは趣味です(貢献領域:Mixed Reality)
今期の審査中・・・
落ちたらショック
Mixed Realityに関する事を普段は探求
2020/5/20
とか、新しい技術Mixed Realityで使える技術は色々調べる… 最近は・・・
 Azure Spatial Anchors
 Remote Rendering
 World Locking Tool(FrozenWolrd.Engine)
主にMixed Reality Toolkitに関する調査
 リリース機能調べたり・・・
 面白い機能使ってみたり・・・
 新しい実験してフィードバックしたり・・・
Copyright © 2020 Takahiro Miyaura(@takabrz1)
本日のお題
MRTK V2にあるHand Menuは便利
2020/5/20
 手のひらをかえすジェスチャー(PalmUp)を利用
 手の周辺にメニュー表示
 必要に応じて出せるため視野を有効に利用できる
Hand Menuに関連する機能はHoloLens 2専用
Hand Menuを表示する部分をHoloLens1の機能で実現して
HoloLens 1でもHand Menuを表示してみた
Copyright © 2020 Takahiro Miyaura(@takabrz1)
Mixed Reality Toolkit V2ってなに?
~ という人のために ~
2020/5/20 Copyright © 2020 Takahiro Miyaura(@takabrz1)
Mixed Reality Toolkit V2
概要
 Cross Platformでの開発可能
 XRデバイスにおけるUnity開発の基本的な構成要素を提供
 ラピッドプロトタイピングを実現
 コア機能が交換可能な拡張性の高いフレームワーク
Unity向けOSSライブラリ
OpenVR HMD
(HTC Vive / Oculus Rift)
iOS/Android
(ARFoundation)
HoloLens HoloLens 2
Windows Mixed Reality HMD
2020/5/20 Copyright © 2020 Takahiro Miyaura(@takabrz1)
Mixed Reality Toolkit V2
概要
2020/5/20 Copyright © 2020 Takahiro Miyaura(@takabrz1)
XRデバイスの固有機能を含め様々な機能を提供
Mixed Reality Toolkit V2
概要
2020/5/20 Copyright © 2020 Takahiro Miyaura(@takabrz1)
UX building blocks : 組込み済みのUX部品群
 これらを組合せることで容易なアプリケーション開発が可能に 今回はこれ!
Mixed Reality Toolkit V2
Hand Menu
2020/5/20 Copyright © 2020 Takahiro Miyaura(@takabrz1)
手のひらをかえすジェスチャーで起動するメニュー
 メニューの出現位置は手の周辺を選ぶことができる
Mixed Reality Toolkit V2
Hand Menuの利用時のコツ
2020/5/20 Copyright © 2020 Takahiro Miyaura(@takabrz1)
表示するメニューが多い場合
 片手で表示しながら、もう片方の手でメニューの操作するのは少し難しい(片方の手がつられて動く)
Mixed Reality Toolkit V2
Hand Menuの利用時のコツ
2020/5/20 Copyright © 2020 Takahiro Miyaura(@takabrz1)
解決策:ワールドロックを駆使する
 メニューをワールドロック状態で表示、表示後はメニューを手の動きから切り離す
Mixed Reality Toolkit V2
Hand Menu
2020/5/20 Copyright © 2020 Takahiro Miyaura(@takabrz1)
大きくは以下のコンポーネントを駆使して構成
手のひらをかえしてメニューを表示するため制御を担当
Hand Constraint Palm Up
手の動きに追従するメニューの動作を担当
Solver Handler
Hand Bounds
そのままではHoloLensでは動作しないため
代替策を講じてみた。
まずは成果物
2020/5/20 Copyright © 2020 Takahiro Miyaura(@takabrz1)
HoloLensでのHand Menu表示
手を検出している間だけメニュー表示用のマーカーを表示
2020/5/20
HoloLensで手を検出→メニューボタンを兼ねたマーカーを表示
Copyright © 2020 Takahiro Miyaura(@takabrz1)
HoloLensでのHand Menu表示
手を検出している間だけメニュー表示用のマーカーを表示
2020/5/20
Hand Constraint Source Detected
https://github.com/TakahiroMiyaura/MixedRealityToolkit-Unity/tree/feature_handmenusamples_holoLens1gen
手が検出されたらマーカーを表示
タップすると指定のメニューを表示
メニューにGaze制御用のパーツを設定
MRTK V2の中にあるHand Menu
のPrefab
Gaze制御用prefab
Gaze制御用prefabの配置場所
マーカーの位置
(どの程度手前に出すか)
Copyright © 2020 Takahiro Miyaura(@takabrz1)
HoloLensでのHand Menu表示
Hand Constraint Source Detected
2020/5/20
HoloLens1は今回の機能を経由、HoloLens 2はそのままで
PalmUpHandMenu_InPalm_3x3
HandMenuController
ContentsController
そのままで利用
マーカー経由で起動
Copyright © 2020 Takahiro Miyaura(@takabrz1)
HoloLensでのHand Menu表示
MRTK V2イベントを個別作って対応するには
2020/5/20
BaseInputHandlerの継承とインターフェースを組合わせる
 BaseInputHandlerの以下のメソッドでつかいたいイベント用のインターフェースを登録
/// <inheritdoc />
protected override void RegisterHandlers(){
CoreServices.InputSystem?.RegisterHandler<IMixedRealitySourceStateHandler>(this);
CoreServices.InputSystem?.RegisterHandler<IMixedRealitySourcePoseHandler>(this);
}
/// <inheritdoc />
protected override void UnregisterHandlers(){
CoreServices.InputSystem?.UnregisterHandler<IMixedRealitySourceStateHandler>(this);
CoreServices.InputSystem?.RegisterHandler<IMixedRealitySourcePoseHandler>(this);
}
 IMixedRealitySourceStateHandler → 手の検出/消失を契機に発生するイベント
 IMixedRealitySourcePoseHandler → 手の動きを契機に発生するイベント
Copyright © 2020 Takahiro Miyaura(@takabrz1)
Hand Menuについて
まとめ
2020/5/20
 MRTK V2のHand MenuはHoloLens 2向けを前提
 必要に応じて表示できるメニューは便利
 メニューの複雑度で手の動きに追従/切離しを考慮
 HoloLens 2とHoloLens 1は装置の機能差でUXが異なる
 ある程度の機能は共通化したい場合Hand Menuの共有は必要かも?
 これからはHoloLens 2だと思うので今回の機能を使う場面は・・・
ひと工夫すれば使い勝手の良いコンテンツは作れる
Copyright © 2020 Takahiro Miyaura(@takabrz1)
大阪駆動開発
関西を中心に、IT系のおもしろそうなことを楽しんでやるコミュニティ
2020/5/20 Copyright © 2020 Takahiro Miyaura(@takabrz1)

MRTK V2のHand MenuをHoloLens1でつかう方法

  • 1.
    takabrz1 大阪駆動開発 TakahiroMiyaura MRTK V2のHand Menuを HoloLens1でつかう方法
  • 2.
    宮浦 恭弘 (MiyauraTakahiro)  大阪駆動開発コミュニティに生息  HoloLens日本販売してからXR系技術に取組む  HoloLens系技術Tipsを公開し続けた結果、よく知っている人扱いを受ける。  Mixed Reality Toolkit(以降MRTK)のTipsが比較的多めで、普段(?)からよく (?)MRTKの調査などを行っているうちにMRTKに詳しい人扱いを受ける。  HoloLensを中心にXR系技術と相性のいい技術(機械学習、IOT)を組合せ て日々遊びの中で知見を蓄えています。 技術Tips : https://qiita.com/miyaura takabrz1 ※よかったらこれを機にお知り合いになってください Microsoft MVP for Windows Development 2018-2020 某会社でSE(アプリケーション領域のアーキテクト的なお仕事なはず)= XRは趣味です(貢献領域:Mixed Reality) 今期の審査中・・・ 落ちたらショック
  • 3.
    Mixed Realityに関する事を普段は探求 2020/5/20 とか、新しい技術Mixed Realityで使える技術は色々調べる…最近は・・・  Azure Spatial Anchors  Remote Rendering  World Locking Tool(FrozenWolrd.Engine) 主にMixed Reality Toolkitに関する調査  リリース機能調べたり・・・  面白い機能使ってみたり・・・  新しい実験してフィードバックしたり・・・ Copyright © 2020 Takahiro Miyaura(@takabrz1)
  • 4.
    本日のお題 MRTK V2にあるHand Menuは便利 2020/5/20 手のひらをかえすジェスチャー(PalmUp)を利用  手の周辺にメニュー表示  必要に応じて出せるため視野を有効に利用できる Hand Menuに関連する機能はHoloLens 2専用 Hand Menuを表示する部分をHoloLens1の機能で実現して HoloLens 1でもHand Menuを表示してみた Copyright © 2020 Takahiro Miyaura(@takabrz1)
  • 5.
    Mixed Reality ToolkitV2ってなに? ~ という人のために ~ 2020/5/20 Copyright © 2020 Takahiro Miyaura(@takabrz1)
  • 6.
    Mixed Reality ToolkitV2 概要  Cross Platformでの開発可能  XRデバイスにおけるUnity開発の基本的な構成要素を提供  ラピッドプロトタイピングを実現  コア機能が交換可能な拡張性の高いフレームワーク Unity向けOSSライブラリ OpenVR HMD (HTC Vive / Oculus Rift) iOS/Android (ARFoundation) HoloLens HoloLens 2 Windows Mixed Reality HMD 2020/5/20 Copyright © 2020 Takahiro Miyaura(@takabrz1)
  • 7.
    Mixed Reality ToolkitV2 概要 2020/5/20 Copyright © 2020 Takahiro Miyaura(@takabrz1) XRデバイスの固有機能を含め様々な機能を提供
  • 8.
    Mixed Reality ToolkitV2 概要 2020/5/20 Copyright © 2020 Takahiro Miyaura(@takabrz1) UX building blocks : 組込み済みのUX部品群  これらを組合せることで容易なアプリケーション開発が可能に 今回はこれ!
  • 9.
    Mixed Reality ToolkitV2 Hand Menu 2020/5/20 Copyright © 2020 Takahiro Miyaura(@takabrz1) 手のひらをかえすジェスチャーで起動するメニュー  メニューの出現位置は手の周辺を選ぶことができる
  • 10.
    Mixed Reality ToolkitV2 Hand Menuの利用時のコツ 2020/5/20 Copyright © 2020 Takahiro Miyaura(@takabrz1) 表示するメニューが多い場合  片手で表示しながら、もう片方の手でメニューの操作するのは少し難しい(片方の手がつられて動く)
  • 11.
    Mixed Reality ToolkitV2 Hand Menuの利用時のコツ 2020/5/20 Copyright © 2020 Takahiro Miyaura(@takabrz1) 解決策:ワールドロックを駆使する  メニューをワールドロック状態で表示、表示後はメニューを手の動きから切り離す
  • 12.
    Mixed Reality ToolkitV2 Hand Menu 2020/5/20 Copyright © 2020 Takahiro Miyaura(@takabrz1) 大きくは以下のコンポーネントを駆使して構成 手のひらをかえしてメニューを表示するため制御を担当 Hand Constraint Palm Up 手の動きに追従するメニューの動作を担当 Solver Handler Hand Bounds そのままではHoloLensでは動作しないため 代替策を講じてみた。
  • 13.
    まずは成果物 2020/5/20 Copyright ©2020 Takahiro Miyaura(@takabrz1)
  • 14.
  • 15.
    HoloLensでのHand Menu表示 手を検出している間だけメニュー表示用のマーカーを表示 2020/5/20 Hand ConstraintSource Detected https://github.com/TakahiroMiyaura/MixedRealityToolkit-Unity/tree/feature_handmenusamples_holoLens1gen 手が検出されたらマーカーを表示 タップすると指定のメニューを表示 メニューにGaze制御用のパーツを設定 MRTK V2の中にあるHand Menu のPrefab Gaze制御用prefab Gaze制御用prefabの配置場所 マーカーの位置 (どの程度手前に出すか) Copyright © 2020 Takahiro Miyaura(@takabrz1)
  • 16.
    HoloLensでのHand Menu表示 Hand ConstraintSource Detected 2020/5/20 HoloLens1は今回の機能を経由、HoloLens 2はそのままで PalmUpHandMenu_InPalm_3x3 HandMenuController ContentsController そのままで利用 マーカー経由で起動 Copyright © 2020 Takahiro Miyaura(@takabrz1)
  • 17.
    HoloLensでのHand Menu表示 MRTK V2イベントを個別作って対応するには 2020/5/20 BaseInputHandlerの継承とインターフェースを組合わせる BaseInputHandlerの以下のメソッドでつかいたいイベント用のインターフェースを登録 /// <inheritdoc /> protected override void RegisterHandlers(){ CoreServices.InputSystem?.RegisterHandler<IMixedRealitySourceStateHandler>(this); CoreServices.InputSystem?.RegisterHandler<IMixedRealitySourcePoseHandler>(this); } /// <inheritdoc /> protected override void UnregisterHandlers(){ CoreServices.InputSystem?.UnregisterHandler<IMixedRealitySourceStateHandler>(this); CoreServices.InputSystem?.RegisterHandler<IMixedRealitySourcePoseHandler>(this); }  IMixedRealitySourceStateHandler → 手の検出/消失を契機に発生するイベント  IMixedRealitySourcePoseHandler → 手の動きを契機に発生するイベント Copyright © 2020 Takahiro Miyaura(@takabrz1)
  • 18.
    Hand Menuについて まとめ 2020/5/20  MRTKV2のHand MenuはHoloLens 2向けを前提  必要に応じて表示できるメニューは便利  メニューの複雑度で手の動きに追従/切離しを考慮  HoloLens 2とHoloLens 1は装置の機能差でUXが異なる  ある程度の機能は共通化したい場合Hand Menuの共有は必要かも?  これからはHoloLens 2だと思うので今回の機能を使う場面は・・・ ひと工夫すれば使い勝手の良いコンテンツは作れる Copyright © 2020 Takahiro Miyaura(@takabrz1)
  • 19.