トマシープが学ぶ

Unity/VR/AR/デザイン好きのミーハー 記事内容は自分用のメモです

HTCVive用のVRをUnityで作りたい

www.nicovideo.jp

この動画を見て同じようなことをやってみたいと思いました。
HTCViveは研究室にあるやつを使います。

bibinbaleo.hatenablog.com

とりあえずサンプルや公開されているものを動かすところまでやって見ます。

SteamVR Plugin 

 ViveをUnityで使うのに必要なプラグインです。これがないと始まらないので、アセットストからダウンロードしました。
サンプル
SteamVR>Scenes>exampleにあるサンプルを実行したら、すぐにヘッドセットとコントローラーが同期しました。すっごーい
次に新しいシーンを作って、デフォルトのカメラを消して、プレハブの中にあるCameraRigを入れると、サンプルと同じようにヘッドセットとコントローラーが同期します。もうこれだけでとりあえず、CGで作った部屋の中をVRで見渡すということはできるね。

VRTK

コントローラーをノーコーディングでいろいろ動かしたい人向けのアセット。最初の動画もこれを使っている。 
https://www.assetstore.unity3d.com/jp/#!/content/64131

ものをつかんだり、移動したりできる。
入れたらサンプルを動かしてみる。
注意点
 ①ものをつかむのは裏のトリガーではなく、サイドのグリップボタン
②Unity5.6ではコントローラーが表示されないが、CameraRig>Camera(head)>Camera(Eye)に「Steam VR_UpdatePosesスクリプトをつけると表示される。スクリプトはSteamVR>Scriptの中にある。検索でposeと打つと見つけやすい。
サンプルとかを試すときもいちいちつけないといけないのでめんどくさい。Unity5.5とかでやったほうがいいのかも?
 
③VRTK3.0になって使い方が変わったので、過去の記事とかを参考にするときはその記事が使っているバージョンをよく確かめたほうがいいかも。
 

作り方

サンプルを触ったら、オリジナルのシーンを作ってみる。SteamVRからCameraRigを入れておいた上で、

CreateEmptyで適当に空のオブジェクトを作り(VRTKと名前をつけた)
そこにVRTK>Script>UtilitiesにあるVRTK_SDKManagerをつける。
インスペクターのSDK4つを選択からSteamVRにする。
下にあるAuto~ボタンを押す。
 
VRTKオブジェクトの下に、また空のオブジェクトを作り(Leftと名前をつけた)、そこにコントローラーに実装したいスクリプトをつけていく。
左右同じなら、一つに全部つけてからゲームオブジェクトをコピペしてrightなどの名前に複製する。
 
例えば
つかむ動作ならコントローラーにVRTK_InteractGrab
動かす対象となるキューブなどのオブジェクトに
VRTK_InteractableObjectスクリプトをアタッチし、インスペクタで「IsGrabbable」にチェックを入れる
 
移動ならコントローラーに
コントローラを使う為の「VRTK_ControllerEvents」と、ポインタを使う為の「VRTK_SimplePointer
そして移動できるようにするため最初のVRTKにVRTK_BasicTelepor
 
スクリプトを付け終えたら、最初のSDKManagerの空いているところにrightとleftのゲームオブジェクトをつける。
 
これでできるはず
 

参考記事

新しいバージョンで「掴む」negilab-unity.comテレポートの仕方(この方サーバルちゃん動画の人だった!)takoyakiroom.hatenablog.com下の記事にはリファレンス記事もあります。ありがたや。blog.d-yama7.com
 

最後に

最初に紹介したサーバルちゃんVRを再現しようとしました。

スクリプトが公開されていました。https://gist.github.com/takoyakiroom/4e7d8e4c2179bf1945b76b7777ce80e7

 ありがたい

でも、動かす用の球は表示できたし、コントローラーで移動もできるのですが、球に体がついてきません。

なんでだろう?