Unity2020.1.4fでSteamVRをセットアップする

なかなか進まないVR開発

SteamVRのゲームを作りたいを思いつつ、ずっと使っていたVRライブラリがSteamVR2系に対応していなかったり、新しくなった入力系の仕組みを全く理解しないまま作るのもどうなのか、という思いもあり、今回最新環境で改めてSteamVRに入門しましょうと、自分の中で決まりました。
ということで、令和最新のSteamVRセットアップ、開始します。

Unity2020.1.4へのSteamVR導入手順

環境は以下の通りになります。
Unity 2020.1.4f
SteamVR Plugin 2.6.1

Unityプロジェクトの作成

こちらはUnity Hubから作成してしまえばOK

SteamVR Pluginのインポート

Unity2020からは、Package Managerからインポートする方式に変わったようです。

メニューの Window > Package Manager でパッケージマネージャーの画面を表示します。
左上のPackagesを「My Assets」に変更すると、過去に(無料含め)購入したことのあるアセット一覧に切り替わるので、SteamVRを探してインポートを行います。

はじめてダウンロードするのであれば、Asset Storeにアクセスしてダウンロードします。
https://assetstore.unity.com/packages/tools/integration/steamvr-plugin-32647?locale=ja-JP

Importボタンを押すと、どのモジュールをインポートするか選択する画面が表示されるため、全部が選択された状態で右下のインポートをクリック

取り込みが終わるといろいろ表示されます。

Package Managerに新しいスコープが追加されたというメッセージ(?)のようです。すみません未確認です。
Closeをクリックして閉じます

次にOpenVRのアップデートに成功したとのメッセージが出るので閉じます。
Unity 2020.1から、XR Plug-in Managementという機能でVR関連のプラグインを管理するようで、その設定のアップデートに成功した というメッセージのようです。

最後に、VR環境に適した設定に変更してよいかのダイアログが出るため「Accept All」をクリックします。

「Your Right Choice!(正しい選択をしたね)」のメッセージが表示されれば、ひとまずSteamVRのインポートは完了です。

SteamVR Inputの設定

SteamVR2系から入力システムが大幅に変更されました。
各ボタンに「アクション」という抽象的な操作を割り当てておき、実際にどのボタンを利用するかは、別途ボタンのバインド(紐づけ)画面を利用して紐づけを行います。
(この辺りはFrameSynthesisさんの記事により詳しく書かれています)

プロジェクトの新規作成時にはバインドの定義ファイルが存在しないため、以下の手順でデフォルトの設定ファイルを作成します。

メニューのWindow > SteamVR Inputの順に選択します
すると、action.jsonが見つからないので、サンプルファイルを利用するか?のメッセージが表示されるのでYesを選択します

すると、以下のようなダイアログが表示されます。この画面で「アクション」を定義し、実際にプログラムを組むときは、定義したアクションにアクセスして入力を取得します。
(この辺りは、別途チュートリアルを紹介できれば考えています)

今回は設定を変更する必要はないので、画面下部の Save and generate をクリックします

自動でC#のプログラムが生成され、コンパイルが走ります。終了したら上記ダイアログは閉じて大丈夫です。

Sampleシーンの起動

ここまでくれば、やっとサンプルシーンが起動できます
Assets > SteamVR フォルダ配下に「Simple Sample」というファイルがあるので、このシーンを開き、Unityの再生ボタンを押します

ボールがバウンドする簡単なシーンが再生されます。頭を動かせばきちんと視点も追従するし、コントローラの位置トラッキングも問題なく動いているはずです。

お疲れさまでした

以上でSteamVRの導入方法の紹介は終了です。
これで、VR開発者の一歩が踏み出せましたね。
今後はSteamVRでよさげなチュートリアルが紹介されていたので、その記事を紹介しつつ、VRゲームには欠かせない「物をつかむ、投げる、テレポートする」方法を紹介していきたいと思っています。