バーチャル3Dクリエイター神部まゆみです(*^-^*)
この記事はVR Interaction FrameworkっていうunityアセットでPCVRビルドしてsteamVRで動かしてみたメモです。
これ手順忘れそうだからここに書いておきます。
環境が変わったらまたやり直す羽目になるかもしれないので(;^_^A
- VR Interaction Frameworkとは?
- PCVRビルドしてsteamVRで動かしてみた手順
- 私の部屋もビルドして動かしてみる
- 2023/07/31追記:ボタン押してしゃがむ機能はデフォルトではないっぽい?スクリプト書くしかないか…
- その他の設定や注意点など
- おわりに
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バージョンはこちらからダウンロードできます。




手順2:新しいプロジェクトを作って、VR Interaction Frameworkをインポートする
プロジェクト名は適当でOK。
作成出来たらパッケージマネージャーを開いて、マイアセットにあるVR Interaction Frameworkをインポートする。
なんか警告ウィンドウが3つ出たけど気にせずインポートします。
これで特にいじらずインポートすればOK。
インポート失敗したらやり直せばOK
最初やった時はインポート失敗したっぽくてXRフォルダしか追加されなかった。
これやってた時微妙に回線が不安定だった気がするから回線状況によるかな?(~_~;)
ダウンロードとインストールやり直したら成功しました。こうなればOK。
手順3:steamVR Pluginを入れる
steamVR Pluginをアセットストアから入手します。




マイアセットに追加されているのでインポートします。
このXR Plug-in ManagementでVRデバイスの設定ができる感じ?
デフォルトは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) でバインド変更画面に行ける。
間違ったバインドが選択されていた時は、バインドを変更って出てる画面で正しいバインドを選択できた。
ここで編集を押して選択したんだったかな?一度直したらダメだった場合の再現ができなかったのでまた追記するかも(;^_^A
バインドが正しく設定されていれば、左コントローラーのYかXボタンを押した時に音が鳴って時間を遅くする機能が使えるようになってるはず。
実行ボタンを押してもVRにならない場合
恐らくだけど、
- steamVRがインストールされてない
- VR Plug-in Managementのところがおかしい(重要)
- ヘンなエラーが出てる
あたりかな?
steamVRはこれね。




流石にこのページを見ている人は既に入れていると思うけど…。
あとVR plug-in Managementは初期設定のままいじってないです。
OpenVR Loaderにチェックが入っているかチェック。
あとはコンソールでエラーが出てると実行ボタンが押せないのでバグをつぶす。
でもこれまでの手順しかやらなければ変なエラーは出ないはずなので、最初からやり直したりすればいけると思う。
unityエディタ再起動で直る場合もあるかも。
手順6:ビルドして動作確認してみる
PCVRでビルドします。
XR Demoシーンにチェックを入れて、「ビルドして実行」を押す。
WebXR(WebGL)のビルドは前回やったのでこちらを参考に。



これで実行ファイルができたから動かせるようになった!
普通にバリバリ動かせた
ちゃんとビルドして動かせた!
これドアとか引き出しとかハシゴとかもあるのがポイント高いかも。
このサンプルを組み合わせるだけで大抵のVRゲームは作れるのでは…Σ(゚Д゚)
私の部屋もビルドして動かしてみる
おおー!しっかり動いた!
webXRだとブラウザのメモリがきつくてリアルタイム反射させたらモッサリしちゃったけど…。



PCVRだとマシンスペックの限り動かせるから制約が少なくて良いかも。
VRChatワールドのPC版でも容量は気を使うしなぁ(;^_^A
これHDRPとかも動かせたらリアルで良いかも(;゚д゚)ゴクリ…



ちょっとチャレンジしてみようかな。
HDRPでやってみたけどダメっぽい?
HDRPのサンプルにVR Interaction Frameworkをインポートしたら、なんかレイヤーの設定が書き変わって映らなくなってしまった(~_~;)
エラーが出てるわけじゃないから設定し直せばいけるかもしれない。
しかしHDRPの知識がまだ乏しいから現時点では無理か(;^_^A
とりあえずは普通のやつでやってみます。
高さ調整とか
ここのプレイヤーコントローラーの、
BNG Player Controllerコンポーネントの、Player Y offsetの値を調整したらプレイヤーの身長が調整できました。
これコライダーで無理やり調整しようとやったけど上手くいかなくて、VRIFのdiscordでheightって検索したら出てきた。
ログがかなり膨大なので、ちょっとした疑問は英語で検索すれば出てくると思います。

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

屋内だとプレイヤーのコライダーが天井にひっかかってガタガタしたので注意
部屋の中にプレイヤーを配置したらなんかひっかかった感じでガタガタするなと思ったら、プレイヤーの肩にコライダーが設定されてた。
とりあえずオフにしたらガタガタしなくなりました。
とりあえず問題はないから大丈夫かな?
2023/07/31追記:ボタン押してしゃがむ機能はデフォルトではないっぽい?スクリプト書くしかないか…
座りながらプレイする場合、VRChatみたいにstandかsitを切り替えられると高さ調整ができて便利なんだけど。
フォーラム見たけどボタン押してしゃがむ機能はないっぽい?
スクリプト書いてPlayer Y Offsetを増減させて調整するしかないかも?
ジャンプと走るのはPlayer ControllerのSmoothLocomotionコンポーネントにボタン割り当てればいけた
PlayerControllerはここね。
SmoothLocomotionはデフォルトではオフになってるのでオンにする。
デフォルトだとボタンが割り当てられていないので、ここにボタンを割り当てればOK。
Jump Forceでジャンプ力が設定できます。
走るのはここ。
デフォルトだとあまり早くならないので、Sprint Speedは3くらいにしたほうがいいかも。
これでしっかりジャンプして動いた!
しゃがみ以外の動作はだいたいできたかな。
その他の設定や注意点など
その他気付いたことや注意点があれば追記していきます。
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はかなり良いかもしれない。
まぁもう少しいじってみます(*^-^*)