VR Interaction Framework unityアセットでPCVRビルドしてsteamVRで動かしてみたメモ

Unity
※記事内に広告が含まれています。

バーチャル3Dクリエイター神部まゆみです(*^-^*)

この記事はVR Interaction FrameworkっていうunityアセットでPCVRビルドしてsteamVRで動かしてみたメモです。

これ手順忘れそうだからここに書いておきます。

環境が変わったらまたやり直す羽目になるかもしれないので(;^_^A

●PRスペース●

〇まゆみマート|BOOTH

BOOTHでVRoidテクスチャやVRChat向けオブジェクトなどを販売しています。いいねしてくれると励みになります(*^-^*)

  1. VR Interaction Frameworkとは?
  2. PCVRビルドしてsteamVRで動かしてみた手順
    1. 手順1:VR Interaction Framework対応のunityバージョンを入れる
    2. 手順2:新しいプロジェクトを作って、VR Interaction Frameworkをインポートする
      1. インポート失敗したらやり直せばOK
    3. 手順3:steamVR Pluginを入れる
      1. 設定する
    4. 手順4:XR Demoシーンを開いてセットアップ
      1. XR Rig Advancedにコンポーネントを追加してInput Bridgeの設定をする
      2. Input Bridgeの設定をする
    5. 手順5:実行ボタン押して動作確認する
      1. 最初やった時はInput Bridgeの警告が消えず、コントローラーのバインドを設定しないと動かなかった
        1. Bindingsがちゃんと作成されてなかったからかも
          1. steamVRのバインドが正しいやつかチェック
      2. 実行ボタンを押してもVRにならない場合
    6. 手順6:ビルドして動作確認してみる
      1. 普通にバリバリ動かせた
  3. 私の部屋もビルドして動かしてみる
    1. HDRPでやってみたけどダメっぽい?
      1. 2023/11/20追記:設定すれば使えるみたい
    2. 高さ調整とか
      1. 屋内だとプレイヤーのコライダーが天井にひっかかってガタガタしたので注意
  4. 2023/07/31追記:ボタン押してしゃがむ機能はデフォルトではないっぽい?スクリプト書くしかないか…
    1. ジャンプと走るのはPlayer ControllerのSmoothLocomotionコンポーネントにボタン割り当てればいけた
  5. その他の設定や注意点など
    1. VRから通常のPCビルドに戻すには、Initialize XR on Startup をいじる
    2. Input BridgeのSteamVR警告が消えない時は、VRIFとsteamVRアセットをフォルダごと削除して入れ直したら直った
      1. 削除して入れ直した手順
      2. webXRと切り替えてたらこうなったので、PCVRとwebXRのプロジェクトは別にしたほうがいいかも?
  6. おわりに

VR Interaction Frameworkとは?

VRゲームが開発できるunityアセット。

ちょいお高いけど年2~3回くらい?半額セールで安くなってる気がするのでセール時を狙うと安く買えるかも。


VR Interaction Framework | UnityAssetStore

De-Panther氏のwebXR-exportを使ってwebXRも作れます。

PCVRビルドしてsteamVRで動かしてみた手順

アセット作者さんが手順を上げてくれてるけど、2年前の動画なのでバージョンアップで少し変わってる部分もあった。

動かしたのはMeta Quest2 + バーチャルデスクトップです。

手順1:VR Interaction Framework対応のunityバージョンを入れる

2023/06/11現在だと2020.3.40以降になってたから2020.3.40でやります。

過去のunityバージョンは↓こちらからダウンロードできます。

Download Archive
Download Archive

手順2:新しいプロジェクトを作って、VR Interaction Frameworkをインポートする

プロジェクト名は適当でOK。

作成出来たらパッケージマネージャーを開いて、マイアセットにあるVR Interaction Frameworkをインポートする。

VR Interaction Frameworkをインポートする

なんか警告ウィンドウが3つ出たけど気にせずインポートします。

これで特にいじらずインポートすればOK。

インポート失敗したらやり直せばOK

最初やった時はインポート失敗したっぽくてXRフォルダしか追加されなかった。

これやってた時微妙に回線が不安定だった気がするから回線状況によるかな?(~_~;)

ダウンロードとインストールやり直したら成功しました。↓こうなればOK。

手順3:steamVR Pluginを入れる

steamVR Pluginをアセットストアから入手します。

SteamVR Plugin | Integration | Unity Asset Store
Use the SteamVR Plugin from Valve Corporation on your next project. Find this integration tool & more on the Unity Asset...

マイアセットに追加されているのでインポートします。

↓このXR Plug-in ManagementでVRデバイスの設定ができる感じ?

XR plug-in management

デフォルトはOpenVR Loaderになってるけど、これでもsteamVR動いたから変えなくていいと思う。

Oculusにしたら動かなくなったので、別のやつを選ぶ場合は別途SDK入れたり設定が必要になるかも?間違ってたらごめん。

設定する

Assets/BNG Framework/Integrations にある SteamVRを開く。

インポートする。

↓Save and generateを押せばOK。

これでBindingsとかいうフォルダが追加された。

これコントローラーのバインド的なやつかな?

手順4:XR Demoシーンを開いてセットアップ

検索窓に demo と入れて出てくる XR Demo を開く。

Assets/BNG Framework/Scenes にある XR Demo.unity です。

なんかText Mesh Proのインポートみたいな画面が出てきたのでインポートしておく。

上のやつをインポートしたら下のボタンもグレーアウトが消えてEnableになったので一応インポートしておく。

終わったら右上の×を押して閉じてOK。

XR Rig Advancedにコンポーネントを追加してInput Bridgeの設定をする

これがプレイヤーになるやつ?ヒエラルキーで選択します。

「コンポーネントを追加」を押して、「action」と検索すると出てくるSteam VR_Activate Action Set On Loadを追加して設定する。

↓こうなってればOK。

Input Bridgeの設定をする

あと上のInput Bridgeの入力ソースをSteamVRにする。

最初は警告が出てたけど、

Open Integrations Windowをクリックして少し経ったら警告消えました。

これコンパイルとかリフレッシュ間隔の問題かな?

しかしフォーラム見たら「警告が消えない」みたいな話も見たような…。

ここで警告が出てるとコントローラーのバインド設定がおかしくなるのか?実行してもプレイヤーが動かなくてバインド設定を手動でやることになった。

手順3のsteamVRのBinding設定あたりからやり直してみたほうが良いかも。

手順5:実行ボタン押して動作確認する

これで実行ボタン押して動作確認してみます。

環境はMeta Quest2 + バーチャルデスクトップで画面映しながら実行ボタン押しました。

おお!ちゃんと動いたでござるぞ( *´艸`)

でもVRを終了するとエラーでunityエディターが毎回落ちる(;^_^A

とりあえず毎回起動し直してるけどちょっと現段階では原因がわからない。

最初やった時はInput Bridgeの警告が消えず、コントローラーのバインドを設定しないと動かなかった

この画面で警告が消えず、実行はできるけどプレイヤーが動かなかった。

仕方ないから自力でバインド設定したら動いた。

とりあえずジョイスティックだけ設定してやってみるといいかもしれない。

steamVRのバインド設定開いて、ジョイスティックのところに適当にsumstickっぽい感じのやつを設定したらいけた。

フォーラムでも「手が地面に沈んで動きません」って言ってる人がいたけど、多分バインドの設定の問題かな?

でも設定めんどくさいから、手順3あたりからやり直してみたほうがいいかもしれない。

Bindingsがちゃんと作成されてなかったからかも

動かせなかったプロジェクトを見返してみたら、Bindingsフォルダがちゃんと作成されてなかった。

ここがちゃんと作成されてないと実行できてもプレイヤー動かせないので注意。

これが作成されてても、バインドが正しいやつじゃないと動作がおかしくなるかも。

steamVRのバインドが正しいやつかチェック

steamVRのバインドは、作者さんが設定してくれたやつ?のこれが設定されてたらちゃんと動いた。

rift defaultsってやつ。これ以外のバインドが選ばれていた場合は移動ができなかったり、右指が動かなかったりしてダメだった。

追記:もしくはこっちのパターンもあった。名前がいくつかあるかも?

バインドの設定は、Meta Quest2+VirtualDesktopのPCVRだと左スティックの 三ボタン を押したら出てくるメニューを移動してけば見つかる。

左下の詳細設定を「表示」に ⇒ コントローラ ⇒ バインド設定UIを表示 ⇒ プロジェクト名(ここではVRIF-TEST) でバインド変更画面に行ける。

unity steamVR バインド コントローラー

間違ったバインドが選択されていた時は、バインドを変更って出てる画面で正しいバインドを選択できた。

ここで編集を押して選択したんだったかな?一度直したらダメだった場合の再現ができなかったのでまた追記するかも(;^_^A

バインドが正しく設定されていれば、左コントローラーのYかXボタンを押した時に音が鳴って時間を遅くする機能が使えるようになってるはず。

実行ボタンを押してもVRにならない場合

恐らくだけど、

  • steamVRがインストールされてない
  • VR Plug-in Managementのところがおかしい(重要)
  • ヘンなエラーが出てる

あたりかな?

steamVRはこれね。

Steam:SteamVR
SteamVRをダウンロードして、HTC Vive、Oculus Rift、Windows Mixed Realityヘッドセットやその他のサポートされたVRヘッドセットとコントローラを使ってVRゲームにアクセスしてプレイしよう。

流石にこのページを見ている人は既に入れていると思うけど…。

↓あとVR plug-in Managementは初期設定のままいじってないです。

OpenVR Loaderにチェックが入っているかチェック。

XR plug-in management

あとはコンソールでエラーが出てると実行ボタンが押せないのでバグをつぶす。

でもこれまでの手順しかやらなければ変なエラーは出ないはずなので、最初からやり直したりすればいけると思う。

unityエディタ再起動で直る場合もあるかも。

手順6:ビルドして動作確認してみる

PCVRでビルドします。

XR Demoシーンにチェックを入れて、「ビルドして実行」を押す。

WebXR(WebGL)のビルドは前回やったのでこちらを参考に。

これで実行ファイルができたから動かせるようになった!

普通にバリバリ動かせた

ちゃんとビルドして動かせた!

これドアとか引き出しとかハシゴとかもあるのがポイント高いかも。

このサンプルを組み合わせるだけで大抵のVRゲームは作れるのでは…Σ(゚Д゚)

私の部屋もビルドして動かしてみる

おおー!しっかり動いた!

↓webXRだとブラウザのメモリがきつくてリアルタイム反射させたらモッサリしちゃったけど…。

PCVRだとマシンスペックの限り動かせるから制約が少なくて良いかも。

VRChatワールドのPC版でも容量は気を使うしなぁ(;^_^A

これHDRPとかも動かせたらリアルで良いかも(;゚д゚)ゴクリ…

ちょっとチャレンジしてみようかな。

HDRPでやってみたけどダメっぽい?

HDRPのサンプルにVR Interaction Frameworkをインポートしたら、なんかレイヤーの設定が書き変わって映らなくなってしまった(~_~;)

エラーが出てるわけじゃないから設定し直せばいけるかもしれない。

しかしHDRPの知識がまだ乏しいから現時点では無理か(;^_^A

とりあえずは普通のやつでやってみます。

2023/11/20追記:設定すれば使えるみたい

久々にVRIFの公式サイト見たらページが新しくなっていて、URP/HDRPのセットアップの仕方が載ってました。

URP / HDRP |VRIFウィキ (beardedninjagames.com)

unity VRIF HDRP URP VR Interaction Framework

まだ試してないけどVRでHDRP使えたらリアルで没入感高そう。

後で試してみるかもしれません。

高さ調整とか

ここのプレイヤーコントローラーの、

BNG Player Controllerコンポーネントの、Player Y offsetの値を調整したらプレイヤーの身長が調整できました。

これコライダーで無理やり調整しようとやったけど上手くいかなくて、VRIFのdiscordでheightって検索したら出てきた。

ログがかなり膨大なので、ちょっとした疑問は英語で検索すれば出てくると思います。

Discord - Group Chat That’s All Fun & Games
Discord is great for playing games and chilling with friends, or even building a worldwide community. Customize your own...

ちなみに翻訳はsimple translateプラグインでやりました。

Simple Translate - Chrome ウェブストア
Webページ上で選択・入力したテキストを瞬時に翻訳します。Google翻訳とDeepL APIに対応しています。

屋内だとプレイヤーのコライダーが天井にひっかかってガタガタしたので注意

部屋の中にプレイヤーを配置したらなんかひっかかった感じでガタガタするなと思ったら、プレイヤーの肩にコライダーが設定されてた。

とりあえずオフにしたらガタガタしなくなりました。

とりあえず問題はないから大丈夫かな?

2023/07/31追記:ボタン押してしゃがむ機能はデフォルトではないっぽい?スクリプト書くしかないか…

座りながらプレイする場合、VRChatみたいにstandかsitを切り替えられると高さ調整ができて便利なんだけど。

フォーラム見たけどボタン押してしゃがむ機能はないっぽい?

スクリプト書いてPlayer Y Offsetを増減させて調整するしかないかも?

ジャンプと走るのはPlayer ControllerのSmoothLocomotionコンポーネントにボタン割り当てればいけた

PlayerControllerはここね。

SmoothLocomotionはデフォルトではオフになってるのでオンにする。

VR IntegrationFramework unity SmoothLocomotion

デフォルトだとボタンが割り当てられていないので、↓ここにボタンを割り当てればOK。

Jump Forceでジャンプ力が設定できます。

VR Integration Framework unity ジャンプjumo button

↓走るのはここ。

デフォルトだとあまり早くならないので、Sprint Speedは3くらいにしたほうがいいかも。

VR Integration Framework sprint走る buttonボタン

これでしっかりジャンプして動いた!

VR Integration Framework unity ジャンプ 走る スプリント

しゃがみ以外の動作はだいたいできたかな。

その他の設定や注意点など

その他気付いたことや注意点があれば追記していきます。

VRから通常のPCビルドに戻すには、Initialize XR on Startup をいじる

ビルド設定 ⇒ プレイヤー設定 ⇒ XR Plug-in Management ⇒ Initialize XR on Startup のチェックを外す。

ここにチェックを入れると、実行ボタンを押したときにまたsteam VRが起動してVRで実行されます。

Input BridgeのSteamVR警告が消えない時は、VRIFとsteamVRアセットをフォルダごと削除して入れ直したら直った

PCVRからwebXRに切り替えてたらこのエラーが消えなくなったΣ(゚Д゚)

Input Source set to ‘steamVR’ , but SteamVR integration has not been enabled. Would you like to enable it now?

Open Integrations Windowを開いてもsteamVRにチェック入ってるし、Bindingsフォルダも作成されてるのに…謎。

一応実行はできるけど、またコントローラーのバインド設定がおかしくなって効かなくなった(-_-;)

そしてコンソールにはこんなエラーが出ていた。

Assets\BNG Framework\Scripts\Core\InputBridge.cs(10,13): error CS0246: The type or namespace name ‘Valve’ could not be found (are you missing a using directive or an assembly reference?)

フォーラム見たら同じとこで躓いてる人いるっぽいな…。

プレイヤー設定のシンボル定義?みたいなところの設定の問題かもしれない。

しかしよくわからなかったので、結局VRIFとsteamVRのフォルダごと削除して入れ直し、設定し直して直した(;^_^A

直した後のスクリプトシンボル定義↓にはsteamVRSDKって書いてあったので、これの設定が消えてただけかな?

削除して入れ直した手順

正しい直し方かは不明だけど一応治ったので書いておく。

steamVRのフォルダ三つとBNG Frameworkを削除して、

パッケージマネージャーからVR Interaction FrameworkとsteamVR pluginを入れ直した。

設定とかはこのページの手順2あたりからを参照。

配置したオブジェクトとかはそのままでいけたので被害は最小限で済んだ。

これアセットフォルダに入ってるアセットはremoveできないのか、手動で消してるけどもっとスマートな方法があるかな?

webXRと切り替えてたらこうなったので、PCVRとwebXRのプロジェクトは別にしたほうがいいかも?

webXRとPCVRではプレイヤーの設定が異なるので、切り替えてる時にエラーが出てしまったんだと思う。

これPCVRとwebXRではプロジェクト分けて別に管理したほうがいいかも?

切り替える時にいちいちエラー出てたらちょっと大変だし…。

まぁぼちぼちいじってるのでまた何かあれば追記していきます。

おわりに

案外簡単にできて良かった。

自分の環境で動かすだけなら容量の制約がないPCVRはかなり良いかもしれない。

まぁもう少しいじってみます(*^-^*)

タイトルとURLをコピーしました