XR Ray Interactor を用いて VR 物体を遠隔的に掴む【XR Interaction Toolkit】

今回の記事は XR Interaction Tookit の XR Ray Interactor を用いてVR物体を遠隔的に掴んでみます.

前回の記事

xrdnk.hateblo.jp

実行環境

  • Unity 2019.4.6f1
  • XR Interaction Toolkit 0.9.4-preview

LeftHand Controller と RightHand Controller の中身

XR Rig をデフォルトのままで配置すると,中身はMain Camera,LeftHand Controller,
RightHand Controller であることは前回の記事に書いてあります.

Hand Controller のコンポーネントを見てみると,XR Controller,XR Ray Interactor,
Line Renderer,XR Interactor Line Visual があります.

XR Controller コンポーネント

コントローラになる基本コンポーネントです.
主に注目するべきところは,Controller Node,Select Usage でしょうか.

Controller Node

どのデバイスがコントローラになるのかを設定します.
Left Hand,Right Hand 以外にも Eye,Head,Tracking Reference...などもあります.

Select Usage

コントローラで選択を行いたい場合に,どのボタンを利用するか設定します.

Unity XR Input の一覧を一度見るといいと思います.

docs.unity3d.com

f:id:xrdnk:20200803084608p:plain

XR Ray Interactor,Line Renderer,XR Interactor Line Visual コンポーネント

この3つのコンポーネントはセットだと思います.

XR Ray Interactor は Ray を飛ばして物体とインタラクション出来るようにするためのコンポーネントです.
Line Renderer と XR Interactor Line Visual は Ray Interactor のためのコンポーネントで,
デフォルトだとValid Color Gradient で物体とインタラクション出来る状態の場合は白色に,
Invalid Color Gradient で物体とインタラクション出来ない場合は赤色になってます.

f:id:xrdnk:20200803085348j:plain

XR Grab Interactive を用いて掴むまで

XR Grab Interactive は XR Interaction Toolkit が提供しているVR物体を掴むためのAPIです.

Class XRGrabInteractable | XR Interaction Toolkit | 0.9.4-preview

掴みたい物体にこちらのコンポーネントを付ければ大丈夫です.

f:id:xrdnk:20200803085540p:plain

Attach Transform で掴む場所を変える

XR Grab Interactable の Attach Transform に掴みたいTransformを設定することができます.

f:id:xrdnk:20200803210709p:plain

例えば,サンプルプロジェクトの Sword は Attach という空オブジェクトに設定されてます.

f:id:xrdnk:20200803214439p:plain

Movement Type で物体の動きのタイプを変える

Enum XRBaseInteractable.MovementType | XR Interaction Toolkit | 0.9.4-preview

Instantaneous

物体のTransformがAttach Pointと一致するようになります.
Transformが直接更新されるため,物体のRigidbodyは掴まれている間,
無効化され,いわゆる「ジャダー」を引き起こすのを防ぎます.

Kinematic

こちらは物体のTransformではなく,Rigidbodyを更新しています.
Instantaneous に比べて,やや「ジャダー」を引き起こします.
また,Instantaneousと違い,描写(視覚的表現)が異なります.

VelocityTracking

物体のRigidbodyに速度と加速度が追加され,Rigidbodyに力を加えながら,
Attach Pointに追従するようになります.「ジャダー」を引き起こしやすいです.

実際に掴んでみる


XR Ray Interactor Sample (2020.08.03)

終わりに

遠隔的に VR 物体を遠隔的に掴むことができました.
次回は XR Direct Interactor を用いて VR 物体を直接的に掴もうと思います.

gifでは容量10MBがそろそろキツイため,ついに技術アカウントで YouTube に動画投稿してしまった….