[Oculus Quest 2]Virtual Desktopの遅延(Latency)を限界まで下げる方法、最適化する方法 第二版 2020/10/24 更新。文章を可能な限り読みやすく分かりやすくした。 第三版 2020/11/09 更新。追加で分かった事などを解説。 Virtual Desktop Host App (VR)でこのレイテンシーレベルまで到達するのに やったこと、やってみたこと、推測したメモなどを書き記します。 結論から先に言ってしまうとQuest 2が新Wifi規格のAXに対応しているので私は専用のWifi6(AX)対応ルーターを買いました。 当記事では開発者モードオン、Virtual Desktop購入済み、SideQuest導入済み、 Virtual DesktopのVR PatchをSideQuestストアからSideloadしている人を対象とします。 その方法については他サイトの方が詳しく噛み砕かれて分かりやすいのでググって調べてください。 グラボがNvidia製の場合のみ利用可能な設定 (AMDのグラボの方すみません。) (当方RTX2070Super Userのため設定項目が出てなかったらごめんなさい。) Nvidiaコントロールパネル>3D 設定の管理 >グローバル設定>設定一覧の… ⊿バーチャルリアリティ-可変レート スーパーサンプリング=適応に変更 ⊿電源管理モード=パフォーマンスを最大化を優先に変更 第四版 2020/11/09 更新 追記分 --ここから-- Nvidia Shadowplayを無効化する事でも効果があるようです。 色々面倒くさいのでNvidia Geforce Experienceをアンインストールしました。 第三版 2020/11/09 更新 追加分 --ここから-- Virtual Desktop Streamer編 K-Lite Codec Pack Megaをダウンロードし、インストールする。 Automatically Adjust Bitrateにチェックを入れる スタート>右クリック>ファイル名を指定して実行>regeditと入力>OK HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\に移動して右クリック新規>DWORD (32ビット)値 出来たDWORDの名前をPortableOperatingSystemにして値を0に設定する。PC再起動で適応完了。 ソース: Discord VDサーバーにて Solexidさんより FAQに良いことが書いてありました。もしVDがGPUではなくCPUを使用している場合(タスクマネージャで簡単に見つけることができます)には、HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\を編集して、PortableOperatingSystemを0に設定してください。 これはWindowsのバグで、いくつかのアップデートの後、OSはポータブルメディアから起動していると考えてしまい、すべてのハードウェアエンコーディングオプションを無効にしています(なぜかはわかりませんが)。 この小さな修正の後、VDはストリーミングにGPUエンコーディングを使用するようになりました。 また、VDと同じトランスコードAPIを使用しているので、その修正はXBOX DVRにも効きます。 ゲームのプレイ中にバックグラウンドで記録するをオフ Wifi6ルーターをお持ちなら、モードを802.11axのみにする セキュリティをパーソナルでも良いのでWPA3を有効化する PCIeに差すタイプのWifi6ルーターについて。 5Ghz Wifiモバイルホットスポットについてはおま国です。 電波法に触れます。Intel CPUで有効にならないように制限が掛かってます。 諦めてスタンドアロンルーターを買いましょう。高成績を叩き出しているTP-Linkがおすすめです。 セキュリティが強化された Windows Defender ファイアウォール編 スタート>強化された、と文字入力して出てくるプログラムを実行 受信の規則>新しい規則>カスタム>このプログラムのパスに C:\Program Files\Virtual Desktop Streamer\VirtualDesktop.Streamer.exe を追加する。>任意でok>任意でok>接続を許可するにチェックを入れ、次へ>次へ>名前を適当に決める。 C:\Program Files\Virtual Desktop Streamer\VirtualDesktop.Streamer.exe を追加する。>任意でok>任意でok>接続を許可するにチェックを入れ、次へ>次へ>名前を適当に決める。 Virtual DesktopでMSI Afterburnerを使用することに問題がありますか? インストールしてから毎回ノンストップのマイクロスタッター(ラグ)があります Afterbunerは一般的にVRの問題を引き起こすことが知られている SteamVRの問題として Valve が言及しています。 よってMSI Afterbunerはアンインストール推奨。 Windows Defenderか、もしくは似たセキュリティソフトを使用している場合。 Virtual Desktop Host Appがインストールされているフォルダを セキュリティソフトの監視から以下フォルダをフォルダごと除外設定する C:\Program Files\Virtual Desktop Streamer Windows Defenderファイアウォール設定で以下アプリを許可に登録する。 C:\Program Files (x86)\Steam\steamapps\common\SteamVR\bin\win64\vrserver.exe Virtual Desktop Streamer (Host App)を常に管理者実行出来るようにする メインルーターのUPnP機能を有効化する(公式ホームページでそれを推奨している。) メインルーターにHW NATに該当する機能がある場合、これを無効化する。以下理由URL モデムがリビングにあってネット回線をそこから1つメインルーターで引っ張ってきている場合 部屋にも専用のWifiルーターがあるなら二重ルーターになってない事を確認する 2つ目の部屋Wifiルーターがルーターモードになってたら(ルーター側に物理スイッチでRouterになってたら) ルーターの物理スイッチ切り替えでAPモード(アクセスポイントモード)に切り替えるか ブラウザのルーター設定でAPモードにしてメインルーター1つの状態でローカルネットワークを構築する。 家庭内ネットワークにデフォルトゲートウェイが一種類だけの状態が望ましい。例:192.168.3.1 (補足:ルーターをAPモードにするとそのWifiルーターは中継機のような状態になり 接続しているLANケーブルもWifiもメインルーターのHUBになります。) Windows10 OSが固定IPである事を想定して公式ホームページで推奨されたポートを開放する。 全てTCPで設定して以下指定のポートを開放する38810, 38820, 38830, 38840 指定IPは使用しているWindows10マシンのものだとする。 念の為、スタート>cmdで「netstat -nao|find "PID"」をして使用されているポートを調査して Quest 2側で利用されているポート番号もルーター側でポート開放したがレイテンシに変化が無かったので Quest 2からネットワークに送信されているテレメトリをSideQuest経由でadbコマンドを利用して無効化する Windows10とQuest2がUSB接続されているのを前提として以下adbコマンドをSideQuest経由で送信 まず、自動ハンドトラッキング機能を無効にし、実験的なUIを無効にします。 そして次のadbコマンドを1つずつコピーアンドペーストしながらSideQuest経由でQuest 2に送信してください。 adb shell pm disable-user --user 0 com.oculus.os.logcollector adb shell pm disable-user --user 0 com.oculus.gatekeeperservice adb shell pm disable-user --user 0 com.oculus.notification_proxy adb shell pm disable-user --user 0 com.oculus.unifiedtelemetry adb shell pm disable-user --user 0 com.oculus.bugreporter これで影響と変化を検証しましたが、Virtual Desktop AppでSteamVRに入っている時、 オリジナルソースのRedditではGPS(位置情報)を無効化する事も推奨されていますが、私がGPSを無効化した時 ガーディアンの設定が頻繁にリセットされる事に気が付きました。 GOROman氏と相談した結果、Quest2のGPS機能はやはりガーディアンのWifiの位置情報読み出してる説が有力そうです これ(GPS)だけは無効化したら駄目なやつでした。 Potential performance improvements (mainly Virtual Desktop) Quest2側のVirtual Desktop App設定編 レイテンシを可能な限り優先したい場合、画質やフレームレートを犠牲にしてでも軽めの設定をすると改善されます。 英文をしっかり読んで軽めの設定にするとHost Appのレイテンシが改善されることもあります。 お持ちのルーターのスペックに合わせて調整するのが宜しいでしょう。 ちなみに私の設定はVR Medium、VR Bitrate 50Mbps、Slice Encodingにチェックです。 フルトラする人はCenter to play space(Stage Tracking) ルーターとPC間を繋ぐLANケーブルをCAT6aのLANケーブルとして用意する 使用wifiルーターをAX(Wifi6)対応Wifiルーターにする。正直これが一番でかい影響をもたらしました。 レイテンシ次第ではぶっちゃけるとOculus Linkケーブルが要らなくなるレベルです。 初代Oculus QuestはWifi規格はACまでですが、 Oculus Quest 2そのものが最新のWifi規格、通称Wifi6(AX)に対応していると聞いたので Virtual Desktop公式Discordサーバーのネットワーク検証データベースから 一番高得点を叩き出しているTP-Link社製のルーターに絞りました。 買ったのはこれです。性能と速度はこれで十分でした。 ここで注目したいのはWifi6(AX)の特性である超低遅延ネットワーク通信です。 届いたTP-LinkルーターにさっそくWANポートにリビングのメインルーターからの長い有線LANケーブルを差して PCからLANケーブルとNASのLANケーブルを接続しました。 設定は専用スマホアプリで行います。ぶっちゃけるとスマホアプリで設定が完結します。とてもシンプルな設計でした。 その前にTP-Linkルーターに電源を入れてルーター筐体裏面にあるSSIDとPINを確認して スマホ(もしくはタブレット)とTP-Linkルーターをwifiで接続しましょう。 専用SSIDのパスワードはPINに記載されています。これでスマホアプリの設定がうまくいくはずです。 Quest 2でViveトラッカーを利用する人は2.4Ghz Wifiが干渉してしまうため、 スマホアプリの設定でTP-Link Wifiルーターから2.4Ghz Wifi機能を無効化しておいてください。 Quest 2との通信は5Ghz Wifi接続で行います。こちらが下位互換規格wifiを混在して含めたAX通信に対応しているものです。 5Ghz Wifiをルーターの設定で有効化してください。全ての設定が完了したら 最後にポイントなのですが、アプリ側からルーターの動作モードを アクセスポイントモードに設定して再起動を掛けると二重ルーター問題を回避出来ます。 これが重要です。 全ての設定が完了してAP(アクセスポイント)Wifiルーターになったところで Windows 10からQuest 2にpingコマンドを打ったのですが 前のルーターと比べてping到達遅延が劇的に改善されていました。ほぼ有線LANケーブルを直接接続しているような状態です。 それでもLag Spikeが時々出るのはwifiの仕様上仕方無さそうです。 以上が自分の試したVirtual Desktopアプリの環境最適化でした。 余談ですが、Oculus Linkケーブル経由で接続して VRChatを起動してもハンドトラッキングはVRChatでは機能しませんでしたが Virtual Desktop経由でVRChatを行うと、なんとこれが出来ます。 Quest2のVDアプリ内の設定でHand Trackingにチェックを入れている事が条件です。 ここまで全力で環境構築した理由が、もうお分かりですね。 実際にVD Host Appの13msのレイテンシ(VR)でハンドトラッキングを VRChatで試しましたが遅延が0.2秒~0.3秒程度で動作としてはほぼ許容範囲でした。 非公式ではありながら素手で相手を撫でることが出来るだなんてよもや思いもしませんでしたからね。 ちなみに移動はハンドトラッキングに対応していないのでコントローラーで行なってください。 それでは次にOculus Quest 2の面白い使い方を思いつくまでなんか色々調べておきます。 なんか面白そうな事が出来たら関連記事を書きますね。では。 補足ですが、万が一Oculus Quest 2を下手にいじりまくって直せなくなってしまった場合 工場出荷状態に戻してください。これをファクトリーリセットと呼びます。方法はこちらから。