夜風のMixedReality

xRと出会って変わった人生と出会った技術を書き残すためのGeekなHoloRangerの居場所

InteractablesExamples/Buttons ~MixedRealityToolkit v2 Examplesを触ってみる。 その④~

 MixedRealityToolKit(以下MRTK)にはExamplesというデモサンプル集が含まれています。

 Examplesを理解すればMRTKの機能の使い方を学習することやノンコーディングでのアプリ開発が可能になります。  

 前回からUX/Interactables/InteractablesExamplesを見ています。

 前回はCustom Object Examplesを見ていました。

 

 redhologerbera.hatenablog.com

〇Buttons

f:id:Holomoto-Sumire:20200213084332j:plain

 [Buttons]はMRTKで提供されているボタンプレファブの基本的な形です。どのような場面においても用いることができるシンプルなデザインが特徴です。

 Buttonには[HoloLens 1 Style Buttons]と[HoloLens 2 Style]が存在します。

 HoloLens 1st、HoloLens 2ではそれぞれ[HoloLens 1st =x86][HoloLens 2 =ARM]とアプリケーションの形が異なるのでたいていの場合Unityの[scene]でHoloLens 1、HoloLens 2とシーンを分けますが、HoloLens 1st 用のシーンにはHoloLens 1stのボタンを使用する必要があります。

●HoloLens 1st Style

f:id:Holomoto-Sumire:20200213085334j:plain

MRTKの前形に当たる[HoloToolkit]から存在するスタイルのボタンです。

HoloLens 1stにはユーザーの手を識別するHandTracking機能はないので、ボタンを手で押すことはできませんが、カーソルを合わせることで選択可能状態であることを示すようにバックパネルが白く変化します。

●HoloLens 2 Style

f:id:Holomoto-Sumire:20200213085939j:plain

HoloLens 2ではユーザーの手を認識するHandTracking機能が使用できるため、これを用いて[押す]ということが可能です。

触覚フィードバックは存在しないためユーザーがボタンを押したことをより理解しやすくする工夫としてCustom Object SampleのButtonのようにエッジのみが白い透明のオブジェクトがボタン前面に突き出ていて、これに触れることでユーザーにボタンを押したことを認識させています。

f:id:Holomoto-Sumire:20200213090359j:plain
CompressableButtonVisuals

 

f:id:Holomoto-Sumire:20200213090625j:plain
ボタンが押されている状態

〇Buttonの中身

HoloLens 1stStyleButtonとHoloLens 2StyleButtonとでは、オブジェクトの構造だけではなくアタッチされているコンポーネントも異なります。

 

f:id:Holomoto-Sumire:20200213090755j:plain
HoloLens 1st StyleButtonのInspector

 

f:id:Holomoto-Sumire:20200213090955j:plain
HoloLens 2 StyleButtonのInspector

f:id:Holomoto-Sumire:20200213091034j:plain

 HoloLens 1stStyleでは今まで見てきたような[Interactable.cs]がアタッチされており、加えてHoloLens 2のgestureでも対応できるように[Touch Handler.cs]がアタッチされています。

 このスタイルでは[Interactable.cs/Events/OnClick]にイベントを指定することでボタンをAirTapした時のイベントを指定で来ます。

 HoloLens 2 StyleではHoloLens 1stに比べ多様化したgestureに対応するためにさらに複雑に設定することができます。

f:id:Holomoto-Sumire:20200213092207j:plain

 ●[Touch Begin]ではユーザーの手がボタンに触れたときのイベントを指定できます。

 ●[Touch End]ではユーザーの手がボタンから離れたときのイベントを指定できます。

 ●[Button Pressed]ではユーザーの手が完全にボタンを押し込んだ際のイベントを指定できます。

 ●[Button Released]ではユーザーがボタンを押し込み、解放した際のイベントを指定できます。

redhologerbera.hatenablog.com