MRが楽しい

MRやVRについて学習したことを書き残す

MRTKv2.xでオブジェクトを両手でポイントして移動・回転・拡縮する

本日はMRTKv2.xの小ネタ枠です。
MRTKv2.xでオブジェクトを両手でポイントして移動・回転・拡縮する方法を記事にします。

ObjectManipulator

MRTKのObjectManipulatorは、片手か両手を使ってオブジェクトの移動、回転、拡大縮小を行うコンポーネントです。
ObjectManipulatorは様々な入力に対応しているため、多関節ハンドや視線レイとタップ、モーションコントローラなどでも機能します。
learn.microsoft.com

サンプルプロジェクトの作成

MRTKを使った基本プロジェクトの環境構築手順は以下の記事を参照ください。
bluebirdofoz.hatenablog.com

ObjectManipulatorを設定する

ObjectManipulatorを使ってオブジェクトを操作する場合、対象のオブジェクトにColliderコンポーネントが設定されている必要があります。

操作したいオブジェクトに[Add Component]からObjectManipulatorコンポーネントを追加します。

ObjectManipulatorコンポーネントと自動で必須コンポーネントのConstraintManagerコンポーネントが追加されます。
ConstraintManagerコンポーネントは移動・回転・拡縮の制約を設定するために利用します。

ObjectManipulatorでは様々な操作の設定が可能です。デフォルト設定は以下の通りです。

Host transform(操作対象)

操作の対象となるオブジェクトトランスフォーム。
デフォルト設定ではコンポーネントを設定したオブジェクトが指定されています。

Manipulation type(操作の種類)

オブジェクトの操作を片手のみ、または、両手同時で行うかを指定します。
デフォルトでは片手のみ、両手どちらの操作も許可されていています。

Allow far manipulation(遠隔操作を許可)

ポインターによる遠隔操作を行うかどうかを指定します。
デフォルトでは遠隔操作が可能になっています。

その他、片手のみの操作や両手同時操作の設定が変更できます。

動作確認

シーンを再生して動作を確認します。

MRTKのシミュレータ上では左Shiftキーで左手、Spaceキーで右手を出すことができます。
手を出した状態でマウスを左クリックすると手がタップ動作するのでオブジェクトを掴むことができます。

手を出した状態で左Ctrlキーを押しながらマウスドラッグすると手を捻ることができます。
これにより回転動作もシミュレータ上で確認できます。

Tキーで左手の状態を固定、Yキーで右手の状態を固定できるのでこれを利用してシミュレータ上で両手操作を確認することもできます。