読者です 読者をやめる 読者になる 読者になる

【Unity/VR】Oculus TouchでVRTKを使ってテレポートや掴むを簡単に実現

  • 環境
    • Windows 10
    • Unity 5.5.1f1
    • Oculus Touch
    • VRTK 3.1.0

VRTKとは

VRTK(Virtual Reality Toolkit)とは、VRなら必ずやりたくなるようなテレポート(ワープ)や掴むといったことが コードを書かずに簡単に実現できてしまうという素晴らしいアセットです。 しかも無料です。

VRTK - Virtual Reality Toolkit

使い方は、動画の解説がわかりやすくこれを見るだけでできるようになりますが、 備忘録としてメモしておきます。

www.youtube.com

実装

準備

はじめに以下の準備をしておきます(ダウンロード:Unity | Oculus)

  • Oculus Utilities for Unity 5
  • Oculus Avatar SDK

ダウンロード後、UnityパッケージからAssetsに加え、以下をシーンに配置します。

  • OVR/Prefabs/OVRCameraRig
  • OvrAvatar/Content/Prefabs/LocalAvatar

次に、VRTKをAssetStoreよりダウンロードし、Assetsに加え、
以下のようにGameObjectを配置し、VRTKにVRTK_SDK ManagerのScriptを追加します。

VRTK
    + VRTK_SDK Manager
    Left
    Right

(印がないもの … GameObject, + … Component)

ポインター

f:id:chocolattips:20170302194916g:plain

ジョイスティックを押すとポインターが出るようになります。 動画ではVRTK_SimplePointerを使用していますが、deprecatedのようで、 代わりにVRTK_PointerとVRTK_Straight Pointer Rendererを使用します。

VRTK
    Left
        + VRTK_Controller Events
        + VRTK_Pointer
        + VRTK_Straight Pointer Renderer
            //VRTK_PointerのPointer RendererにVRTK_Straight Pointer Rendererをセット
    Right
        //Leftと同様

ワープ

f:id:chocolattips:20170302194958g:plain

上記のポインターを設定後、PlayAreaにTeleportを追加すると、ポインターで指定した位置にワープできます。 (ただし、オブジェクトがある緑の場所のみ)

VRTK
    Left
        ...
    Right
        ...
    PlayArea
        + VRTK_BasicTeleport

掴む

f:id:chocolattips:20170302195036g:plain

まず、手の設定をします。

VRTK
    Left
        + VRTK_Interact Grab //セットするとEvents, Actions, Touchも追加される
        + VRTK_Controller Events
        + VRTK_Controller Actions
        + VRTK_Interact Touch
    Right
        //Leftと同様

適当に地面を用意し、掴む対象のオブジェクト(Cube)を配置します。

Cube
    ...
    + RigidBody
    + VRTK_Interactable Object
        //Is Grabbableにチェック
    + VRTK_Fixed Joint Grab Attach
        //VRTK_Interactable ObjectのGrab Attach Mechanic Scriptにセット

別の手で掴み直す

f:id:chocolattips:20170302195120g:plain

上記の掴むに加えて以下を追加します。

Cube
    ...
    + VRTK_Swap Controller Grab Action
        //VRTK_Interactable ObjectのSecondary Grab Action Scriptにセット

これで片方の手でつかんだものをもう一方でつかみ直すことができます。