(この記事の使用環境: Unity5.5.0f3 Personal、Windows10、SteamVR Plugin 1.2.0、VRTK3.0.1)


VR用アセット「VRTK」の Example 043_Controller_SecondaryControllerActions の解説です。
オブジェクトを落として特定の位置にスナップさせるデモです。
SnapCrab_NoName_2017-2-16_14-11-47_No-00

■公式サイトの解説

VRTK公式サイトでこのExampleの解説文及び解説動画を見ることができます。ただし、動画に関してはVRTK旧バージョンのときに作られたものであり、VRTK3.0(以降)では設定等が異なっている場合があることに留意してください。動きを中心に見てもらえれば良いかと思います。

このExampleの解説動画
(このExampleの公式解説動画はまだありません) 


■VRTKのセットアップ方法および使用されているスクリプトの解説


■Exampleの解説

VRTK/Examples 内にある当該番号のシーンを呼び出すことで、デモを動かしてみることができます。

このデモシーンでは、一方のコントローラーで持ったオブジェクトをもう一方のコントローラーでつかんで、引っ張って伸縮させたり、支え持って向きをコントロールしたりできます。
SnapCrab_NoName_2017-2-16_14-11-47_No-00

以下、シーンに配置されているオブジェクトについての概要説明です。
  • ScaleObjects: Cube、Sphere および FlyingSaucer(組み合わされたオブジェクト)が配置されている。これらには VRTK_InteractableObject 、VRTK_AxisScaleGrabAction その他のコンポーネントがアタッチされており、手に持つことができ、また手に持った状態でもう一方のコントローラーで掴んで引っ張ることでスケールを伸縮させることができる。
    各オブジェクトで VRTK_AxisScaleGrabAction の設定が異なっており、X軸・Y軸・Z軸 すべての方向に伸縮できるものもあれば、一部の軸がロックされてその方向には伸縮できないものもある。FlyingSaucer は Uniform Scaling にチェックが入っているため、形状を保ってXYZすべての軸方向に一律に伸縮する。
    SnapCrab_NoName_2017-2-16_14-28-18_No-00
    代表して、「Cube_ScaleNoY」の設定。VRTK_AxisScaleGrabAction の Lock Y Axis がチェックされているため、Y軸方向には伸縮しない。
    SnapCrab_NoName_2017-2-16_14-31-31_No-00

  • TwoHandObjects: LongGun(長い銃) と Staff(杖)の2種類のオブジェクトが配置されている。どちらにも VRTK_ControlDirectionGrabAction がアタッチされているため、一方のコントローラーで持ったオブジェクトをもう一方のコントローラーで支え持ち、向きをコントロールできる。
    LongGun のほうは、VRTK_ChildOfControllerGrabAttach の Right Snap Handle にスナップポイントが設定されているため、一方のコントローラーで持った際、設定された位置・回転でスナップされる。その状態でさらにもう一方のコントローラーで掴むことで支え持って向きを制御し、支え持つコントローラーを離すと、元のスナップ位置・回転に戻る。元のスナップ位置・回転に戻るまでに要する時間は VRTK_ControlDirectionGrabAction の Release Snap Speed の値で調整できる。
    SnapCrab_NoName_2017-2-16_14-42-3_No-00
    SnapCrab_NoName_2017-2-16_14-56-26_No-00

  • RightController、LeftController: 左右のコントローラー用のVRTKスクリプトがアタッチされているゲームオブジェクト。VRTK_InteractGrab スクリプトがアタッチされているため、インタラクタブルオブジェクトを掴むことができる。

今回は以上です。