Oculus Integration からUnity XR への移行

Unity

Oculus IntegrationOVRGrabber/OVRGrabbable から Unity XR Interaction Toolkit の XR Interactor/XR Interactable に移行する時のメモ書きです.

移行の動機

次のような理由から移行を決めました.

  • Oculus の機器以外にも対応できる
  • XR Interactive Toolkit の方が設定が直感的かつ豊富
  • OVRGrabber/OVRGrabbable はバグが放置されている

XR Controller

  • デフォルトの設定だと,XR Controller の原点は OculusTouch の A/X ボタンあたりにある.
  • コントローラを表示する場合は Model Prefab にオブジェクトを Attach する
  • Model TransformXR Controller がアタッチされているオブジェクトの子オブジェクトとして設定する.Model TransformModel Prefabが表示される.
  • Animate ModelTrue にすると Model Prefab を動かすことができる(手などに使える).
  • Model Select Transition には Select 時の Animation State に遷移するための Trigger 名を入れる.

XR Controller には Unity の Input System を使った Action-based のものとそうでないものがあります.公式サンプルが Action-based であることと,ボタンのリマップができるので Action-based なものについて話していきます.

XR Interactor

Oculus Integration とXR Interaction Toolkit では同じ動作でも次のように言い方が違います.

UnityOculus
SelectGrab
ActivateTrigger
  • Interactor.isSelectActive は物を持っている時true, 持っていない時false
  • ボタンの押し込み度合いの取得 (action は selectAction など):
float x = action.ReadValue<float>();
  • スティックの倒し度合いの取得 (rotateAnchorActionなど):
Vector2 output = action.ReadValue<Vector2>();
  • AttachTransform で持つ場所を指定する

XR Grab Intaractable

  • AttachTransform で持たれる場所を指定する

Callback の指定:

OnEnable() 内などで callback を追加します.

interactable.onSelectEntered.AddListener (callback);

OnDisable() などで callback を削除します.

interactable.onSelectEntered.RemoveListener (callback);
  • onSelectEntered : 持った時
  • onSelectExited : 離した時
  • onActivate : 引き金を引いた時
  • onDeactivate : 引き金を離した時

コメント

タイトルとURLをコピーしました