MRDesignLab -App Bar & Bounding Box-

 

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を有効にしたり無効にしたりすることができます。

コメントを残す