Oculus Touchをつかってみる
Oculus Touchが出荷され、約一月が経ちました。Oculus StoreにはOculus Touch対応コンテンツが多数並び、Oculus Touchの凄さを体験できるわけですが、一方で開発向きとなるとまだ情報が足りない状況のようです。
今回は、Oculus Touchの練習用に作成したコンテンツを取り上げ、開発のポイントを挙げていきたいと思います。
youtu.be
コンテンツは、今年大流行したアレを、Oculus Touchで体験する、というものです。
情報収取
Oculus Touchの技術情報については、以下が必読です。
- Unity+Oculus Touchメモ→こちらでSDKのインストール~Oculus Touchでものをつかむためのサンプルまで一通りわかります
- Oculus Avatar SDK を使って自分のアバターを Unity で利用する方法を調べてみた→アバター表示やグリップポーズのカスタマイズ方法がわかります
準備
Oculus Touchにて「手やアバターを表示し、なにかをつかむコンテンツを作る」ためには、以下のインストールが必要です(詳細は上記情報収集をご参照)
サンプル実行
Assets/Samples/Content/AvaterWithGrab をダブルクリックして、シーンをロードします。あとは、PlayerSettings→Other SettingsのVirtual Reality Supportedをチェックし、実行してみます。
つかむ・離す・投げる、一通りのことができます。
つかめるものを追加
まずは、サンプルで「つかめるもの」がどのようになっているかを見てみます。
ポイントは、Grabbableというスクリプトです。これはAvater Grab Sampleに含まれるスクリプトで、これを追加したオブジェクト(かつ、Collider, Rigidbodyも追加する必要あり)がつかめるようになります。
つかんだ時、離した時の振る舞いは、Grabbable#GrabBegin()、Grabbable#GrabEnd()メソッドにそれぞれ記述します。これらメソッドはvirtualメソッドですので、Grabbableクラスの子クラスを作ってこれらメソッドをオーバーライドすれば、任意のつかむ・離す際の処理を作成することができます。
Oculus Touchのバイブレーション
OVRHapticsClipを使用します。AudioClipを引数としてOVRHapticsClipを作成することで、そのAudioClipの音量に基づいた振動を作成できます。
作成したOVRHapticsClipを引数としてOVRHaptics.RightChannel.Mix()(=右側コントローラ、左側の場合はOVRHaptics.LeftChannel.Mix())を呼び出すことで、Oculus Touchが振動します。なお、振動させるためのメソッドにはMix()以外に幾つかあり、それぞれ挙動が異なります(詳細は情報収集で挙げたサイトを御覧ください)。
以下は、スタティックメソッドSE.PlaySE()を呼び出すと、効果音鳴動+振動するサンプルです。
using UnityEngine; public class SE : MonoBehaviour { public AudioSource audioSource; public OVRHapticsClip hapticClip; private static SE thisObj; void Start () { thisObj = this; hapticClip = new OVRHapticsClip(audioSource.clip); } public static void PlaySE() { if (thisObj != null) { thisObj.audioSource.Play(); OVRHaptics.RightChannel.Mix(thisObj.hapticClip); OVRHaptics.LeftChannel.Mix(thisObj.hapticClip); } } }
No Oculus Rift App ID has been provided
エディタで実行すると、問題なく実行できますが、上記のエラーがでます。Oculusサイトにて、アプリを登録してIDを取得することで、本エラーを回避できるようです(私がつくったコンテンツをエディタ上で実行する上では特に問題がなかったため、試していません)。詳細は、上記「情報収集」で挙げたサイトを御覧ください。
PP◯Pっぽい素材
- くだものの3DモデルはHD Fruits & Vegetablesを利用しました
- オフィス用品の3DモデルはPBR Stationery Objectsを利用しました
終わりに
Oculus Touchは本当にすごいです。CG空間に触る、というユーザ体験は先行していたHTC Viveをも超えるものでは、と個人的には思います。