夜風のMixedReality

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

BoudingBox HoloLens2アプリのチュートリアルその⑪

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

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

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

docs.microsoft.com

前回は3Dオブジェクトに対してつかんで動かすための機能を付与しました。

〇BoundingBoxの追加

 [BoundingBox]はオブジェクトを丁度囲むような大きさの箱のことです。

 BoundingBoxを使用すると、拡大縮小および回転に使用できるハンドルを付与することによって、オブジェクトを簡単かつ直感的に操作できるようになります。

 このチュートリアルでは[EarthCore] オブジェクトに[BoundingBox]を追加します。

BoundingBoxを用いるためには以下のコンポーネントを使用します。

 ・Collider

 ・BoundingBox.cs

● 1. BoundingBox コンポーネントを EarthCore オブジェクトに追加する。

[EarthCore]オブジェクトの[Inspector] ウィンドウで、 [EarthCore]オブジェクトを選択し、[Add component]から[BoundingBox ]コンポーネントを [EarthCore]オブジェクトに追加します。

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

●2. Editerで実行しBoundingBoxをテストする

 UnityEditerの再生ボタンを押して実行します。 次に、[Space ]キーとマウスを使用してBoundingBoxをテストします。

f:id:Holomoto-Sumire:20200319073844g:plain

 BoundingBoxによって回転や拡大が行えました。

〇タッチ効果の追加

 ここでは、オブジェクトを操作したときにイベントが呼び出されるようにします。 具体的には、ユーザーが操作したときにサウンド効果を再生するように、Octa オブジェクトを構成します。

 次の手順を実行します。

●1. オーディオソースコンポーネントをオブジェクトに追加する

[Hierarchy] ウィンドウで、 [Octa]オブジェクトを選択し、[AudioSource]コンポーネントを octa オブジェクトに追加します。次に、[SpatialBlend]を[1(3D)]に変更して[SpatialSounds]を有効にします。

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

●2. Near Interaction Touchable コンポーネントをオブジェクトに追加します。

[Octa]オブジェクトを選択した状態で [Near Interaction Touchable ] コンポーネントを [octa] オブジェクトに追加します

。次に、 [Fix Bounds] と [Fix Center] ボタンをクリックして、[Near Interaction Touchable ] のローカルの中央および境界のプロパティを [BoxCollider] と一致するように更新します。

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

●3. HandInteractionTouchコンポーネントをオブジェクトに追加する

Octaオブジェクトを選択した状態で、[HandInteractionTouch]コンポーネントを octa オブジェクトに追加します。

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

●4. タッチ開始イベントを実装する

 [HandInteractionTouch] コンポーネントで、[On Touch Started(HandTrackingInputEventDate)]の[+] アイコンをクリックして、新しいイベントを作成します。

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

次に、イベントを受信するようにOctaオブジェクトを構成し、アクションとして[AudioSource.PlayOneShot]を定義します。

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

[Assets/MixedRealityToolkit.SDK/StandardAssets/Audio]に移動して、MRTK で提供されているオーディオクリップを表示し、適切なオーディオクリップをオーディオクリップフィールド (たとえば、MRTK_Gem オーディオクリップ) に割り当てます。

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

以上でBoundingBoxが完成しました。

 BoundingBoxを用いることでユーザーにより効率的にオブジェクトとの対話を提供できます。