しっぽを追いかけて

ぐるぐるしながら考えています

Unity と猫の話題が中心   掲載内容は個人の私見であり、所属組織の見解ではありません

Unity + MRTK でバウンディングボックスを利用する

※ これは 2018/01/08 Unity 2017.3.0f3、Mixed Reality Toolkit 2017.2.1.4 Patch Release 時点の情報です

最新版では動作が異なる可能性がありますのでご注意ください

以前は MRDesignLab の方に入っていた BoundingBox や AppBar が新しい Mixed Reality Toolkit では含まれるようになったようです

github.com

さっそくお試し、必要環境は前回と同じく下記の通り

環境 必要条件
Unity 2017.2 以降(2017.2.1p2 が動作確認バージョンらしい)
Windows SDK 10.0.16299 以降
Visual Studio 2017 以降
Windows 10 Fall Creators Update 以降

お決まりの手順、MRTK のリリースページにある unitypackage 2つをそれぞれダウンロードして Unity 上にインポートします

UnityEditor を開いたら [Mixed Reality Toolkit] - [Configure] - [Apply Mixed Reality Project Settings] のメニューだけ実行してプロジェクト設定を調整

次に Assets/HoloToolkit-Examples/UX/Scenes/BoundingBoxGizmoExample のサンプル実装のシーンを開いてみます

f:id:matatabi_ux:20180415191313p:plain

例によって並んでる物体4つ

f:id:matatabi_ux:20180415191349p:plain

Bouding Box のみと、片手つかみ、両手つかみ、さらにフラットなタイプのものの組み合わせがサンプルとして用意されているようです

1つの立体を選択してみると BoundingBoxRig.cs のスクリプトがアタッチされていました

f:id:matatabi_ux:20180415191638p:plain

設定項目は下記のような感じ

項目名 説明
Flattened Axis 2D オブジェクトを対象とする場合に選択する平坦化オプション
Do Not Flatten : 平坦化なし
Flatten X : X 軸平坦化
Flatten Y : Y 軸平坦化
Flatten Z : Z 軸平坦化
Flatten Auto : 自動で平坦化
Scale Handle Material 拡縮用ハンドルのマテリアル
通常は BoundingBoxHandle でよい
Rotate Handle Material 回転用ハンドルのマテリアル
通常は BoundingBoxHandle でよい
Interacting Material ハンドルを注視した際に表示するハイライト用マテリアル
通常は BoundingBoxHandleGrabbed でよい
Scale Rate 拡縮速度比率
Max Scale 最大拡縮倍率
Rotation Type 回転の座標系
Object Coordinates : オブジェクト座標で回転
Global Coordinates : グローバル座標で回転
Hand Motion To Rotate 回転ジェスチャ入力方法
Hand Rotates To Rotate Object : 手の回転を受けて回転
Hand Moves To Rotate Object : 手の平行移動を受けて回転
Bounding Box Prefab バウンディングボックス用プレハブ
通常は BoundingBoxBasic でよい
App Bar Prefab AppBar用プレハブ
通常は AppBar でよい

片手でつかめる設定のものは追加で HandDraggable.cs がアタッチされていました

f:id:matatabi_ux:20180415205219p:plain

両手ジェスチャができるものは前回いじってみた TwoHandManipulatable.cs がアタッチされています

f:id:matatabi_ux:20180415205411p:plain

最後のフラットな物体に関しては Flattened Axis が Flatten Auto になっているだけの模様

ビルドして実行してみると・・・

f:id:matatabi_ux:20180422171327g:plain

こんな感じに扱えるみたいですね