MixedRealityToolKit(以下MRTK)にはExamplesというデモサンプル集が含まれています。
Examplesを理解すればMRTKの機能の使い方を学習することやノンコーディングでのアプリ開発が可能になります。
今回はUX/Interactables/InteractablesExamplesを見ています。
〇デモシーンの概要
InteractablesExamplesはボタン、UIのコントロールなどのインタラクティブをフィードバックとともに構築するための基本的なコンポーネントを含んだサンプルです。
〇GrabHandle(Interactables/NearInteractionExamples/GrabHandle)
[GrabHandle]は取ってのような形のオブジェクトです。
カーソルが合うと色が変化し、[Grab]の動作を行うことでTextとオブジェクトの色と形が変化します。
GrabHandleはHierarchyのInteractables/NearInteractionExamplesにあります。 GrabHandleという親オブジェクトの子オブジェクトとしてメッシュが格納されています。
GrabHandleのInspectorを開くと[Interactable]がアタッチされています。
●Interactable
・General/InputActions
Interactableをアタッチしたオブジェクトに対して認識するアクションを指定します。ここでは[Select]が指定されていています。
これは[MixedRealityToolkit]のproviderの[Input]の[InputActions]で指定したアクションに対応しています。
・Profiles
ProfilesはInteractableをアタッチしたオブジェクトにアクションが行われた場合のイベントを指定します。
[Target]にはイベントを行うオブジェクト、[Theme]には実行するイベントの内容を指定したThemeと呼ばれるファイルを指定します。
・Near Interaction Grabbable
Near Interaction GrabbableをオブジェクトにアタッチすることでHoloLens 2のHandTrackingを使用してオブジェクトに対するGrabを認識することができます。
〇MixedReality Theme
MixedReality ThemeはMixedRealityToolkitの機能として利用できるThemeです。
Unityの[ProjectWindow]で[Create/MixedRealityToolkit/Theme]から作成できます。
作成したThemeのInspectorから[States]を設定します。
[GrabHandle]では[DefaultInteractableStates]が設定されています。
[Theme Runtime]で実行するイベントの種類を選択します。ここではColorを変化させるため[InteractableColorChildrenTheme]がされています。
ターゲットとなるMaterialのShaderとそのpropertyを指定します。 ここではMRTK StandardShaderの[_Color]が設定されています。
最後にColorの変化を指定します。
ここでは[Default][Focus][Pressed][Disabled]の4種のステータスが設定されています。 それぞれ
・Default・・・デフォルトの状態
・Focus・・・カーソルがオブジェクトに当たっている(フォーカスがあっている)場合
・Pressed・・・オブジェクトが選択されている状態
・Disabled・・・カーソルを見失った場合
の状態を指定できます。