はじめに
バージョンは現状最新のOpenVR SDK 2.5.1を前提にします!
今回使う言語はC++です!
筆者はOpenVRとSteamVRの違いがよく分かりません!(OpenVRでVR_Initしたら、自動でSteamVRに繋がる...?)
SteamVRに接続
vr::EVRInitError error;
vr::VR_Init(&error, applicationType);
第一引数でエラーを受け取って、第二引数でアプリの種類を指定します!
applicationTypeはオーバーレイを作る時に使う2つだけを紹介します!この2つ以外知らないので!!
-
VRApplication_Overlayオーバーレイを起動する際はこれで起動すれば良いはず! -
VRApplication_UtilitySteamVRにvrmanifestを登録する際はこれで良いみたい!多分!
SteamVRに登録
実行ファイルと、vrmanifestというファイルがあれば登録が出来るようです!
vrmanifest
vrmanifestは、拡張子が.vrmanifestならファイル名はなんでも良いのかな!多分!
中身はこんな感じに書きましょう!
{
"source": "builtin",
"applications": [
{
"app_key": "<アプリキー>",
"launch_type": "binary",
"binary_path_windows": "<実行ファイルのパス>",
"is_dashboard_overlay": true,
"strings": {
"en_us": {
"name": "<アプリ名>",
"description": "<アプリ説明>"
}
}
}
]
}
- アプリキー
例:openvr.overlay.test
アルファベット、数字とかをドットで区切ってる?
他のアプリと被らなければなんでも良さそうです!多分!よくわからん!
Steamからのアプリはsteam.overlay.<アプリID>のように書かれるようです! - 実行ファイルのパス
相対パス可! - アプリ名
SteamVRで表示されるアプリ名です! - アプリ説明
どこに表示されるのか分かりません!
VRオーバーレイでは使われてないのかも?
登録!
vrmanifestファイルを用意出来たら登録してみましょう!
vr::EVRInitError error;
vr::VR_Init(&error, vr::VRApplication_Utility);
vr::VRApplications()->AddApplicationManifest(manifestFilePath);
こんな感じ!ファイルパスは絶対パスじゃないと動かないようです!
AddApplicationManifestの返り値としてエラーが取得出来ます!
登録を確認
登録されたことを確認するには、筆者の知る限り2つ方法があります!
SteamVR内
SteamVRを起動し、設定、スタートアップ/シャットダウンの一番上にあるスタートアップオーバーレイアプリを選択を押すと、登録されているVRオーバーレイ一覧を見られます!
自動起動するかの設定もここで出来ます!

ファイルを直接確認
appconfig.jsonを見れば、登録されているマニフェストファイルの一覧を確認出来ます!
デフォルトのパスはC:\Program Files (x86)\Steam\config\appconfig.jsonです!
自動起動の設定
SteamVRの起動と同時に自動で起動するように設定できます!
vr::EVRInitError error;
vr::VR_Init(&error, vr::VRApplication_Utility);
vr::VRApplications()->SetApplicationAutoLaunch(appKey, true);
これで自動起動の設定が出来ます!
第一引数は、型はchar*で、vrmanifestファイルに書いたapp_keyと同じ物を書きましょう!
第二引数は、自動起動するかどうかなので、falseにすれば自動起動を解除出来ます!