XR Interaction Toolkit 2.0 正式リリース|1.0 までの違い【XR Interaction Toolkit 2.0】
- はじめに
- 検証環境
- XR Interaction Toolkit
- 公式資料
- 2.0.0 版と 1.0.0 版の違い
- 終わりに
はじめに
2022年2月10日にて,XR Interaction Toolkit は pre がなくなり,2.0.0 で正式リリースとなりました. 本記事では XR Interaction Toolkit 2.0 で追加された機能や変更点,非推奨になった設定に関して一部紹介します.
検証環境
- Unity 2021.2.14f1
- Universal RP 12.1.5
- XR Plugin Management 4.2.1
- XR Interaction Toolkit 2.0.0
XR Interaction Toolkit
Unity公式記事はこちら.
XR Interaction Toolkit は Unity 公式が提供しているクロスプラットフォームのAR/VR体験用のフレームワークです.
Unity 2019.4 以降では,Unity XR プラットフォームは大きく変わってます. こちらのUnity公式記事をご覧ください.
公式資料
Unity 公式が出しているドキュメントです. docs.unity3d.com
Unity 公式が出しているサンプルプロジェクトです. 2.0.0-pre ではサンプルは止まってたのですが正式リリースに合わせてサンプルプロジェクトも更新されました. github.com
XR Interaction Toolkit を触れるならばこちらのリポジトリを落として体験するのが手っ取り早いでしょう.
2.0.0 版と 1.0.0 版の違い
詳細はこちらに掲載されています. docs.unity3d.com
個人的に感じた大きな違いのみを抜粋します.
新機能 (Added)
Interaction Layers (XR Interaction Toolkit 専用の Interaction 用の Layer)
Project Settings に XR Interaction Toolkit の設定が加えられ, XR Interaction Toolkit 専用の Interaction Layers が追加されました.
こちらは結構大きな新機能かつ変更点ですが,Layer Check が Unity Physics の LayerMask ではなく 新しく導入された Interaction Layer Mask を利用するように変更されました.
Interaction Layer Mask は Unity Physics LayerMask とは独立しています.
Edit > Project Settings > XR Interaction Toolkit の画面から「Run Interaction Layer Mask Updater」を 押下することで,移行を行うことができます.
2.0.0 を最初にインストールする時にも,移行するかどうかのダイアログが表示されます.
Select Mode
Interactables に「同時に Select できる Interactor の数を制御する」Select Mode のプロパティが追加されました. これを利用することで複数の手で同時に操作できるように設定が可能になります.
XR Grab Interactable のように Inspector で Multiple を無効化にしたい場合は,コンポーネントスクリプトに
[CanSelectMultiple(false)]
を設定します.
スクリプトからわかる通り,XR Grab Interactable の場合は Multiple が無効なのはデフォルトのようです. 主に XR Simple Interactable 向けだと思います.
firstInteractableSelected と firstInteractorSelecting プロパティの追加
Base Interactable に firstInteractable,Selected Base Interactor に firstInteractorSelecting のプロパティが追加されました. 現在 Select されているスタックで最初のものを返す機能です.
Allow Hovered Activate オプション
Interactor に Allow Hovered Activate の項目が追加されました. Select 状態になっていないが Hovered 状態になっている Interactable に対して, 現在 Selecting 状態になっていない Interactor が Activate イベントと Deactivate イベントを発火できるようになります. (ホバー状態でトリガーボタンを押すことで何等かのイベントを発火することが出来るようになります)
Movement Type を Select 中に 動的に変更可能に
Grab Interactable の Movement Type を Select 中に変更できる機能が追加されました.
MovementType は VelocityTracking,Instantaneous,Kinematic の3種類あります.
ゲームパッドとジョイスティック入力のサポート
XRUI Input Module を利用した場合,ゲームパッドとジョイスティック入力がサポートされるようになりました.
変更点 (Changed)
Base Interactor と Base Interactable のすべてのメソッドのシグネチャ変更
Select Mode が導入されたことにより一部のプロパティが変更
Socket Interactor の挙動変更
- Select Mode が Single の時にのみ Select 状態を維持するように変更.
- Grab Interactable だけでなく,全ての Interactable コンポーネントに対して Hover 時の Mesh を表示できるように変更.
EnterEventArgs / ExitEventArgs に manager プロパティ追加
HoverEnterEventArgs
,HoverExitEventArgs
,SelectEnterEventArgs
,SelectExitEventArgs
に
manager
プロパティが追加されました.XR Interaction Manager を参照することができます.
Interaction Layer Mask のチェック方法の変更
今までは Interaction Layer Mask のチェックが Interactor.CanHover
,Interactor.CanSelect
,
Interactable.IsSelectableBy
,Interactable.IsHoverableBy
で行われていましたが,
XR Interaction Manager 側の責務になりました.
XR Interactor に OnTriggerStay() を追加
XR Direct Interactor と XR Socket Interactor に OnTriggerStay()
が追加されました.
最低サポートバージョン変更
2.0.0 から Unity 2019.3 以上ではなく,Unity 2019.4 LTS 以上が最低サポートバージョンになりました.
非推奨 (Deprecated)
XR Rig の廃止
XR Rig が廃止され,新しい依存パッケージの XR Core Utilities の XROrigin に置換されます. XR Rig と XR Origin は互換性があるので,2.0.0 にアップデートする際に XR Rig は自動的に XR Origin コンポーネントに置換されます.
非推奨になったプロパティ
XRBaseInteractor.requireSelectExclusive
→ Interactable のisSelected
を利用に変更XRRayInteractor.originalAttachTransform
→rayOriginTransform
利用に変更XRBaseController.GetControllerState/SetControllerState
→ currentControllerState プロパティに移動XRControllerState.poseDataFlags
→XRControllerState.inputTrackingState
に変更- XRControllerState のコンストラクタが廃止.
inputTrackingState
パラメタが必須に. XRControllerRecording.AddRecordingFrame(double, Vector3, Quaternion, bool, bool)
→AddRecordingFrame(XRControllerState)
またはAddRecordingFrameNonAlloc()
に変更.
修正点 (Fixed)
Socket Interactor 関連
間違った Hover Mesh が表示されたりする問題が解消.
Unity Editor 再起動時の Controller Recorder のデータが消える問題
Unity Editor 再起動時の Controller Recorder のデータが消える問題が解消されています.
Interactor が無効化した後でもホバー状態が残っていた問題
XR Direct Interactor と XR Socket Interactor が非活性または破棄された後でも XR Grab Interactable が Hover 状態のままになっていたのを修正.
終わりに
Change Log の一部のみを取り上げておりますが,検証が進み次第この記述も重要と感じたら随時更新される予定です.