ALVR v20.14.1時点での情報です。RadeonのAMF関連がメインでGeForce向けの情報はないので、あくまでも個人的な備忘録。
インストール
PCにインストールする
以降、Windowsで使用する前提で説明をします。
GitHubのReleasesページから最新のalvr_launcher_windows.zipをダウンロードして、管理者権限の必要が無い場所に展開してください。ユーザー名に日本語が含まれていなければ、ドキュメントフォルダで大丈夫です。
Add versionボタンから最新のバージョンをインストールします。
HMDが開発者モードになっていてadbコマンドが通る状態であれば、Install APKボタンからHMDへのインストールが行えます。ダッシュボードの起動はLaunchボタンを押します。
VB-Cableのインストール
「Download VB-Cable」をクリックして、公式サイトからダウンロードします。「VBCABLE_Setup_x64.exe」を管理者として実行してインストールしておいてください。インストール後はOSの再起動が必要です。
ファイアウォールの許可
HMDとの接続のためにファイアウォールに接続ルールを追加します。管理者権限が必要です。
HMDにインストールする
Meta Questシリーズ
現在はApp Labで公開されていますので、ストアでALVRを検索すれば出てきます。Side Questを使用する必要はありません。
PICO 4
まだストアに公開されていませんが、いずれリリースされる予定だそうです。ALVR LauncherのInstall APKボタンから入れましょう。
VIVE Focusシリーズ
VIVE XR Eliteで試しましたが、開発者モードにしてあればUSB接続してInstall APKボタンからインストール可能なはずです。
併用するドライバーの設定(現在は設定不要)
現在は項目がなくなったため、考慮する必要はありません。
過去の情報として残しておきますが、ALVRがややこしく感じるポイントのひとつです。SettingsタブのExtraに「Driver launch action」があるので、そこで設定する必要があります。
| Unregister other drivers at startup SteamVR起動時に他のドライバーを無効にする | デフォルトの設定です。競合するドライバーによる干渉を防ぐため、SteamVR実行時にSteamVRに登録されている他のドライバーを無効にしてALVRだけが動作するようになります。 |
|---|---|
| Unregister ALVR at shutdown SteamVRを終了する際にALVRを無効にする | SteamVRを起動した際にALVRドライバーが登録され、終了時に無効になります。 Standable:Full Body EstimationやHaritora Configuratorのような、フルボディトラッキングに必要なドライバーを併用する際に選択します。但し、Virtual Desktopなどのストリーミングアプリは競合してしまうので、予め手動で無効にしておく必要があります。 |
| No action なにもしない | ALVRを含むすべてのドライバーを手動で登録する必要があります。これにより、最初にALVRダッシュボードを起動せずにSteamVRを起動できます。 |
ドライバーを手動登録するには
Installationタブで「Register ALVR driver」を押します。干渉するドライバーがあればRemoveを押して除外してください。
わからん、どうすればいい?
- ALVRだけが動いたら良い、フルトラしてない→Unregister other drivers at startup
- ALVRだけが動いたら良い、IMU方式のトラッカーでフルトラしている→Unregister ALVR at shutdown
- Virtual Desktopなどを使うときがある→No actionに設定し、その都度SteamVRの設定から必要なアドオンをオンオフして再起動する
これらの設定は3月に削除されているので、現在は気にしなくても良さそうです。
HMDを登録する
同じネットワーク内でQusetやPICO側でALVRを起動しておき、ダッシュボードのDevicesタブで「Launch SteamVR」を押します。
Trustボタンが出てくるので、押すとHMDが登録されてSteamVRが再起動します。ConnectionタブでAuto trust clientsを有効にしていると自動で登録されます。
詳細設定
Settingsから様々な設定が行えます。
Presets
プリセットによる簡易設定が行えます。
Resolution
両目での解像度です。(1:1解像度の場合を想定)
High(2592px)以上に設定すると、画質が急激に低下したり表示が乱れたりするようでした。手動で設定する場合は2500pxぐらいまでは問題ないです。
| Very Low | 3072 x 1536px |
|---|---|
| Low | 3712 x 1856px |
| Medium | 4288 x 2144px |
| High | 5184 x 2592px |
| Ultra | 5632 x 2816px |
| Extreme | 6080 x 3040px |
Preferred framerate
フレームレートの設定をします。ヘッドセット側で設定されているリフレッシュレートが最大フレームレートとなります。
Encoder preset
エンコーダーの設定です。設定を上げすぎると、スタッタリングや表示の乱れが起こりやすくなります。初期設定ではSpeedが選択されています。
Headset speaker
ここで選択した音声デバイスの音がヘッドセットへ送られます。
Headset microphone
例えばQuestのマイクを使用したい場合は、VB Cableを選択します。(VB Cableは予めインストールし、一度OSの再起動をしてください。一度も再起動していない場合エラーが出ます。)
Hand tracking interaction
ハンドトラッキングの設定です。
| Disabled | ハンドトラッキングを使用しません。 |
|---|---|
| SteamVR Input 2.0 | VRChat用にハンドトラッキングデバイスを別途生成します。 |
| ALVR bindings | ALVR独自のバインドで、ハンドトラッキングにトリガーやスティックの操作が割り当てられます。 Hand tracking controller bindings Stream VR games from your PC to your headset via Wi-Fi - alvr-org/ALVR |
Eye and face tracking
アイトラッキング・フェイストラッキングの設定です。VRCFTを使ってフェイストラッキングをする場合は、「VRCFaceTracking」を選んでおきます。VRCFT側ではALVR Moduleを入れておけばOKです。
Video
Bitrate
ビットレート設定です。詳細設定が行えるExpandボタンがあります。
- Mode
固定ビットレートのConstantと、通信状況に合わせて変動するAdaptiveが選択できます。
ビットレート設定は5~1000Mbpsまで選択できますが、800~1000Mbpsクラスは有線接続時に使用することをお勧めします。
Wi-Fi環境下ではH.264で300Mbps、HEVCで150Mbpsぐらいを最大値の目安として設定します。あまり高くし過ぎるとHMD側が処理しきれない可能性があります。
- Saturation multiplier(Adaptive)
映像伝送に割り当てるネットワーク帯域幅の割合です。0.95(95%)がデフォルトです。
- Maximum bitrate / Minimum bitrate
Adaptiveモード時の最大ビットレートと最小ビットレートを指定します。
- Maximum network latency
ネットワーク遅延の最大値です。有効にした場合のデフォルトは8msです。
- Encorder latency limiter
エンコードに割り当てるフレーム間隔の割合(パーセンテージ)を指定します。有効にした場合のデフォルト値は0.90です。
- Decoder latency limiter
デコーダーの遅延に関する設定です。但し、現在は特定のビットレートを超えるとデコーダーの遅延が増加し続ける不具合があります。
- Maximum decoder latency
デコーダーの遅延がこの値を超えると、ビットレートが低下します。デフォルトは30msです。
- latency overstep
Maximum decoder latencyで指定して値を超える状態が、何フレーム連続したらビットレートを下げ始めるかを設定します。デフォルトで90 framesが指定されています。
- Latency overstep multiplier
遅延発生時にビットレートをどのぐらいの割合で下げるかを設定します。
- Adapt to framerate
フレームレートが変動しても、指定されたビットレート設定を保つようにします。
- FPS rest threshold multiplier
フレームレートが指定した係数を超えて変化した場合に、ビットレートの再設定を行います。デフォルトで2.00が指定されていますので、90FPSの場合は45FPSになったときに再設定が行われるはずです。VRChatのように常にフレームレートが低くなりやすい場合は値を下げると良いかもしれませんが、逆に激しく変動するような状況下では頻繁にビットレートの再設定が行われる可能性があります。
- History size
参照フレーム数です。デフォルトで256が設定されているので、過去256フレームの情報を元にビットレートの調整などが行われます。
- Image corruption fix
ビットレートが変更されたときにIDRフレームを要求し、画像の破綻を修正します。Radeonのみ影響する設定です。
Preferred codec
H.264/HEVC/AV1の中からコーデックを選択します。
HEVCはエンコーダーのレイテンシーが上がりますが、効率が良いためビットレートが限られる場面でも良好な品質を得られます。ネットワーク側がボトルネックとなる場合に有用です。AV1は更に高効率なコーデックですが、Radeon 7000シリーズ以上かつQuest 3の組み合わせでないと利用できません。(※今のところ、ALVRのWindows版ではRadeonのみAV1を使用可能です。)
ドライバーのバージョンによると思われますが、RadeonでHEVCエンコーダーを使用すると何かしらのトラブルが起こることがありました。現在は問題ないはずですが、HEVCが上手く利用できない場合はH.264を試します。
Foveated encoding
フォービエイテッド(中心窩)レンダリングの動画バージョンです。フォービエイテッドエンコーディングという名前の通り、レンダリング済みのフレーム対して処理をするものなので、レンダリング負荷が下がるわけではありません。
中心部の画質を保ちながら周辺の解像度を落とす事で、映像のエンコード・デコード速度を短縮できるほか、同じビットレートならば低解像度時の品質が向上します。そのため、低速のネットワークでもビットレートを下げることで、Foveated encoding未使用時と同じ画質になります。
Color correction
色補正です。ブライトネス、コントラスト、彩度、ガンマ、シャープの6項目を調整出来ます。
Maximum buffering
フレームバッファリングの最大値です。この値を上げるとスタッターを軽減できますが、遅延も増大します。デフォルトで2フレームが設定されています。
Enforce server frame pacing
サーバーフレームページングを強制する、Windows向けの設定です。(過去にOptimize game render latencyとして用意されていた項目)
ゲームのフレームレートがHMDのリフレッシュレートを上回らないと分かっている場合を除き、無効にしないでください。
Encoder config
細かなエンコード設定が行えます。
- Quality preset
エンコーダーのクオリティプリセットを選択します。WindowsではRadeonでのみ機能します。初期設定はSpeedで、他にはBalanceやQualityが選択できます。設定を上げると品質が向上する代わりに負荷や遅延が増大する可能性があります。
- Enable VBAQ/CAQ
Adaptive Quantizationと呼ばれる視覚的な品質を向上させる機能です。高速な動きや、複雑なディテールがあるシーンのエンコードに効果的です。AV1の場合はContent Adaptive Quantizationが使用されます。
- Rate control mode
CBRが推奨設定です。VBRはアダプティブビットレートのアルゴリズムを狂わせる可能性があります。
- h264: Profile
High/Main/Baselineから選ぶことができます。デフォルトではHighになっていますが、エンコードやデコードの負荷が高いことや設定の複雑さから逆に低品質になる原因となりやすいです。8bitまでという制約はありますが、設定が上手く行かないときはMainプロファイルを使用するのが安全です。NVENCには影響しません。
- Entropy coding
CAVLCが推奨設定です。CABACは圧縮率は向上しますが、非常に低速なのでレイテンシーが生じる可能性があります。
- Filler data
CBRモード使用時に、割り当てられたビットレートを下回らないようにします。主にデバッグで役立つ機能です。
- 10-bit encoding
8bitではなく10bitでエンコードします。Radeonのドライバーバージョンによっては、色が緑色になったり赤みがかったりするなど、表示に異常が起こる場合がありました。Enable Pre-analysisと併用はできないようです。また、H.264で使用する場合はHighプロファイルが必要となります。
- Override for 10-bit encoding
クライアントであるヘッドセットに対して、10-bitエンコードの設定をサーバー側の設定で上書きします。
- Full renge color
フルレンジRGB(0-255)でエンコードします。無効にすると、リミテッドレンジ(16-235)でエンコードするようになります。
- Override for full range color
クライアントであるヘッドセットに対して、フルレンジRGBの設定をサーバー側の設定で上書きします。
- Encoding Gamma
エンコーダーに任せる場合は1.0にします。暗い部分を優先して2.2に設定する場合、色ズレやトーンジャンプが生じる可能性があります。
- Override for encoding gamma
クライアントであるヘッドセットに対して、ガンマの設定をサーバー側の設定で上書きします。
- Enable HDR/Force HDR sRGB Correction/Clamp HDR extended range
HDR関連ですが、手元では検証できないと思われるので割愛します。
- NVENC/AMF
ハードウェアエンコーダーの設定です。こちらは項目の最後に別記します。
- Software (CPU) encoding
ソフトウェアエンコードを使用する設定ですが、CPUでのエンコードは速度的に実用的ではないので基本的に使用しません。
Force software decoder
HMDやスマートフォン側でソフトウェアデコードを強制します。遅いのですが、不具合を回避できる可能性があります。
Mediacodec extra options
MediaCodecの設定が行えます。Android向けのオプションだと思われますが、詳細はよく分かりませんでした。
Transcoding view resolution
エンコード・デコードで使用する片目あたりの解像度です。
Emulated headset view resolution
SteamVRで使用する片目あたりのレンダリング解像度です。
Preferred FPS
フレームレート設定です。
Adapter index
ALVRコンポジターのアダプターを変更します。特別な理由がない限り、変更しないでください。
Clientside foveation
Client-side post-processing
HMD側でポストプロセスを使用します。QuestとPICOで利用可能です。
- Super sampling
スーパーサンプリングを使用して、エッジのチラつきを軽減します。HMDの解像度に対して、ALVRの解像度設定が高い場合に有用です。
- Sharpening
エッジを鮮明にしてボケを軽減します。HMDの解像度に対して、ALVRの解像度設定が低い場合に有用です。
Upscaling
Snapdragon Game Super Resolution(SGSR)を使用します。
- Edge direction
ウェイトの計算にエッジ方向を使用することで、僅かなパフォーマンス低下を伴いながら品質を向上させます。
- Edge threshold
エッジしきい値は、VRを対象とする場合4.0を指定することが推奨されています。
- Edge sharpness
エッジのシャープネスです。デフォルトでは2.0に設定されています。1.0~2.0の範囲で任意の値に設定できます。
- Upscale factor
何倍にアップスケールをするか指定できます。倍率を上げすぎると、HMDの性能が低い場合や使用する解像度設定が高いときにパフォーマンスが低下します。
Video NVENC/AMF
NVENCはNVIDIA用の設定で、AMFがAMD用です。現在は手元にRadeonしかないのでAMFの説明のみ記載します。
Enable High-Motion Quality Boost
ハイモーションクオリティブーストを有効にします。
動きを事前分析してその情報を活用する(動きの激しいシーンのディテールレベルを調整する)ことで、エンコード品質を改善します。速い動きによって生じるモーションブラーやノイズに対処するために使用します。
Use preproc
AMF Pre-Processingを有効にします。これにはエッジ適応型のノイズ除去フィルターが含まれており、人間の視覚に影響が少なくより多くのビットレートを必要とする高周波のディテールを除去する事を目的とした機能です。特に低ビットレート時に効果を発揮します。
Enable Pre-analysisを使用する場合はオンにしてください。
Preproc sigma/Preproc tor
Use preprocを有効にしたときのパラメーターです。
- Preproc sigma(AMF_PP_ADAPTIVE_FILTER_STRENGTH)
ノイズ除去フィルターの強さです。値を上げすぎるとディテールが失われます。デフォルト値は4です。
- Preproc tor(AMF_PP_ADAPTIVE_FILTER_SENSITIVITY)
エッジ検出感度です。値が高いほどエッジが検出されやすくなり、フィルタリングされにくくなります。デフォルト値は7です。
Enable Pre-analysis
エンコード処理を行う前に、シーン検出・モーション解析・量子化パラメーターの決定などを含む映像解析を行います。これによってエンコード品質を向上させます。事前分析にはグラフィックス部分を使用するとのことで、これによってパフォーマンスが低下する可能性があります。
「Use preproc」を有効にする必要があり、「Reduce color banding(※多分10bitエンコードのこと)」は同時に使用できません。
Audio
スピーカーとマイクの設定です。
Headset
Position recentering mode
原点のセンタリングを調整する際の挙動を変更できます。
| Disabled | プレイスペースの原点は、ルームスケールのガーディアン設定に基づきます。 |
|---|---|
| Local floor | 原点は床にあり、Oculusボタンを長押しでリセットできます。 |
| Local | 原点はOculusボタンを長押ししてリセットする際に、現在の頭の位置からのオフセットとして設定されます。 |
Rotation recentering mode
回転リセットの挙動を変更できます。
| Disabled | プレイスペースの向きは、ルームスケールのガーディアン設定に基づきます。 |
|---|---|
| Yaw | Oculusボタンを長押しすると、向いている方向にリセットできます。 |
| Tilted | 横になりながらプレイするときに使用します。Oculusボタンを長押ししてリセットすると、プレイスペースごと傾きます。 |
Controllers
コントローラーの設定です。コントローラーの角度調整などの設定はここで行えます。
VRChat向けに新しいハンドトラッキング設定が増えているのと、Emulation modeはQuest 2 Touchのままで大丈夫みたいです。
- Tracked
コントローラーを使用する場合はオンにします。オフにすると電源オフ扱いとなり切断されます。
- Hand skelton
SteamVRへ指のトラッキング状態が送られるようになります
- Steamvr input 2.0
SteamVR Input 2.0に対応したハンドトラッキングを行います。VRChatでハンドトラッキングを使用する場合は必要です。
- Predict
浮遊感を抑えるためにハンドトラッキングの予測を行います。但し細かく震えるなどのジッターが生じる場合があります。
- Multimodal tracking
コントローラーとハンドトラッキングの同時使用設定です。ハンドトラッキングの周波数は30Hzに低下します。ボディトラッキングと一緒に有効にすることはできないとのこと。
- Hand tracking interaction
ハンドトラッキングのジェスチャーでコントローラーのボタンなどをエミュレートします。
- Prediction
コントローラーのトラッキングをスムーズにする為のものです。SteamVRに送信されたトラッキングデータに対応するVsyncが発生するまでの時間を、フレーム数で指定するとのこと。2フレームが理論的には正しいようですが、ネットワークと内部(SteamVRのコンポジター)の遅延を考慮すると2.1フレーム前後が丁度良いという理由で2.10framesがデフォルトになっているようです。
90Hzでの基準なので72Hzで使用する場合は1.68framesにすると似たような調整になるはずです。(2.1フレーム x 11.11ms = 約23.3msの遅延となることから算出、23.3を1フレームの時間で割るとPredictionの目安が計算できます。)
- Haptics
コントローラーのバイブレーション機能です。
- Emulation mode
コントローラーのエミュレーションモードを変更できます。QuestやPICOのコントローラーの他、VIVEやIndexコントローラーとしてエミュレーションさせることが可能です。
- Linear velocity cutoff
コントローラーの移動速度(直線的な動き)が設定値以下となる場合、動作していないものとして扱います。手ぶれ補正のようなものです。デフォルト値は0.050m/sですので、0.05メートル/秒以下なら静止扱いになります。
- Angular velocity cutoff
コントローラーの回転速度が設定値以下となる場合、回転していないものとして扱います。デフォルト値は10.0°/sですので、回転角度が10度/秒以下なら回転が無視されます。
- Left controller position offset / rotation offset
- Left hand tracking position offset / rotation offset
コントローラーやハンドトラッキングの位置や回転具合を調整出来ます。左手コントローラーの設定しかありませんが、ここの設定は右手コントローラーにミラーリングされます。
Face tracking
フェイストラッキングの設定です。VRCFTで使用する場合は、Sinkを「VRCFaceTracking」に設定し、VRCFT側にALVR Moduleをインストールしておく必要があります。
予めPresetsの方で変更してあればここを弄る必要はありません。
Body tracking
Quest(Meta)とPICO(Bd)で利用できる機能のようです。VIVEトラッカーのように振る舞うかOSCとして制御するかを選択できます。
- Prefer full body
- Prefer high fidelity
Questでは仮想トラッカーが使用できます。Prefer high fidelityはQuest 3専用で、上半身トラッキング強化のモードです。
PICOで利用する場合、PICO Motion Trackerを装着してキャリブレーションを行った後ALVRを起動します。ボディトラッキングモードとオブジェクトトラッキングモードのどちらかを選択できます。
- High accuracy
- Prompt calibration on start
High accuracyはトラッカーのトラッキング精度が向上しますが、遅延が発生します。Prompt calibration on startはSteamVRと接続完了後にキャリブレーションプロセスが開始されます。
VMC
Virtual Motion Capture Protocolを使用します。OSCを介したトラッキングが行えるようです。

Max prediction ms
ヘッドセットとコントローラーの最大予測時間です。過度なジッターを回避するために使用します。
Connection
接続設定です。基本的に弄る必要はありませんが、USB接続でストリーミングを行いたい場合はUDPからTCPに変える必要があるとのこと。
また、パケットロスによりブロックノイズや残像、色化けといったグリッチが頻繁に発生する場合は、「Avoid video glitching」を使用します。これは破損したフレームを破棄し続けて次のIDRフレームが到達するまで映像を停止する機能です。このIDRフレームの間隔は「Minimum IDR interval」で100msが指定されています。
Extra
ALVRの挙動を変更できます。SteamVR起動時の挙動(ドライバーの設定)やログなどに関する設定があります。









