VOYAGE GROUP VR室ブログ

VOYAGE GROUP VR室のブログです。コンテンツの紹介や制作方法、イベントレポートなどについて書きます。原則毎週水曜日更新。

HTC Vive向けアプリケーション開発支援ライブラリVRTKを使ってVR内のアクションを実装してみた

糖質制限を始めてから生活習慣が改善され体調がすこぶるよくなったVR室の@daybysayです。

さて、今回も懲りずにHTC Vive向けのコンテンツ開発について勉強したいと思います。

今回紹介するのは VRTK というOSSのVRコンテンツ開発用ライブラリです。

開発したアプリは↓で公開しています。

github.com

目次

VRTKとは

VRTKは、VRコンテンツ開発を支援するコンポーネント、およびサンプルを多数備えたライブラリです。

SteamVRのSDKに依存しており、現状はHTC Viveのみ対応です。

が、現状でもGearVR対応のPRが出ていたり、今後ほかのプラットフォームに対応していこうという姿勢も伺えます。

github.com

また、ドキュメントあるのと、各所に動画で説明が入っているので初心者にもやさしい(英語だけど)感じになっています。

私が前回実装したような、オブジェクトをつかんで投げる、という実装も簡単にできたり、テレポートや壁に上る機能やサンプルもあったりするので、 このライブラリを使いこなすだけでVRの表現力がかなり向上すると思われます。

ちなみに今、マスコットの豚の名前を募集しているので、アイデアがある方は投稿してみてはいかがでしょうか。

VRTKの使い方

さっそくですが、VRTKを使う準備をしましょう。

VRTKはUnityのアセットストアで提供されているのでそちらをインストールします。

また、SteamVRプラグインに依存しているので、そちらもアセットストアからインストールしておきましょう。

SteamVRのプラグインの推奨設定はこちらをご参照ください。

vr-lab.voyagegroup.com

サンプルを動作させる

VRTKを使うことで実装できるようになる機能は多くありますが、ベースになる部分としてまずは下記を体験してみる + コードを追ってみるのが良いのではないかなと思います。

005_Controller_BasicObjectGrabbing

https://media.giphy.com/media/3o6Zt3qFCgDpasRjpe/giphy.gif

009_Controller_BezierPointer

https://media.giphy.com/media/l0MYCsIJuSB3sSvYc/giphy.gif

023_Controller_ChildOfControllerOnGrab

https://media.giphy.com/media/3oriNY1AbSl4Si0H60/giphy.gif

037_CameraRig_ClimbingFalling

https://media.giphy.com/media/3o7TKIFVByn5K4Sj8Q/giphy.gif

どこかで見たことあるようなアクションが再現されています!

これらを実装するのが容易にできてしますVRTK、末恐ろしい子・・!

使ってみる

せっかくなので、VRTKを使って簡単な射的ゲームを実装してみたいと思います。 細かい設定などはリポジトリを参照してください。

まずは銃のアセットをこちらからダウンロード。

今回はAK47にしましょう。

まずは銃を置く台を適当に作り、その上に銃をおきます。銃にはRigidBodyとBoxColliderコンポーネントをいい感じにセットしましょう。

このときにテクスチャも設定しておくと気分が乗ってよいです!!

f:id:DayBySay:20161026022252p:plain

次にコントローラに VRTK_InteractGrabを追加します。このときVRTK_InteractTouch, VRTK_ControllerActions, VRTK_ControllerEventが自動で追加されます。

そしてVRTK_InteractUseも追加します。これをすることで銃を持つことと、持っているときのコントローラに対するアクション(トリガーを引くなど)を取得できるようになります。

f:id:DayBySay:20161026022258p:plain

最後に、銃にGunスクリプトを追加します。Gunスクリプトはサンプルで用意されている銃のスクリプトになります。

f:id:DayBySay:20161026022237p:plain

このGunスクリプトは、自身についているBulletという名前のオブジェクトを弾として認識し、トリガーがひかれたときにForwardの方向に力をかけるような実装になっています。

ということで、Bulletという名前でSphereを作成し、サイズを調整したうえで銃口の手前にセットし、Activeを切ります。

f:id:DayBySay:20161026022847p:plain

これで銃側の設定はOKです。

あとはいい感じに的を用意します。

f:id:DayBySay:20161026022239p:plain

早速撃ってみましょう!

https://media.giphy.com/media/l0MYG3kOGRgjhM5hu/giphy.gif

うん、ちょっとしょぼいけど撃ててます!もうちょっと工夫すればかなりきもちいことになるぞこれは!!

まとめ

  • VRTKを使うと簡単にVR内アクションを実装できる
  • 豚の名前募集中

VRTKを使うと簡単に実装が行なえますが、内部的にはSteamVRプラグインに依存しているので、プラグイン側の実装を理解することで全体的なパフォーマンスの向上など可能になるかもしれませんね。

簡単ですが今週は以上です。