操作ハンドラー — MRTK2

操作ハンドラー

ManipulationHandler スクリプトを使用すると、オブジェクトの移動、拡大と縮小、回転を片手または両手で行えるようにすることができます。 特定の種類の変換以外はできないよう操作は制限することができます。 このスクリプトは、HoloLens 2 多関節ハンド入力、ハンドレイ、HoloLens (第 1 世代) ジェスチャ入力、イマーシブ ヘッドセット モーション コントローラー入力など各種の入力に対応します。

操作ハンドラーの使用方法

GameObject に ManipulationHandler スクリプト コンポーネントを追加します。 オブジェクトには、つかむことのできる範囲に合わせて必ずコライダーも追加してください。

また、近接多関節ハンド入力にオブジェクトが反応するようにするには、NearInteractionGrabbable スクリプトも追加します。

Unity エディターでの操作ハンドラーの使用

インスペクターのプロパティ

操作ハンドラーの構造

[Host Transform](ホスト トランスフォーム) ドラッグの対象となるトランスフォーム。 既定では、コンポーネントのオブジェクトになります。

[Manipulation Type](操作の種類) オブジェクトを片手で操作するのか両手で操作するのかを指定します。

  • [One handed only](片手のみ)
  • [Two handed only](両手のみ)
  • [One and Two handed](片手と両手)

[Two Handed Manipulation Type](両手の操作タイプ)

  • [Scale](拡大縮小): 拡大縮小のみ許可されます。
  • [Rotate](回転): 回転のみ許可されます。
  • [Move Scale](移動、拡大縮小): 移動と拡大縮小が許可されます。
  • [Move Rotate](移動、回転): 移動と回転が許可されます。
  • [Rotate Scale](回転、拡大縮小): 回転と拡大縮小が許可されます。
  • [Move Rotate Scale](移動、回転、拡大縮小): 移動、回転、拡大縮小が許可されます。

操作ハンドラー

[Allow Far Manipulation](遠隔操作を許可) ポインターによる遠隔対話を使用して操作を実行できるかどうかを指定します。

[One Hand Rotation Mode Near](片手回転モード - 近接) 片手またはコントローラーで近くをつかんだときのオブジェクトの動作を指定します。

[One Hand Rotation Mode Far](片手回転モード - 遠隔) 片手またはコントローラーで遠くをつかんだときのオブジェクトの動作を指定します。

[One Hand Rotation Mode Options](片手回転モードのオプション) 片手でつかんだときのオブジェクトの回転を指定します。

  • [Maintain original rotation](元の回転を維持): 移動時にオブジェクトを回転させません。
  • [Maintain rotation to user](ユーザーに対する回転を維持): ユーザーに対する X/Y 軸のオブジェクトの元の回転を維持します。
  • [Gravity aligned maintain rotation to user](ユーザーに対して回転を維持 - 垂直): ユーザーに対してオブジェクトの元の回転を維持しますが、オブジェクトを垂直にします。 境界コントロールを備えたオブジェクトに適しています。
  • [Face user](ユーザーの方を向く): オブジェクトが常にユーザーと対面するようにします。 スレートやパネルに適しています。
  • [Face away from user](ユーザーの反対側を向く): オブジェクトが常にユーザーの反対側を向くようにします。 前後逆に構成されたスレートやパネルに適しています。
  • [Rotate about object center](オブジェクトの中心を軸周りに回転): 多関節ハンドとコントローラーでのみ機能します。 手またはコントローラーの回転を使用し、オブジェクトをその中心点を軸に回転させます。 離れた場所から詳しく眺める場合に適しています。
  • [Rotate about grab point](把持点を軸周りに回転): 多関節ハンドとコントローラーでのみ機能します。 手またはコントローラーで保持されているかのようにオブジェクトを回転させます。 詳しく眺める用途に適しています。

[Release Behavior](リリース動作) オブジェクトが離されたときの物理的な移動の動作を指定します。 対象のオブジェクトに Rigidbody コンポーネントが追加されている必要があります。

  • Nothing
  • すべて
  • [Keep Velocity](速度を維持する)
  • [Keep Angular Velocity](角速度を維持する)

[Constraints on Rotation](回転に対する制約) オブジェクトを対話的に操作したときの回転軸を指定します。

  • なし
  • [X-Axis Only](X 軸のみ)
  • [Y-Axis Only](Y 軸のみ)
  • [Z-Axis Only](Z 軸のみ)

[Use Local Space For Constraint](制約にローカル空間を使用する) ワールド空間の軸に対して制約を適用するか、ローカル空間の軸に対して制約を適用するかを切り替えます。

[Constraints on Movement](移動に対する制約)

  • なし
  • [Fix distance from head](頭からの距離を固定)

[Smoothing Active](スムージングの有効化) スムージングをアクティブにするかどうかを指定します。

[Smoothing Amount One Hand](片手でのスムージングの量) 移動、拡大縮小、回転に適用するスムージングの量を指定します。 スムージング 0 は、スムージングを行わないことを意味します。 最大値は、値が変化しないことを意味します。

events

操作ハンドラーには、次のイベントがあります。

  • OnManipulationStarted: 操作が開始されたときに発生します。
  • OnManipulationEnded: 操作が終了したときに発生します。
  • OnHoverStarted: 近くまたは遠隔から手またはコントローラーを操作可能なオブジェクトにホバーしたときに発生します。
  • OnHoverEnded: 操作可能なオブジェクトに対して近くまたは遠隔からホバーした手またはコントローラーを離したときに発生します。