夜風のMixedReality

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

PressableButtonExample ~MixedRealityToolkitExamplesを触ってみる~ その④ PressableButtonHoloLens2

本日は引き続きMRTKのExamples枠です。

MRTKでは機能のサンプルとしてExamplesのシーンでデモとして公開しています。

現在PressableButtonExamplesシーンを読み解いています。

その1ではUnityのプリミティブ3Dオブジェクト(Unity内で作成できる3Dモデル)のCubeを用いてゼロからボタンを作成する過程をみました。

redhologerbera.hatenablog.com

その2ではPressableRoundButtonを見ました。

redhologerbera.hatenablog.com

前回のその3ではPianoプレハブの仕組みを見ました。

redhologerbera.hatenablog.com

今回はHoloLens 2 Shell Buttonsを読み解きます。

〇HoloLens 2 Shell Buttons

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

●PressableButtonHoloLens2

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

 一番多くの場で使用されるボタンスタイルです。

 構造はMRTKのドキュメント(記事最後にリンク)でわかりやすい図があったので引用します。

f:id:Holomoto-Sumire:20200626092502p:plain

 ここでは32×32、40×40、48×48のそれぞれ大きさの異なる3つのボタンがあります。

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

 PressableButtonHoloLens2には[BoxCollider]、[PressableButtonHoloLens2]、[PhysicalPressEventRouter]、[Interactable]、[AudioSource]、[NearInteractionTouchable]、[Button Config Helper]がアタッチされています。

前回から扱っているように[BoxCollider]にユーザーの手が触れることで[NearInteraction]コンポーネントでタッチを検出し[PhysicalPressEventRouter]コンポーネントで[Interactable]コンポーネントのイベントと連動させています。

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

[PressableButtonHoloLens2]コンポーネントは[PressableButton]コンポーネント同様HandTrackingでのタッチおよびボタンを押すpressを検知するコンポーネントです。

大きな違いはEventsの下部でプロパティが追加されており、PressableButtonHoloLen2用に細かい設定が可能になっています。

UnityUIベースのボタンには[PressableButton]コンポーネント、MRTKベースのボタンには[PressableButtonHoloLen2]を用います。

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

Moving Button Visualsは見た目の変化するオブジェクトを指定します。

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

Press Settingsはボタンの押し込み時の判定を設定します。

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

・Distance Space Modeはローカル座標(親オブジェクトに倣って)で変位するか、ワールド座標に倣って変位するかを指定します。

・StartPushDistanceはプッシュ開始時の位置です。 移動するボタンやボタン自体の回転軸に対するオフセットを指定します。

・MaxPushDistanceは最大プッシュ距離です。どれだけ押し込めるかを指定します。

・PressDistanceは、ボタンが押されたと判断されるまでの距離を指定します。

・ReleaseDistanceDeltaはプレス状態からリリース状態に遷移するのに必要な変位量を指定します。

・Return Speedはリリース時の見た目の可動ボタンの引き込み速度を指定します。

・Release On Touch Endはこのチェックが有効ならリリースエリアを通過していなくても、ボタンを押した後にタッチエンドでリリースイベントを終了させます。

・Enforce From Pushはチェックが有効の場合ボタンは正面からしか押せないようになります。。背面や側面からボタンに触れることができないようになっています。

●Events

ユーザーがボタンに触れたとき発動する[TouchBegin()]

ボタンを押し込んだ時発動する[ButtonPressed()]

ボタンを放す時に発動する[ButtonReleased()]

すべての動作が終了してボタンから完全に離れたときに発動する[TouchEnd()]

の四種のイベントを指定できます。

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

長くなってしまったので続きは次回見ていきます。

最も使用頻度が高いUIの一つなので詳しく読み解きます。

〇ドキュメント

今回のPressedButonHoloLens2をはじめとしたボタン関連のMRTKのドキュメントです。

microsoft.github.io