この記事は Unity Assets Advent Calendar 2014 24日目の記事になります。
【連載】 簡単! クリスマスまでに好きな女の子と仲良くなる方法
目次
1日目 「恋人と最高のクリスマスを過ごす方法 Christmas Room Set」
2日目 「今から恋人を作る。最強の恋愛ツール MMD4MecanimとSkele」
3日目 「彼女と過ごす上での注意点。恋人と触れ合う方法 SAColliderBuilder」
4日目 「恋人といい雰囲気を作る方法 Playmaker」
5日目 「2人きりでも会話が途切れない!女の子と会話する方法 」
去年 「彼女ができました。クリスマスは一緒にすごすので実家には戻りません。」
6日目は、VRで最高の体験をするために絶対に守るべき大切な事をご説明します。
環境
Unity 4.6.1p2
Oculus SDK Unity 4 Integration 0.4.4 beta
今回はOculusRift DK2で75fps安定のコンテンツをUnityで作る方法、最適化の方法について、誰でもできる実践的な手順をご紹介します。
OculusVRがGearVR向けに配布しているUnity Perfomance Best Practicesに沿って、実際にいくつかの内容をかいつまんで最適化していきます。
※GearVR、スマホ向けではありますが、デスクトップ向けのコンテンツにも適用できます。
Unity Performance Best Practices 日本語訳
http://syyama.net/blog/?p=371
※ @syyama_net さんが翻訳されてます。
※原文は900MBのZIPの中。。
Oculus Mobile SDK for Samsung Note 4 (Samsung Gear VR)
\Doc\Unity\Unity_Performance_Best_Practices.pdf
その前にまずは現状の確認
PCスペック
Intel Xeon E5-1650 v2 @ 3.50GHz
AMD FirePro D700
これはチューニングのし甲斐がありますね。
後ろを向くと軽くなり、嫁が映るとfpsがガクッと落ちてしまいます。
ふむふむ、どうやら嫁が重いようですね。
ちなみに数値の基準については izm さんのつぶやきと記事が大変参考になります。
OculusRift DK2において、Predは0がデフォルト 前回の画面書き換えから今回の画面書き換えまでの時間=Ren ジャイロの値を読んでから絵を描いてDK2パネルにflushするまでの時間=TimeWarp 魚眼歪み補正やflushに掛かる時間=postpresent
— izm (@izm) 2014, 12月 8
75FPS環境だと Ren: 1000/75 (ms) TimeWarp: <12(ms) PostPresent: <1(ms) くらいが、いわゆる理想値になるわけでごじます
— izm (@izm) 2014, 12月 8
Mastering the Oculus SDK日本語解説 – izm_11’s blog
http://izm-11.hatenablog.com/entry/2014/12/14/005101
TIPS: 実行したらカメラが上にずれちゃう
シーン再生時時にOculusRuntimeのProfileの設定値を反映してOVRCameraRigが頭の位置に移動するのをOFFにしたい場合は、OVRPlayerControllerのUserProfileHeightをOFFに。
Quarity Settingsの基本的な設定
まずいろいろやる前に、基本的な設定を行っていきます。
描画遅延を軽減する仕組みのTimewarpを使うにはVSyncが必須のため、全LevelでVSync Countを Every VBlankに設定します。
※ビルド後の実行ファイルを起動する際に、Shift押しながらダブルクリックで起動でクオリティの選択が可能。(OculusSDK0.4.4現在)
また、fpsによって自動的にQualityを変えてくれるアセットを使うのもオススメ
Auto Quality Chooser by Kris Krej http://u3d.as/30H
バージョン: 1.0 (Jun 08, 2012)サイズ: 11.0 kB
パブリッシャーサイト
設定例
実行中にfpsが75切ったら1段階づつQualityを下げていきます。
(または75以上になったらQualityを上げる)
使い方
シーンにある適当なGameObjectにアタッチするだけでOK。
開発中に勝手にQualityを下げられては困る場合はDisabledをONへ。
Unity Performance Best Practices
CPUの最適化
Stereoarts Homepage
http://stereoarts.jp/
Noraさん
「リアルタイム版Bullet Physics」のPDFに最適化の具体的な方法が記載されています。必読。
レンダリングの最適化
スタティックバッチング
Environmentsという空のゲームオブジェクトを作成して、その中に実行中動かないモノ(TransformのPosition、Rotation、Scaleに変化がないもの)を突っ込み StaticのチェックをONへ。
→元からStatic ONだったので変化なし。
カリング
そのままBakeして実行。
効果
↓
ドローコール28減。嫁が重いので効果は今一つ。
テクスチャの最適化
今回の記事の目玉。
メッシュやテクスチャの統合をさくっと行うことができるCombine Toolsのご紹介。
Combine Tools by DAE Studios http://u3d.as/6ca
バージョン: 2.0.2 (Jun 17, 2014)サイズ: 1.9 MB
パブリッシャーサイト
Combine Toolsの使い方
選択したオブジェクトの頂点数が20,000を超える場合は、ヒエラルキービューで複数選択してCreate Parentを押すと自動的にまとめてくれます。
まとめた後に、Parentを選択してCombine Selection
Combine前のモノを非活性の状態で残し、新たに統合済みを~_Combinedとして生成します。
もしカリングとの相性が悪い場合など、思ったように表示がされない場合、簡単に実行前に戻せるので安心。
効果
↓
ドローコール大幅減!
しかし結局、嫁が重いのでfps75ならず。
ライティング、影の最適化
シーンのライトを空のゲームオブジェクトLightsへまとめ、シーン再生中にLightsをON/OFFして負荷の程を確認します。
Light ON
Light OFF
ドローコールが目標値に収まりました。
ライトによって生成される影が大きいようです。
ここでLightmappingからBakeするという沼がありますが時間のかかる調整が必要になります。
やってるとクリスマスが終わってしまうので今回はLightを削減する方針で手打ちにします。
シーン実行中に見た目の影響と、ドローコールの削減具合を確認しながら消すライトを探していきます。
が、ヒエラルキービューとインスペクタービューのチェックON/OFFにマウスカーソルの移動が面倒くさいのでこちらのアセットを使って、ヒエラルキービュー内でオブジェクトの有効無効を操作できるようにします。
Hierarchy2 by VietLabs http://u3d.as/6eH
バージョン: 1.3.9.0 (Dec 15, 2014)サイズ: 15.2 MB
パブリッシャーサイト
Hierarchy2 導入前
Hierarchy2 導入後
こんな感じで、目玉のアイコンをクリックするとInspectorのチェックも連動してON/OFF切り替わります。
また、一緒に表示されている星マークはヒエラルキービューやプロジェクトビューのモノにすぐにアクセスできるよう、「お気に入り」として登録して管理ができるエディタ拡張アセットのFavorites Tab[s]
Favorites Tab[s] by Flipbook Games http://u3d.as/3hG
バージョン: 1.2.12 (Dec 13, 2014)サイズ: 62.9 kB
パブリッシャーサイト
プロジェクトビュー、ヒエラルキービューでお気に入りに登録したものを一覧表示。この一覧から即アクセス可能。
作業中、いろいろなところに散乱している「よく使うもの」をFavorites Tab[s] でお気に入り登録してこの一覧で管理するとトッテモ便利。
深い階層も一発でアクセス可能。
ライトの削減
アンジェラさんの周りだけ、自分の納得とPCのスペックと相談して削減していきます。
効果
↓
こんなところでしょうか。
この後
このライトの数であればbakeと闘ったり、ライトが当たる対象のマテリアルのShadow~関係の設定を変更したり、カメラの影の描画距離を調整したり、まだまだいろいろ最適化の余地はあります。
とりあえず今回はここまで!
近い将来実現されるであろうAsyncronus TimeWarpやいろいろな技術の進歩に期待して。
それでもダメなら
Virtual Texture Scaleを1から下げる。
レンダリング解像度を下げることができます。
自分の体感と相談しつつ0.5くらいに下げてみましょう。
それでもダメなら
PC買い換えましょう。
OcuFes監修PC
http://www.g-tune.jp/ws_model/ocufes/
今ならGTX900シリーズに刷新されたばかり。(2014/12/25日現在)
OculusRift用のPC、グラフィックドライバの設定もページに掲載されている内容の通りに設定するだけで100%の性能が引き出せてオススメ