RadeonでALVRを使う

VRChatなどでのハンドトラッキング対応が大幅に改善された、ALVR v20.11.0時点での情報です。RadeonのAMF関連がメインでGeForce向けの情報はないので、あくまでも個人的な備忘録。

GitHub - alvr-org/ALVR: Stream VR games from your PC to your headset via Wi-Fi
Stream VR games from your PC to your headset via Wi-Fi - alvr-org/ALVR

インストール

PCにインストールする

以降、Windowsで使用する前提で説明をします。

GitHubのReleasesページから最新のalvr_launcher_windows.zipをダウンロードして、管理者権限の必要が無い場所に展開してください。ユーザー名に日本語が含まれていなければ、ドキュメントフォルダで大丈夫です。

Add versionボタンから最新のバージョンをインストールします。

HMDが開発者モードになっていてadbコマンドが通る状態であれば、Install APKボタンからHMDへのインストールが行えます。ダッシュボードの起動はLaunchボタンを押します。

Releases · alvr-org/ALVR
Stream VR games from your PC to your headset via Wi-Fi - alvr-org/ALVR

VB-Cableのインストール

「Download VB-Cable」をクリックして、公式サイトからダウンロードします。「VBCABLE_Setup_x64.exe」を管理者として実行してインストールしておいてください。インストール後はOSの再起動が必要です。

VB-Audio Virtual Apps
VB-Audio Virtual Cable and App's

ファイアウォールの許可

HMDとの接続のためにファイアウォールに接続ルールを追加します。管理者権限が必要です。

HMDにインストールする

Meta Questシリーズ

現在はApp Labで公開されていますので、ストアでALVRを検索すれば出てきます。Side Questを使用する必要はありません。

ブラウザーをアップデートしてください

PICO 4

まだストアに公開されていませんが、いずれリリースされる予定だそうです。ALVR LauncherのInstall APKボタンから入れましょう。

VIVE Focusシリーズ

手元にないので詳細は分かりませんが、開発者モードにしてあれば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」を押します。

わからん、どうすればいい?

  • ALVRだけが動いたら良い、フルトラしてない→Unregister other drivers at startup
  • ALVRだけが動いたら良い、IMU方式のトラッカーでフルトラしている→Unregister ALVR at shutdown
  • Virtual Desktopを使うときがある→No actionに設定し、その都度SteamVRの設定から必要なアドオンをオンオフして再起動する

HMDを登録する

同じネットワーク内でQusetやPICO側でALVRを起動しておき、ダッシュボードのDevicesタブで「Launch SteamVR」を押します。

Trustボタンが出てくるので、押すとHMDが登録されてSteamVRが再起動します。

詳細設定

Settingsから様々な設定が行えます。

Presets

プリセットによる簡易設定が行えます。

Resolution

両目での解像度です。

Very Low3072 x 1536px
Low3712 x 1856px
Medium4288 x 2144px
High5184 x 2592px
Ultra5632 x 2816px
Extreme6080 x 3040px

Preferred framerate

フレームレートの設定をします。ヘッドセット側で設定されているリフレッシュレートが最大フレームレートとなります。

Encoder preset

エンコーダーの設定です。設定を上げすぎると、スタッタリングや表示の乱れが起こりやすくなります。初期設定ではSpeedが選択されています。

Headset speaker

ここで選択した音声デバイスの音がヘッドセットへ送られます。

Headset microphone

例えばQuestのマイクを使用したい場合は、VB Cableを選択します。(VB Cableは予めインストールし、一度OSの再起動をしてください。一度も再起動していない場合エラーが出ます。)

Hand tracking interaction

ハンドトラッキングの設定です。

Disabledハンドトラッキングを使用しません。
SteamVR Input 2.0VRChat用にハンドトラッキングデバイスを別途生成します。
ALVR bindingsALVR独自のバインドで、ハンドトラッキングにトリガーやスティックの操作が割り当てられます。
Hand tracking controller bindings
Stream VR games from your PC to your headset via Wi-Fi - alvr-org/ALVR

Eye and face tracking

アイトラッキング・フェイストラッキングの設定です。

Video

Bitrate

ビットレート設定です。詳細設定が行えるExpandボタンがあります。

  • Mode

固定ビットレートのConstantと、通信状況に合わせて変動するAdaptiveが選択できます。
ビットレート設定は5~1000Mbpsまで選択できますが、800~1000Mbpsクラスは有線接続時に使用することをお勧めします。
Wi-Fi環境下ではH.264で300Mbps、HEVCで150Mbpsぐらいを最大値の目安として設定します。あまり高くし過ぎるとHMD側が処理しきれない可能性があります。

  • Image corruption fix

ビットレートが変更されたときにIDRフレームを要求し、画像の破綻を修正します。Radeonのみ影響する設定です。

Preferred codec

H.264/HEVC/AV1の中からコーデックを選択します。

HEVCはエンコーダーのレイテンシーが上がりますが、効率が良いためビットレートが限られる場面でも良好な品質を得られます。ネットワーク側がボトルネックとなる場合に有用です。AV1は更に高効率なコーデックですが、Radeon 7000シリーズ以上かつQuest 3の組み合わせでないと利用できません。(※今のところ、ALVRのWindows版ではRadeonのみAV1を使用可能です。)

ドライバーのバージョンによると思われますが、RadeonでHEVCエンコーダーを使用すると何かしらのトラブルが起こることがありました。

Foveated encoding

フォービエイテッド(中心窩)レンダリングの動画バージョンです。フォービエイテッドエンコーディングという名前の通り、レンダリング済みのフレーム対して処理をするものなので、レンダリング負荷が下がるわけではありません。

中心部の画質を保ちながら周辺の解像度を落とす事で、映像のエンコード・デコード速度を短縮できるほか、同じビットレートならば低解像度時の品質が向上します。そのため、低速のネットワークでもビットレートを下げることで、Foveated encoding未使用時と同じ画質になります。

Color correction

色補正です。ブライトネス、コントラスト、彩度、ガンマ、シャープの6項目を調整出来ます。

Optimize game render latency

ゲーム側の処理優先度を変更する、Windows向けの設定です。

Encoder config

細かなエンコード設定が行えます。

  • Rate control mode

CBRが推奨設定です。VBRはアダプティブビットレートのアルゴリズムを狂わせる可能性があります。

  • Filler data

CBRモード使用時に、割り当てられたビットレートを下回らないようにします。主にデバッグで役立つ機能です。

  • h264: Profile

High/Main/Baselineから選ぶことができます。

  • Entropy coding

CAVLCが推奨設定です。CABACは圧縮率は向上しますが、非常に低速なのでレイテンシーが生じる可能性があります。

  • 10 bit encoding

8bitではなく10bitでエンコードします。Radeonのドライバーバージョンによっては、色が緑色になったり赤みがかったりするなど、表示に異常が起こる場合がありました。

  • Full renge color

フルレンジRGBでエンコードします。無効にすると、リミテッドレンジでエンコードするようになります。

  • Encofing Gamma

エンコーダーに任せる場合は1.0にします。暗い部分を優先して2.2に設定する場合、色ズレやトーンジャンプが生じる可能性があります。

  • Enable HDR/Force HDR sRGB Correction/Clamp HDR extended range

HDR関連ですが、手元では検証できないと思われるので割愛します。

  • NVENC/AMF

ハードウェアエンコーダーの設定です。こちらは項目の最後に別記します。

  • Software

ソフトウェアエンコードを使用する設定ですが、CPUでのエンコードは速度的に実用的ではないので使用しません。

Force software decoder

HMDやスマートフォン側でソフトウェアデコードを試みます。遅いですが、不具合を回避できる可能性があります。

Mediacodec extra options

MediaCodecの設定が行えます。Android向けのオプションだと思われますが、詳細はよく分かりませんでした。

Transcoding view resolution

エンコード・デコードで使用する片目あたりの解像度です。

Emulated headset view resolution

SteamVRで使用する片目あたりのレンダリング解像度です。

Preferred FPS

フレームレート設定です。

Adapter index

特別な理由がない限り、変更しないでください。

Clientside foveation

動作しないらしい。

Video NVENC/AMF

NVENCはNVIDIA用の設定で、AMFがAMD用です。現在は手元にRadeonしかないのでAMFの説明のみ記載します。

Quality preset

Speed/Balanced/Qualityから選択できます。

Enable VBAQ/CAQ

視覚的な品質を向上させる機能です。高速な動きや、複雑なディテールがあるシーンのエンコードに効果的です。

Enable High-Motion Quality Boost

ハイモーションクオリティブーストを有効にします。

動きを事前分析してその情報を活用する(動きの激しいシーンのディテールレベルを調整する)ことで、エンコード品質を改善します。速い動きによって生じるモーションブラーやノイズに対処するために使用します。

Use preproc

AMF Pre-Processingを有効にします。これにはエッジ適応型のノイズ除去フィルターが含まれており、より多くのビットレートを必要とする高周波のディテールを除去する事を目的とした機能です。

Preproc sigma/Preproc tor

Preproc sigma(AMF_PP_ADAPTIVE_FILTER_STRENGTH)は前処理フィルターの強さで、値を上げるとフィルタリングが強くなります。

Preproc tor(AMF_PP_ADAPTIVE_FILTER_SENSITIVITY)はエッジ検出感度で、値が高いほどエッジが検出されやすくなり、フィルタリングされにくくなります。

Enable Pre-analysis

エンコード処理を行う前に、シーン検出・モーション解析・量子化パラメーターの決定などを含む映像解析を行います。これによってエンコード品質を向上させます。事前分析にはグラフィックス部分を使用するとのことで、これによってパフォーマンスが低下する可能性があります。

「Use preproc」を有効にする必要があり、「Reduce color banding(※多分10bitエンコードのこと)」は同時に使用できません。

GitHub - GPUOpen-LibrariesAndSDKs/AMF: The Advanced Media Framework (AMF) SDK provides developers with optimal access to AMD devices for multimedia processing
The Advanced Media Framework (AMF) SDK provides developers with optimal access to AMD devices for multimedia processing ...

Audio

スピーカーとマイクの設定です。

Headset

Position recentering mode

原点のセンタリングを調整する際の挙動を変更できます。

Disabledプレイスペースの原点は、ルームスケールのガーディアン設定に基づきます。
Local floor原点は床にあり、Oculusボタンを長押しでリセットできます。
Local原点はOculusボタンを長押ししてリセットする際に、現在の頭の位置からのオフセットとして設定されます。

Rotation recentering mode

回転リセットの挙動を変更できます。

Disabledプレイスペースの向きは、ルームスケールのガーディアン設定に基づきます。
YawOculusボタンを長押しすると、向いている方向にリセットできます。
Tilted横になりながらプレイするときに使用します。Oculusボタンを長押ししてリセットすると、プレイスペースごと傾きます。

Controllers

コントローラーの設定です。コントローラーの角度調整などの設定はここで行えます。

VRChat向けに新しいハンドトラッキング設定が増えているのと、Emulation modeはQuest 2 Touchのままで大丈夫みたいです。

  • Hand skelton

SteamVRへ指のトラッキング状態が送られるようになります

  • Steamvr input 2.0

SteamVR Input 2.0に対応したハンドトラッキングを行います。VRChatでハンドトラッキングを使用する場合は必要です。

  • Multimodal tracking

コントローラーとハンドトラッキングの同時使用設定です。ハンドトラッキングの周波数は30Hzに低下します。ボディトラッキングと一緒に有効にすることはできないとのこと。

  • Hand tracking interaction

ハンドトラッキングのジェスチャーでコントローラーのボタンなどをエミュレートします。

  • Left controller position offset / rotation offset
  • Left hand tracking position offset / rotation offset

コントローラーやハンドトラッキングの位置や回転具合を調整出来ます。

Connection

接続設定です。基本的に弄る必要はありませんが、USB接続でストリーミングを行いたい場合はUDPからTCPに変える必要があるとのこと。

ALVR wired setup (ALVR over USB)
Stream VR games from your PC to your headset via Wi-Fi - alvr-org/ALVR

Extra

ALVRの挙動を変更できます。SteamVR起動時の挙動(ドライバーの設定)やログなどに関する設定があります。

タイトルとURLをコピーしました