本日は MRTK の技術調査枠です。
MRTKを用いてBoundingBoxによるドラッグ操作を設定する方法をまとめます。
前回記事のプロジェクトを使いまわします。
bluebirdofoz.hatenablog.com
前回記事に従って、Cube が配置された UWP プロジェクトを作成します。
ドラッグ操作を行いたいオブジェクトに Two Hand Manipulatable コンポーネントを追加します。
コンポーネントをアタッチしたら「BoundingBoxPrefab」に「HoloToolkit/UX/Prefabx/BoundingBoxes/BoundingBoxBasic.prefab」を設定します。
「BoundingBoxPrefab」はドラッグ時のビジュアルオブジェクトの設定です。
その他、「ManipulationMode」「ConstraintOnRotation」「OneHandMovement」の設定を行います。
・ManipulationMode:ドラッグで行う操作を決定します。「スケール変更(Scale)」「回転操作(Rotate)」「オブジェクト移動(Move)」の組合せで設定します。
・ConstraintOnRotation:回転操作を行う際の軸設定を行います。「X軸のみ」「Y軸のみ」「Z軸のみ」「制限なし」から選択します。
OneHandMovement:片手のタップ操作時にオブジェクト移動を行うか否かを設定します。
この状態でビルドして HoloLens にインストールしてみます。
以下のようにオブジェクトを片手でタップするとオブジェクト移動が行えます。
また、両手でタップするとスケール変更や回転操作が行えます。
「HostTransform」の設定項目はトランスフォーム変更の対象オブジェクトを指定します。
デフォルトのまま設定しない場合、スクリプトをアタッチしたオブジェクトがトランスフォームの変更対象になります。
「HostTransform」を設定することで、タップ対象のオブジェクトとトランスフォーム変更対象のオブジェクトを分けることが可能です。
インストールして動かすと、以下の通り、Sphere オブジェクトの方がドラッグ操作の影響を受けるようになりました。