【Oculus Quest】Oculus Link の映像をより鮮明にカスタマイズしてみる 【Oculus Debug Tool(ODT)】

Oculus Quest
スポンサーリンク

先月ベータ版がリリースされた Oculus Quest の目玉機能「Oculus Link」は、一言で説明すると「Oculus Quest」を「Oculus Rift S」の代わりに使えるようにする機能です。

Oculus Link を使って Oculus Quest をPCに接続すると、Oculus Riftシリーズ 向けに用意された PC版Oculusアプリ やPC版のメニュー画面である「Oculus Dash」を使用して、Rift版VRアプリ や Steam等のVRゲーム をプレイしたりすることができます。

Oculus Dash

PC用のVRヘッドマウントディスプレイ(Riftシリーズも含む)はビデオカードの映像出力から直に映像や音声を取り出しているので映像劣化や映像遅延が皆無なのですが、Oculus Link(VRidgeALVRVirtual DesktopiVRyも)は超低遅延の動画データとして映像・音声を取り出し、Oculus Quest でこれをストリーム再生しています。

その映像は 初代Oculus Rift を超え「あれ? これなら Rift S もいらないんじゃない?」って言われてしまうほどの勢いなのですが、さすがに Rift S と比べると上記の理由から、どうしても動画再生由来による映像劣化や映像遅延が起こってしまいます。(とはいえ、Oculus Link や Virtual Desktop は十分実用に耐えるレベル)

タイミング命の Beat Saberでもそれほど気にならないくらい低遅延

この違いから Oculus Link は映像品質と映像遅延のバランスを取る必要があり、初期設定ではどんな環境でもそれなりのパフォーマンスが出るように映像品質は低めに設定されています。

SteamVR は映像の解像度を上げてより鮮明な映像が出せるようにすることができ、これと似たようなことが PC版Oculusアプリ の方でも可能なのですが、Oculus Link はまだその設定に対応しておらずイマイチ鮮明さに欠け、なんだか少し映像ボケるよねって印象でした。

そんな中、Oculusのフォーラムで開発者の方からこのような投稿がありました。

Oculus Link Resolution with v12
With the release of v12 for the Oculus PC runtime, we now allow overriding the default Oculus Link Resolution using the Oculus Debug Tool (ODT) which is located...

なんでも、PC版Oculusアプリのv12では「Oculus Debug Tool(ODT)を使用して、デフォルトのOculus Link Resolutionを上書きできるようになりました」とあります。

先ほど述べた設定とはまさにこの設定のことで、これが Oculus Link でも設定可能になったようです。

今回はこのツールの使い方や実際に試してみた感想などを書いてみたいと思います。

「Oculus Debug Tool(ODT)」とは?

「Oculus Debug Tool」とは、その名の通りVRアプリの開発者に向けたデバッグ用のツールです。Oculusヘッドセットの解像度・FOV等の細かい変更や映像送信状況等のデバッグ情報を表示したりすることができます。

これはPC版Oculusアプリに同梱されているので、特に別途インストールしなくても使用できるようになっていますが、変にいじるとVRパフォーマンスに影響が出たりOculus Linkが起動できなくなったりするので、PC版Oculusアプリから直接呼び出せるようにはなっていません。

Oculus Debug Tool | Oculus Developers
Describes how to use the Oculus Debug Tool (ODT).

開発者の方も「強力なGPUを使用する上級ユーザーのみがODT設定を試してみることをお勧めします」とコメントされているので、あくまで自己責任として使用してください。

Oculus Debug Tool のインストールされている場所

PC版Oculusアプリをデフォルト設定のままインストールすると、Oculus Debug Tool は「C:\Program Files\Oculus\Support\oculus-diagnostics」フォルダに入っています。

アイコンを右クリックして「ファイルの場所を開く」

「OculusDebugTool.exe」がツールの本体です。

これを起動する時は、普通にダブルクリックして起動するのではなく、右クリックメニューの「管理者として実行」から起動するようにしてください。

ショートカットを作っておいたり、プロパティの互換性タブから「管理者としてこのプログラムを実行する」にチェックを入れておくと便利です。

設定のやり方

まず初めにPC版Oculusアプリを立ち上げ、「デバイス設定 → Quest(2)とTouch → グラフィック設定」から「品質を優先」に設定しておきます。これをやっておかないと「OculusDebugTool」で設定してもほとんど効果が表れません。

初めに、Oculusアプリ側で「品質を優先」に設定しておく
これやってないとODTでいくら設定してもムダ

「OculusDebugTool」を起動するとこんなウィンドウが出てきます。

パッと見た感じではなんだかよくわかりませんが、この初期設定は覚えておくようにしましょう。

とりあえず、フォーラムの投稿に「初期チューニングの推奨事項」としてビデオカード毎の推奨設定が書かれています。これを元にして各自必要に応じて調整するのが良いとのことです。

・NVidia RTX 2070+ or comparable GPUs
 Curvature “Low”, Encode Resolution “2912”, Pixel Density “1.2”

・NVidia GTX 1070+ or comparable GPUs
 Curvature “High”, Encode Resolution “2352”, Pixel Density “1.1”

・NVidia GTX 970+ or comparable GPUs
 Curvature “Default”, Encode Resolution “2016”, Pixel Density “1.0”

略して書かれているので判りにくいのですが、それぞれ以下の項目のことを差しています。

  • Curvature → Distortion Curvature(曲率)
  • Encode Resolution → Encode Resolution Width(エンコード解像度)
  • Pixel Density → Pixels Per Display Pixel Override(ピクセル密度)

筆者PCのビデオカードは GeForce RTX2080 SUPER なので、とりあえず「NVidia RTX 2070+」の設定を入れてみました。まずは、この設定にしてちゃんと動くのかどうか確認します。

Oculus Dash が無事に起動できました。なんだか映像が少し鮮明になっている気がします。

「Pixels Per Display Pixel Override」は基本的に即時反映

「Pixels Per Display Pixel Override」は、基本的に数字を入力してEnterを押した瞬間に反映されます。(QuestをかぶったままEnterを押すとわかりやすい)

先に設定しておいても適用されていないことが多いので、OculusLinkを起動してから設定するようにしましょう。

VRアプリによっては、そのアプリの再起動が必要(PC版Oculusアプリの再起動は必要ない)なので、Oculus Dash で設定を済ませてから各アプリを起動するようにした方が良いです。

「Oculus Link」項目を反映するためには PC版Oculusアプリ の再起動が必要

「Oculus Link」の項目にある「Distortion Curvature」と「Encode Resolution Width」の設定を反映するにはOculusアプリを再起動する必要があります。

設定を変更して「Restart Oculus Service」を選択すると、選択した瞬間にPC版Oculusアプリが終了してOculusLinkの接続が切れます。

すぐにPC版Oculusアプリが起動してくるので、鼻のスキマ等からアプリの起動を確認した後にQuestの「設定 → デバイス」画面から再接続しましょう。

この設定は保存されるので問題無いのですが、アプリ再起動後は「Pixels Per Display Pixel Override」が内部でデフォルトに戻っているので、もう一度数字を入れ直して再設定するのを忘れずに。

SteamのVRゲームをする時は、SteamVRの設定にも注意

SteamVRの方でも設定を上げていると、効果が結合されてとんでもない高負荷になっていたりすることがあります。

SteamのVRゲームをする時は、どちらかの設定をデフォルトに戻しましょう。

ウチのビデオカードだと、どの設定にすればいいの?

自分のビデオカードの性能がどの程度なのか判らない場合は、適当なベンチマークサイトを見て比較してみましょう。

FINAL FANTASY XV WINDOWS EDITION | SQUARE ENIX
最先端ゲームの感動体験をすべてのユーザーに── 初めて「ファイナルファンタジー」をプレイする人のための、15番目の最新作。

例えば「Radeon RX 580」なら「NVidia GTX 970+ or comparable GPUs」設定。「GeForce GTX 1660 Ti」なら「NVidia GTX 1070+ or comparable GPUs」設定で試してみるような感じです。

Oculus Link がおかしくなったら、一旦初期設定に戻して直す

もし、Oculus Link がうまく接続できなくなってしまったら、最初の設定画面を参考にして一旦初期設定に戻しましょう。

この画面のまま Oculus Dash が出てこなくなったら、一旦初期設定に戻して「Restart Oculus Service」すると元に戻る

設定項目の詳細と注意事項など

海外サイトの「UPLOAD」に各項目の細かい説明があったので、そちらのGoogle翻訳も載せておきます。

Distortion Curvature:この設定についての説明はありませんが、周辺で解像度が低下する曲線を設定する可能性があります。直感に反して「低」は「高」よりも優れた品質を提供します。

Encode Resolution Width:Oculus Linkは、USB接続を介して圧縮ビデオストリームを送信することで機能します。この設定により、このビデオストリームの解像度が決まります。

Pixels Per Display Pixel Override:これは、VRアプリの実際のレンダリング解像度を設定する10進数です。1.0がデフォルトです。これは軸ごとの値であるため、1.2の値は実際にはデフォルトより44%多いピクセルがレンダリングされることを意味します。

https://uploadvr.com/oculus-link-resolution-increase-odt/

開発者の方からの注意事項も抜粋して載せておきます。特に「Pixels Per Display Pixel Override」はデバッグツール上では変わっていてもOculusアプリを再起動すると内部的にデフォルトに戻っているところに注意。

・「Oculus Link」フィールドは、Oculus Serverの再起動後も保持されます。

・Oculusサーバーの再起動後、「ピクセル密度」は  持続しません

・「ピクセル密度」は次元ごとです。たとえば、1.2xの設定は2Dで1.44xを意味し、レンダリングされるピクセルが44%増加します。2.0xは、レンダリングされるピクセルが300%多いことを意味します。

・「ピクセル密度」が高いと、VRアプリのフレームがドロップする可能性があり、VRアプリのパフォーマンス特性に応じて異なります。

・「エンコーダーの解像度」を高くすると、コンポジターフレームがドロップしたり、目に見える裂け目が生じたりする可能性があります。これは主に、PC GPUとQuestのエンコード機能に関係しています。

・一般的に解像度が高いと、レイテンシーが長くなる可能性もあります。

・不必要に高い解像度(特に「エンコード解像度」)を使用すると、高周波の詳細でエイリアシングアーティファクト(ピクセルクロール)が発生する可能性があります。

・変更を元に戻すには、必要に応じてそれらを0または「デフォルト」に戻します。

・SteamのSSが次元ごとか完全な2Dかはわかりません。ただし、SteamVR値とOculus値の両方を変更しないでください。それ以外の場合、効果が結合されると思います。

https://forums.oculusvr.com/community/discussion/83561/oculus-link-resolution-with-v12

もっと書こうと思いましたが、正直力尽きた(爆)

映像の比較

ブログ画像だとほぼ判らないと思いますが、scrcpyで撮った動画のスクリーンショットで比較してみます。

デフォルト設定と「NVidia RTX 2070+ or comparable GPUs」の推奨設定での比較です。

右奥に浮かんでいる柱・銃のナットや右側の切れ込みに注目すると鮮明さの違いがわかると思います。

ブログでは画像を拡大してようやく判別できるかも?と言った感じですが、この変化は映像全体にかかっているので実際に見てみた方が違いを感じやすいと思います。

遅延の比較

「HUDs」の「VisibleHUD」を「None」から「Performance」に変更すると、VR画面内に映像の送信状況や遅延などが表示されます。

これを「Performance」にする

今度は、設定を変えると遅延がどれくらい変化するのか比較してみます。

こちらもデフォルト設定と「NVidia RTX 2070+ or comparable GPUs」 推奨設定との比較で、使用しているビデオカードはGeForce RTX 2080 SUPERです。

この中の「App Motion-to-Photon Latency」を見てみると、筆者の環境だと遅延は大体45msくらいで推移しているようです。推奨設定に上げても3~4msくらいしか上がらずほぼ誤差の範囲と言ったところ。

推奨設定から「Encode Resolution Width」だけ1.25倍(3640)するとLatencyは65ms程度に増加するも解像度の変化は全く感じられません。1.5倍(4368)にするとOculusLinkが起動しなくなったので、解像度は推奨設定でほぼ限界と判断しました。

推奨設定から「Pixels Per Display Pixel Override」だけを 1.6 に上げてみると一気に負荷が上がり、App Frame rate が72Hzを保てなくなってきます。

1.8に上げると App Frame rate は24Hzになっていますが、実際の映像は1コマ更新するのに数秒かかるような半フリーズ状態に(笑) こちらの設定も重くなるだけで全く変化を感じませんでした。

映像は描画さえできてしまえばどのビデオカードでも似たような画質を再現できると思いますが、遅延はビデオカードの性能差がハッキリ出てくる部分だと思われます。

  • App Motion-to-Photon Latency は50msを超えないか?
  • App Frame Rate が72Hzを保てているか?
  • Performance headroom に余裕があるか?(0以下になることは無いか?)

個人的にはこの三つがチューニングの目安になるのではないかと思います。
これらを参考に、自分の環境に合った設定を探してみましょう。

余談ですが「App Motion-to-Photon Latency」が VirtualDesktop の「Latency」と同じものだとしたら VirtualDesktop の方が、遅延少なくね?(笑)

OculusDashに入れないので、こちらは SteamVR HOME で撮影しました。

VirtualDesktopにはATWやASWと言った映像を滑らかに見せる機能が無いので、なかなか優劣は付けられないのですが、無線でここまで到達しているVirtualDesktopの凄まじさを再確認することに(笑)

OculusQuest2で検証し直した記事もあります。よろしければこちらもご覧ください。

追記 Encode Bitrate

つい先日、公開テストチャンネルにリリースされた「PC版Oculusアプリのv23」のODTに、新しい設定項目「Encode Bitrate」が追加されました。

筆者が現在Quest2で使用している設定
設定項目に「Encode Bitrate」が追加されている

ビットレートは0~500Mbpsの範囲で設定できます。
USB2.0接続だと320~340Mbpsくらいまでしか速度が出ないので、それ以上の値で使用するにはUSB3.0接続が必要になります。

遂にUSB3.0接続の本領が発揮される時が来たか?と、かなり期待して試してみたのですが……

OculusHomeだけではなく、VRChatの視力検査ワールドなども回ってみたのですが、ほとんど変化は感じられませんでした。500MbpsってOculusQuest2のエンコード能力でも結構重たくなると思うのですが、特に遅延も増えておらず適用されているのかどうかも怪しく感じます。

10Mbpsに下げると明らかにノイズだらけの映像に劣化するので、全く適用されないワケではないとは思うのですが、デフォルトの状態で既に頭打ちなのか、ある程度の速度で制限がかけられているのか、判別が難しいところですね。(VRストリーミングの品質にあれだけうるさかったOculusがRift Sまで引っ込めるくらいなので、まだまだ何かあるのでは?と期待してしまうのですが…(笑))

ちなみに、Wi-Fiを使って無線でOculusLinkを使用することができる「AirLink」機能を使う時は、この設定を上げるとめちゃくちゃ遅延するようになるので元に戻した方がいいです。

最後に(と、言うかケーブルの話)

この記事をまとめている最中に、Oculus公式ホームページの方でOculus Linkヘッドセットケーブルが購入できるようになったのですが、そのお値段はなんと 10,200円 と言うUSB 3.0ケーブルとしては非常に高価なものになっています。(一応、事前の予想通りではある(笑))

USB 3.0(USB 3.2 Gen1)はその規格上ケーブル長が3mまでとされていますが、このケーブルはその規格を超える5mの長さがあり、Rift Sのケーブルと同様に光ケーブルが使われていると言われています。(だから高価らしい)

どうしても純正品で揃えたい等のこだわりがあるのなら止めはしませんが、正直言ってこのお値段なら最初に推奨されたAnkerのUSBケーブル(3m)で十分だと思います。(すぐに売り切れてしまうのでこまめにチェックしてみてください)

中華製で少し怪しいのですが、一応 Oculus Link に対応したと謳うものも出てきました。(なんと5mや8mの物も)

ちなみに筆者が使っているのはエレコムの2mケーブルとLICHIFITと言うショップが販売していた中華製の5mケーブルです。

中華製の5mケーブルも一応使用できてはいますが、ちょっと変なところがあったので以前の報告ツイートの一部も載せておきます。この報告ツイートを一通り見たい方は下のツイートをクリックしてみてください。

もっと長いケーブルが必要な場合は、単純な延長ケーブルではなく特殊な回路が入っている「リピーターケーブル」を使って延長することをお勧めします。(単純な延長ケーブルでは3~5mを超えたあたりで使用できなくなったと言う報告をあちこちで見掛けたのでご注意を)

こちらもTwitter等で使用できたと言う報告のあったものを載せておきます。

冷静に考えると、未完成機能のアクセサリーが先に発売されるって凄い事態ですよね。相変わらず海外のフットワークの軽さに脱帽です。

DMMアプリのQuest版も配信されたし、筆者も安心してクリスマスを迎えられそうです(爆)

スポンサーリンク
Oculus QuestVR
スポンサーリンク
スポンサーリンク
スポンサーリンク
スポンサーリンク
スポンサーリンク
オタ趣味ブログ

コメント

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