MRDesignLab -App Bar & Bounding Box-

#HoloLens#MixedReality#Unity

  App BarとBounding Boxはオブジェクトを操作するのに役立ちます。 MRDesignLabで提供されます。 詳しい説明はGithubを確認ください。

App Bar

画像の操作盤のようなものです。 Adjustをタップするとオブジェクトを次項のBounding Boxで操作することができます。 Removeをタップするとオブジェクトを削除することができます。

Bounding Box

オブジェクトを囲う青い枠です。 角の立方体をドラッグすると拡大縮小、 辺の中点をドラッグすると回転、 面をドラッグすると移動ができます。

オブジェクトをBoundingBoxで操作する

この場合は、Add ComponentでBounding Box Targetを追加します(自動でCompound Buttonも追加される)。 それだけ。簡単。 ただしそのオブジェクトに対してGazeやAir Tapで操作をしたい場合は、Bounding Box Shellがオブジェクトを囲ってしまって、直接目的のオブジェクトの情報を取得できなくなってしまいます。 そういう場合は以下のように動的にBounding Box Targetに追加します。

動的にBounding Box Targetに追加

単純にスクリプトからオブジェクトにBoundingBoxTargetを追加するだけでは効きません。 まずは以下のページを参照して、BoundingBoxTargetのStartメソッドに追記します。

  任意のイベント内で以下のコードが実行されるよう追記します。

yourObj.AddComponent<BoundingBoxTarget>();
ManipulationManager.Instance.ActiveBoundingBox.Target = yourObj;

  これにより、例えばボタンを押したときにBounding Boxを表示する、といったことができるようになります。 (App Barは表示されません)   ただし、一度Bounding Boxを有効にしてしまうとBounding Boxを削除しないとずっと残り続けます。

デフォルト設定を変更する

上記のようにスクリプトでコンポーネントを追加したときのBoundig Boxのデフォルト設定はBoundig Box Shellプレハブに定義されています。 以下のように、検索で探したら例えばRotateX、RotateZもデフォルトで有効にすることができます。

Bounding Boxを削除

前項で有効にしたBounding Boxが残っていると、オブジェクトがこれによって囲われた状態になってしまいます。 そのため、オブジェクトに追加されたコンポーネントやBounding Box自体の削除をする必要があります。

ManipulationManager.Instance.ActiveBoundingBox.Target = null;
Destroy(yourObj.GetComponent<BoundingBoxTarget>());
Destroy(yourObj.GetComponent<Buttons.CompoundButton>());
Destroy(GameObject.Find("BoundingBoxShell(Clone)"));

  以上の組み合わせで任意にBounding Boxを有効にしたり無効にしたりすることができます。