Help us understand the problem. What is going on with this article?

Unity+OculusRuntimeでのパフォーマンスお手軽調整手順

More than 3 years have passed since last update.

概要

Unity5世代+ OVRSDK0.5.0 + Oculus Runtime0.5
という環境で、MMDモデルを鑑賞したりする感じのコンテンツでのパフォーマンス調整をしてみます。

動作環境

ターゲット:GeForceGTX870M を搭載したOptimusなWindows ノートPCで75FPS
手元にGeforce GTX860Mがあったので、これで75FPS出せるようにしておけば、おそらく大丈夫でしょう。

Optimusノート向けのOculusRiftコンテンツ開発については
現時点でもこのエントリを踏襲することになります。

2015/8現在のOculusRift+UnityのノートPC対応 開発動作環境構築
http://izm-11.hatenablog.com/entry/2015/09/02/201003

Unityバージョン問題

調子に乗って5.2.2p4をインストールしたらOculusRuntime0.5では何をやっても動かないという罠があったのでダウングレードします。
(画面が真っ黒になります)

5.0.3p3にしましたが、5.1.x系でも大丈夫だったと思います。

パフォーマンスチェック

1.シーンのTerrainの負荷チェック

Terrain+OVRPlayerControllerだけのシーンを作り、75FPS張り付きなことを確認します。
image

OVRCameraRigにOVRMainMenuがアタッチされていれば、ビルドして実行したときにスペースキーを押すことでメニューが表示され。FPSが確認できます。

2.MMDキャラクタを含む全体シーンの負荷チェック

そのまま、まずはシーン全体でビルドして、(ExtendModeでDirectToRift.exeで起動して)FPSを表示しながら見てみます。
このときに、歩き回り見回しながら、壁を向いたり天井を見たり、地面を向いたりして、描画負荷を変えながら、どうするとFPSが落ちるか観察します

例えばありがちなのは

  • 空を見たり床を見ているときは75FPS出ていて、後ろや横を向いていても75FPS
  • ただし正面を見ていると60FPSくらいに下がる
  • 試した感じでは、キャラクターを視界に入れていると75FPSを割ることが分かる

みたいなパターンでしょうか。一般的にGeForceGTX860MではMMDキャラクター3人出ていると大体負荷は限界です。

3.FPS落ちの原因はCPUかGPUか判断する

エディタモードでProfilerを起動しながらシーンを再生してみます。
image
大体の場合、黄緑の部分が大きいことが分かります。これはレンダリング(GPU)が重い状態です。

物理演算や、AI部分が重い場合は、水色が大きくなります。余談ですが上のスクリーンショットだとCamera.Renderだけで70%を占めてます。

よって、GPU負荷を減らすことにします。

4.お手軽なGPU負荷軽減

OvrCameraRigを以下のように変更します。
- Native Texture Scaleを 1 → 0.7 に(フレームバッファサイズを小さくする)
- Eye Texture Anti Aliesを 2 → 1 に(アンチエイリアスを切る)
- Monoscopicのチェックを入れる(両目に同じ絵を映す)
image

これで再度ビルドして、2.の手順でFPSが出ているかチェックをしてみます。
これで75FPS出ていれば、 Monoscopicを元に戻す→Native Texture Scaleを1に戻す と言う感じに元に戻しながら負荷を見極めていきます。

もし、上記のチェックをしても未だ75FPS出ていない場合は、いよいよ細かいUnityのパフォーマンスと戦うことになりますが、割とこのOvrCameraRigの設定だけでも描画負荷は結構変わります。お試しください。

補足Unity VR Supportを使っている場合

となっています。

こちらで Unity VR Supportを使用している時のプロファイラの読み方も書かれているので併せてお読みください。
UnityのVRサポートでパフォーマンスとかプロファイルとか
http://udasankoubou.blogspot.jp/2015/11/unityvr.html

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away