以下の内容はhttps://redhologerbera.hatenablog.com/entry/2020/03/14/110000より取得しました。


空間認識のプロファイルの作成 HoloLens2アプリのチュートリアルその⑥

Microsoftのドキュメント[Microsoft Docs]ではHoloLens 2の入門チュートリアルが公開されています。

ツールのインストールから詳しく掲載されているためこちらを今回勉強しながらHoloLens 2が手元にないためHoloLens 1stで動かしてみます。

 チュートリアルは以下で公開されています。

docs.microsoft.com

前回の記事はこちら

redhologerbera.hatenablog.com

 前回はMixedRealityデバイスに合わせプロファイルを編集し、SpatialAwarenessのプロファイルを設定しました。

〇ハンドトラッキングとボタン

 ここでは、HoloLens2のハンドトラッキングを使用してボタンをクリックし、イベントをトリガーして、ボタンが押されたときにアクションを発生させる方法について勉強します。

●1. シーンに [pressable button prefab]を追加する

[Project] ウィンドウで、 [PressableButtonHoloLens2]のキーワードを検索してプレファブを探します。

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

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

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

 これによってシーンにボタンが配置されました。

 ●プレファブとは?

 プレファブはプレファブ倉庫、プレファブ教室と同じようにシーンに配置するだけで3Dモデルのメッシュだけでなくコンポーネントやマテリアル、子オブジェクトなどが全部配置できるUnityの機能です。

 これによって開発者は一つ一つUnityのscene上でコンポーネントをアタッチするなどせずドラッグ&ドロップするだけで全く同じものが作れます。

 [PressableButtonHoloLens2]オブジェクトを選択したまま、 [Inspector] ウィンドウでボタンがカメラの前に配置されるように位置を変更します。

 [Transform]の値をX=0、Y=0、Z=0.5に設定します。

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

 オブジェクトの位置や回転、大きさは[Transform]によって変更します。 この単位は位置では[メートル]、回転では[度数]、大きさでは[倍率]が用いられています。

 例えばTransform Position : x=0、y=-1、z=0.5であればx軸(水平軸)の位置が0m、y軸(鉛直軸)の位置が-1m、z軸(奥行き)が0.5m(50cm)の位置にオブジェクトが配置されます。

●2. シーンにキューブを追加する

[Hierarchy] ウィンドウ内の空の場所を右クリックし、[ 3DObject > Cube] を選択して、キューブをシーンに追加します。

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

 [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] を選択してすべてのコンポーネントが見えるようにします。   f:id:Holomoto-Sumire:20200314103047j:plain

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

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

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

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

この[InteractableOnPressReceiver] を使用すると、ボタンを押したときに、ボタンが押されたイベントに応答できるようになります。

 新しく作成されたイベントレシーバーについて、[Interaction Filter]を[Near And Far]に変更します。

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

●4. On Press イベントを受け取るようにキューブを構成する

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

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

●5. On Press イベントによってトリガーされるアクションを定義する

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

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

これはイベントを受信したキューブがどのようなアクションを返すかを指定しています。

 [Material] フィールドの横にある小さい円アイコン (None (Material) ) をクリックして、[Material Select] ウィンドウを開きます。

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

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

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

●6.On Release イベントによってトリガーされるアクションを定義する

ボタンが離されたときにキューブの色が元の明るい灰色の色に戻るようにMRTK_Standard_LightGrayMaterialを設定します。

On Release()イベントにも同様にCubeを設定しMaterial materialで[MRTK_Standard_LightGray]を設定します。

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

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

 次回続きを勉強します。




以上の内容はhttps://redhologerbera.hatenablog.com/entry/2020/03/14/110000より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14