Microsoftのドキュメント[Microsoft Docs]ではHoloLens 2の入門チュートリアルが公開されています。
ツールのインストールから詳しく掲載されているためこちらを今回勉強しながらHoloLens 2が手元にないためHoloLens 1stで動かしてみます。
チュートリアルは以下で公開されています。
前回の記事はこちら
前回はMixedRealityデバイスに合わせプロファイルを編集し、SpatialAwarenessのプロファイルを設定しました。
〇ハンドトラッキングとボタン
ここでは、HoloLens2のハンドトラッキングを使用してボタンをクリックし、イベントをトリガーして、ボタンが押されたときにアクションを発生させる方法について勉強します。
●1. シーンに [pressable button prefab]を追加する
[Project] ウィンドウで、 [PressableButtonHoloLens2]のキーワードを検索してプレファブを探します。

[PressableButtonHoloLens2]プレファブを[Hierarchy]ウィンドウにドラッグ&ドロップします。

これによってシーンにボタンが配置されました。
●プレファブとは?
プレファブはプレファブ倉庫、プレファブ教室と同じようにシーンに配置するだけで3Dモデルのメッシュだけでなくコンポーネントやマテリアル、子オブジェクトなどが全部配置できるUnityの機能です。
これによって開発者は一つ一つUnityのscene上でコンポーネントをアタッチするなどせずドラッグ&ドロップするだけで全く同じものが作れます。
[PressableButtonHoloLens2]オブジェクトを選択したまま、 [Inspector] ウィンドウでボタンがカメラの前に配置されるように位置を変更します。
[Transform]の値をX=0、Y=0、Z=0.5に設定します。

オブジェクトの位置や回転、大きさは[Transform]によって変更します。 この単位は位置では[メートル]、回転では[度数]、大きさでは[倍率]が用いられています。
例えばTransform Position : x=0、y=-1、z=0.5であればx軸(水平軸)の位置が0m、y軸(鉛直軸)の位置が-1m、z軸(奥行き)が0.5m(50cm)の位置にオブジェクトが配置されます。
●2. シーンにキューブを追加する
[Hierarchy] ウィンドウ内の空の場所を右クリックし、[ 3DObject > Cube] を選択して、キューブをシーンに追加します。

[Cube]オブジェクトを選択した状態で、 [Inspector] ウィンドウで次のように設定します。
[PressableButtonHoloLens2]の近くに配置されるように[Transform]を変更します。ただし、[PressableButtonHoloLens2]の位置と重複しないようにします。
変換スケールを適切なサイズに変更します (たとえば、x = 0.02、y = 0.02、z = 0.02)。
Unityで提供される基本的な[Cube(primitive3DObject)]のサイズは1m×1m×1mです。
スケールを0.02にすることで実際のCubeのサイズは2cm四方になります。
●3. InteractableOnPressReceiver イベントの種類を構成する
[Hierarchy] ウィンドウで、 [PressableButtonHoloLens2]オブジェクトを選択します。
次に、 [Inspector] ウィンドウ上部メニューで、 [collapse All component] を選択してすべてのコンポーネントが見えるようにします。

[Interactable] コンポーネントを展開し、[Event > Receiver ] セクションを探して展開します。

[add Event] ボタンをクリックして、[Event Receiver Type]が[Interactableonpressreceiver]の新しいイベントレシーバーを作成します。

この[InteractableOnPressReceiver] を使用すると、ボタンを押したときに、ボタンが押されたイベントに応答できるようになります。
新しく作成されたイベントレシーバーについて、[Interaction Filter]を[Near And Far]に変更します。

●4. On Press イベントを受け取るようにキューブを構成する
[Hierarchy] ウィンドウで、 [On press () Event]にキューブをドラッグ&ドロップします。これにより、on press () イベントの受信にキューブが割り当てられます。

●5. On Press イベントによってトリガーされるアクションを定義する
[No function] を選択し、[ MeshRenderer > material material ] を選択して、On Press () イベントがトリガーされたときに、キューブの material プロパティを変更するように設定します。

これはイベントを受信したキューブがどのようなアクションを返すかを指定しています。
[Material] フィールドの横にある小さい円アイコン (None (Material) ) をクリックして、[Material Select] ウィンドウを開きます。

[Material Select]ウィンドウで[MRTK_Standard]を検索し、適切な素材を選択します。たとえば、ボタンが押されたときにキューブの色がシアンに変更されるように[MRTK_Standard_Cyan]します。

●6.On Release イベントによってトリガーされるアクションを定義する
ボタンが離されたときにキューブの色が元の明るい灰色の色に戻るようにMRTK_Standard_LightGrayMaterialを設定します。
On Release()イベントにも同様にCubeを設定しMaterial materialで[MRTK_Standard_LightGray]を設定します。

以上でHoloLens2ボタンプレファブのアクションに対してキューブの色が変化する機能が完成しました。
次回続きを勉強します。