先月ベータ版がリリースされた 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ゲーム をプレイしたりすることができます。

PC用のVRヘッドマウントディスプレイ(Riftシリーズも含む)はビデオカードの映像出力から直に映像や音声を取り出しているので映像劣化や映像遅延が皆無なのですが、Oculus Link(VRidge・ALVR・Virtual Desktop・iVRyも)は超低遅延の動画データとして映像・音声を取り出し、Oculus Quest でこれをストリーム再生しています。
その映像は 初代Oculus Rift を超え「あれ? これなら Rift S もいらないんじゃない?」って言われてしまうほどの勢いなのですが、さすがに Rift S と比べると上記の理由から、どうしても動画再生由来による映像劣化や映像遅延が起こってしまいます。(とはいえ、Oculus Link や Virtual Desktop は十分実用に耐えるレベル)

この違いから Oculus Link は映像品質と映像遅延のバランスを取る必要があり、初期設定ではどんな環境でもそれなりのパフォーマンスが出るように映像品質は低めに設定されています。
SteamVR は映像の解像度を上げてより鮮明な映像が出せるようにすることができ、これと似たようなことが PC版Oculusアプリ の方でも可能なのですが、Oculus Link はまだその設定に対応しておらずイマイチ鮮明さに欠け、なんだか少し映像ボケるよねって印象でした。
そんな中、Oculusのフォーラムで開発者の方からこのような投稿がありました。
なんでも、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アプリから直接呼び出せるようにはなっていません。
開発者の方も「強力な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」で設定してもほとんど効果が表れません。

これやってないと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ゲームをする時は、どちらかの設定をデフォルトに戻しましょう。
ウチのビデオカードだと、どの設定にすればいいの?
自分のビデオカードの性能がどの程度なのか判らない場合は、適当なベンチマークサイトを見て比較してみましょう。
例えば「Radeon RX 580」なら「NVidia GTX 970+ or comparable GPUs」設定。「GeForce GTX 1660 Ti」なら「NVidia GTX 1070+ or comparable GPUs」設定で試してみるような感じです。
Oculus Link がおかしくなったら、一旦初期設定に戻して直す
もし、Oculus Link がうまく接続できなくなってしまったら、最初の設定画面を参考にして一旦初期設定に戻しましょう。

設定項目の詳細と注意事項など
海外サイトの「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画面内に映像の送信状況や遅延などが表示されます。

今度は、設定を変えると遅延がどれくらい変化するのか比較してみます。
こちらもデフォルト設定と「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」が追加されました。

設定項目に「Encode Bitrate」が追加されている
ビットレートは0~500Mbpsの範囲で設定できます。
USB2.0接続だと320~340Mbpsくらいまでしか速度が出ないので、それ以上の値で使用するにはUSB3.0接続が必要になります。
遂にUSB3.0接続の本領が発揮される時が来たか?と、かなり期待して試してみたのですが……
ODTのビットレート設定試してみた
初期値(150Mbps?) → 500Mbps 正直わからん
10Mbps ガビガビ 無理
40Mbps ちょっとノイズが見える
150Mbps 普通に綺麗
480Mbps 正直わからん
150Mbpsで既に頭打ち感があるんだけど何か見落としているところがあるのかな?— オタ趣味ブログ (@otasyumiblog) October 24, 2020
OculusHomeだけではなく、VRChatの視力検査ワールドなども回ってみたのですが、ほとんど変化は感じられませんでした。500MbpsってOculusQuest2のエンコード能力でも結構重たくなると思うのですが、特に遅延も増えておらず適用されているのかどうかも怪しく感じます。
10Mbpsに下げると明らかにノイズだらけの映像に劣化するので、全く適用されないワケではないとは思うのですが、デフォルトの状態で既に頭打ちなのか、ある程度の速度で制限がかけられているのか、判別が難しいところですね。(VRストリーミングの品質にあれだけうるさかったOculusがRift Sまで引っ込めるくらいなので、まだまだ何かあるのでは?と期待してしまうのですが…(笑))
ちなみに、Wi-Fiを使って無線でOculusLinkを使用することができる「AirLink」機能を使う時は、この設定を上げるとめちゃくちゃ遅延するようになるので元に戻した方がいいです。
その後、Twitterの情報を元にODTの設定を初期値に直したら #AirLink のトラッキング遅延が直った
ウチの場合、以前ビットレートを480Mbpsに設定していたのがそのまま残っていたのだが、これが遅延の原因になっていたっぽい。この設定ちゃんと機能していたんですな(^_^;#OculusQuest2 pic.twitter.com/TpQmUBjwpg— オタ趣味ブログ (@otasyumiblog) April 24, 2021
最後に(と、言うかケーブルの話)
この記事をまとめている最中に、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ケーブルです。
使用したケーブル エレコム USB3-AC20BK
とりあえず2mで我慢しつつ公式ケーブルのリリースを待つ作戦(笑)#OculusQuest #OculusLinkhttps://t.co/S2BujMs7XU— オタ趣味ブログ (@otasyumiblog) November 18, 2019
中華製の5mケーブルも一応使用できてはいますが、ちょっと変なところがあったので以前の報告ツイートの一部も載せておきます。この報告ツイートを一通り見たい方は下のツイートをクリックしてみてください。
LICHIFITの5mケーブルが届く。結果的には動いていますが少し変な所があるのでご報告。
・端子の向きがなんか違う。
ウチに届いたケーブルはこの向きで差さないとUSB3.0以上として認識されません。
あちこちに挙がっている報告を見る限りでは個体差っぽいのですが、品質管理の甘さがいかにも中華。 pic.twitter.com/QCgNg630Ch— オタ趣味ブログ (@otasyumiblog) December 29, 2019
・USB3.2端子を使わないとダメ。
エレコム2mケーブルは3.0端子に差しても大丈夫だったのですが、このケーブルは3.2端子に差さないと #OculusLink に接続できませんでした。
原因は不明ですが、給電回りの問題っぽいので使用マザボも書いておきます。→ ASRock X570 Steel Legend#OculusQuest pic.twitter.com/uOyeW6HgGJ— オタ趣味ブログ (@otasyumiblog) December 29, 2019
#OculusLink に限った話ではありませんが、変換コネクタや変換ケーブルを使用してUSBType-A to C状態にするとType-C側にも裏表ができてしまいます。向きが合わないと高速通信できないのでご注意を。Type-C to Cなら問題ありません。#OculusQuest
— オタ趣味ブログ (@otasyumiblog) November 19, 2019
もっと長いケーブルが必要な場合は、単純な延長ケーブルではなく特殊な回路が入っている「リピーターケーブル」を使って延長することをお勧めします。(単純な延長ケーブルでは3~5mを超えたあたりで使用できなくなったと言う報告をあちこちで見掛けたのでご注意を)
こちらもTwitter等で使用できたと言う報告のあったものを載せておきます。
冷静に考えると、未完成機能のアクセサリーが先に発売されるって凄い事態ですよね。相変わらず海外のフットワークの軽さに脱帽です。
DMMアプリのQuest版も配信されたし、筆者も安心してクリスマスを迎えられそうです(爆)
コメント