読者です 読者をやめる 読者になる 読者になる

2014/11現在のDK2設定、バージョン違い等の最適解情報まとめ

概要

OculusRift DK2が発売され、多くの人の手元に届いています。
これからOculusコンテンツを作ろう!と思ったときにSDKバージョンが幾つもあって、お勧めPCも色々あって、どれを選べば良いのかみたいな目安があると、便利かなと思い、調べてみました。
僕の思い込み等が入っている可能性もあるので、ツッコミや質問等、お気付きの点がありましたらtwitter

https://twitter.com/izm

に連絡いただけると嬉しいです。そしてMacは詳しくないので、Windows限定です。(Radeonも詳しくないんで教えてください)

  • デモ、開発用PC別のインストールすべきSDKバージョン
  • Unityの設定
  • どのくらい"VRとして"パフォーマンスが出ているかの確認

と言う内容です。

まず、OculusRift DK2自体のセットアップやファームウェアアップデート等については

を上から順に見ていくと、おそらく初期不良じゃなければ動くはずです。

SDK等の選び方

Unityのバージョンは4.5.2か4.5.5が推奨です。4.5.3-4.5.4は強く非推奨です。
また4.6beta,5.0betaも余程事情が無い限り勧めません。詳しい人なら大丈夫です。
DK2のファームウェアは以下のおすすめOVRSDKバージョンの最新版に合わせるのが無難です。

後述のOVRSDK0.4.2と0.4.3.1の使い分けで

  • OVRSDK0.4.2→Unity4.5.2
  • OVRSDK0.4.3.1→Unity4.5.5

がOculusVRが動作を確認した組み合わせなので、Unityのバージョンもそれぞれに合わせておく事を推奨します。

また、Windows7ではAeroを無効化出来ますが、検証したところメリット(ExtendMode時のPostPresentの値が減らせる等)は確認出来ませんでした。一方でAeroを無効化するとjadderが増えます。よって
Windows7はAero Onが現時点での推奨環境です。

Optimusノート

市場に出ている99%のGeforceGPUが載ったゲーミングノートPCがこれです。GeforceIntelGPUを両方使えるやつです。
このPCを使う場合、前提条件として「小まめにシステムイメージまるごとをバックアップする」ことを強く推奨します。具体的には隔週ごとにバックアップを取るくらいでも間違いではないです。
なぜならOculusランタイムとOptimusノートは相性が悪く、TLを見ている限りかなりの確率でブルースクリーンを繰り返して起動しない状態に陥る為です。
このタイプのPCはOVRSDK 0.4.2一択です。 0.4.3以降だと相性問題が更に悪化するためです。

また、ブルースクリーンを繰り返して起動しなくなった場合、セーフモード起動→GPUドライバのアンインストール→通常起動→GPUドライバの再インストールで復活する事もあるので、試す価値はあります。

このPCはExtendモードでしか動作しません。 稀に当たり個体だとDirectモードが動くようです
[補足] RazerBladeの当たり機種だと動く個体も存在しています。RazerBladeはOculusVR社内にOptimusのテスト環境用に使われているからでしょうか…

[補足の補足] 11/25現在、有志によるDirectModeの動作検証が進んでいます。

OculusSDK Optimus検証メモ

キルロボブログ: G-Tune i790でのOculus Runtime 0.4.3 動作検証

G-TUNEというかClevo製ベアボーンのOEM個体については0.4.3.1(Oculus Runtime 0.4.3)においてDirectModeが動く可能性が高いです。
その際、Windows7の方がWindows8.1よりも動作状況が良い場合が多いです。(おそらく8.1でのマルチGPU周りの追加機能が悪さをしている状態)

また、GeforceDriverは344.75が比較的安定しているので、アップデートを推奨します。

オンボードGPU搭載機種

個人的にはパフォーマンスが出ない為、あまりお勧めではないです。可能ならPCのアップグレードを推奨します。
描画負荷が相当に低いコンテンツなら、大丈夫です。 OVRSDK0.4.2か0.4.3.1をお勧めします。 Directモードが動きます。Directモードでデモしましょう。

それ以外(GPUの載ったデスクトップPC)

MacBookPro(Geforce)、MSI GT72等の一部ノートPC、SLIノートも便宜上ここに入ります。
現時点での最適解なPC群です。

最適なパフォーマンスを出すならOVRSDK0.4.3.1をお勧めします。
過去のノウハウを使う可能性があるならOVRSDK0.4.2も次善の手です。(例えばFinalIKでポジトラと自キャラを合わせる、OVRCameraControllerを書き換える等)
Directモードでデモしましょう。

Unityの設定

力尽きました。後で追記します…
まずはビルドしたらDirectToRift.exeで起動する事とか、UnityをDX11モードで起動するべきかとか、VSyncはUnityでオフにするかオンにするかとか、0.4.3以降だとScreenScaleを変えてパフォーマンス稼げるとか、maxFovをケチってしまうと微妙にパフォーマンスが稼げるとか色々あるんですが、うまく書ける自信がありません…

VRパフォーマンスの検証

まずは前提として「75FPSをキープ出来るようにコンテンツを作る」ようにしないと、この項はほとんど無意味です。
パフォーマンスチューニングは大変ですが、頑張るしかありません。
本題です。基本的な話をすると
最適な設定をしたDirectモード>いい加減な設定をしたDirectモード>(越えられない壁)>最適な設定をしたExtendモード>いい加減な設定をしたExtendモード

の順にVR体験は変わってきます。大事なのは「Directモード、Extendモードそれぞれに、設定最適化の余地がある」 と言う事です。
この設定が最適かどうかを検証する手段を以下に書きます。

Directモードで動くPC

動作確認するPCにインストールしたOVRSDKのバージョンに対応したovr_sdk_win_0.x.yをダウンロードして
Oculus World DemoのショートカットをダブルクリックしてTuscanyDemoを起動します。

f:id:izm_11:20141118232337p:plain

Directモードで起動したらスペースキーを押してプロファイル画面を出し、スクリーンショットを撮ります。ここで理想的な数値例を以下に挙げます。(協力:野生の男さん)

注目すべきは「PostPresent」の値で、これはSDK0.4.3以降で最適なGPUドライバ設定を行うと0ms-0.2ms程度に収まるはずです。 0.4.2以前、あるいはGPUドライバの設定(トリプルバッファリング等)に不備があると10ms以上の値が出ます。 例えば0.4.2では頑張っても以下のような値になります(10msくらい)。

f:id:izm_11:20141118232222p:plain

また、いい加減な設定だとPostPresentが40ms以上になる事もあります。そうなっていた場合は非常に設定が悪いので要設定確認です。GPUドライバの色々な設定を変えてこの値が小さくなるように試行錯誤するべきです。

VisionProcは通常無視できるくらい(<1ms)の値になっているはずです。

(この辺りの数値の理屈、解説はOculusRift DK2 Advent Calender記事で行う予定です)

Extendモードでしか動かないPC

つらいです…

  • 75Hzモードで動かすためにDK2をプライマリモニタ(メインディスプレイ)にしましょう。(Unity4.5.2は必須。4.5.5だと不要かもしれない) Dismon http://dualmonitortool.sourceforge.net/dismon.html をデスクトップに置いておくと、切り替えが楽です。
  • そもそも絶望的に75FPSのパフォーマンスが出ない場合は、ディスプレイモードを60Hzにしましょう。多少マシになります。
  • Optimus環境におけるPostPresentの数値目標は50ms程度

Unity5.0beta+OVRSDK0.4.3.1+OculusRuntime0.4.3において、ExtendモードでもPostPresentの値が取得できました。
少なくとも僕の環境(Optimusノート)においてTimeWarp 60ms程度、PostPresent 50ms程度が発生しており、これは要するにDirectモードに比べてExtendモードは3フレームの遅延が起きていることを示します。これはつらい…

Geforceの場合の推奨設定を藤宮ケイさんから教えてもらいました。下記を参考に!

最後に

これからも最新SDKでドンドンとVRパフォーマンスが高まっていくはずなので、ワクワクですね!
最適な設定で良いVR体験を!!