Unity + SteamVR SDKチュートリアル Part2

全開に続き、SteamVRのチュートリアルを進めていきます。
使用するチュートリアルは以下の「Handling Input」のセクションからになります
https://www.raywenderlich.com/9189-htc-vive-tutorial-for-unity

Steam Inputについて

SteamVR Ver1からVer2になったことで大きく変わったのがインプット関連でしょう。
Ver2のインプットシステムについては、「frames ynthesis」様のサイトで分かりやすく書かれています

SteamVR Ver2ではボタン入力を「アクション」として定義し、利用します。
アクションとは「物をつかむ」「テレポートする」といった具体的に行いたい行動を定義しておき、そのアクションに対応するボタンは、別途用意された専用のバインド画面を利用して、ボタンとアクションを紐づけて利用します。

言葉にすると少しわかりにくいですが、今回のチュートリアルの内容でおおよその利用方法を掴めると思います。

アクションを定義する

メニューの Window > SteamVR Input を選択します

初回実行時は設定ファイルが見つからないため、「サンプルファイルを作成するか」のダイアログが表示されます。
Yesを選択して進めます

デフォルトでは、以下の4種類のサンプルが設定されています。
・default
・platfomer – マリオのような横スクロールアクションをPlatfomerと呼ぶそうです
・buggy – 車の運転のサンプル
・mixedreality – MRのサンプル設定のようです

今回はdefault以外は不要なので、以下の方法で不要な設定を削除します。
platformerを選択し、表示される「-」ボタンを押します。これで設定が削除できます。
buggy、mixedrealityも同じ手順で削除します。

次にdefaultで設定されているアクションで不要なものを削除します。削除するのは以下の通りです
・InteractUI
・GrabPinch
・Squeeze
の3つになります

※チュートリアルではPoseも削除するとありますが、これを削除するとコントローラの位置を取得できなくなりますので、消してはいけません!

不要なアクションを選択し、「-」ボタンでアクションを削除することができます。

チュートリアルに合わせて、「GrabGrip」のアクション名を「Grab」に変更しておきます

以上の設定を行ったら、「Save and Generate」ボタンを押します。
ソースコードの生成とコンパイルが動くので、終わるまで待ちましょう

アクションのバインド

先ほど作成したアクション(Grabなど)を実際のコントローラのボタンに割り当てます。
今回は「HTC Vive」向けの設定方法になります。
SteamVR Inputのダイアログ右下に「Open binding UI」というボタンがあるのでクリックします

以下のような画面が表示されるので、GamePadをクリックし、Vive Controllerに設定を変更します

現在のバインドの項目内の「編集」をクリックします

以下のような画面が表示されます

この画面を使用して、アクションとボタンを関連付けていきます。
まずはデフォルトで設定されているアクションを削除します。
各項目にカーソルを合わせると、ゴミ箱アイコンが表示されるため、クリックして削除していきます
(アクションポーズの編集にもアクションが割り当てられていますが、こちらは削除する必要はありません)

すべて取り除いた状態。バインドされていないアクションがあるという警告が表示されます

改めて、アクションをボタンに割り当てていきます。割り当て方は以下の通り
トリガーの+ボタンをクリック > BUTTONをクリック > クリックと書かれた右側にある「なし」をクリック > 表示される候補から「grab」を選択

以上の操作を行うと、下のような画面になっているはずです

同じ手順で以下の設定を行います。

トラックパッドの+ボタンをクリック > BUTTONをクリック > クリックと書かれた右側にある「なし」をクリック > 表示される候補から「teleport」を選択

設定が終わると、以下の画面になっていると思います。
警告が2つ表示されますが、今回のチュートリアルでは未使用なので無視します

本家チュートリアルでは最後に「Replace Default Binding(デフォルトバインドの置換)」をクリックしてくださいとありますが、今回はクリックしません!
これは標準のバインドを今回設定したバインドに置き換えてしまうためです。
今回はあくまでチュートリアル用のバインドなので、標準バインドと置き換える必要はありません。

今回は個人用バインドを保存 をクリックして設定を保存しておきましょう

今回はここまで

今回はSteamVRのアクション定義方法と、コントローラボタンへのバインド方法を紹介しました。
次回は実際にプログラムを記述して、今回設定した内容がどのように利用されるのか確認していきます。