嫁と最高の体験を ~ 簡単! クリスマスまでに好きな女の子と仲良くなる方法 その6(Final) #アセットアドカレ

 

この記事は 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

無題クリップ_123014_032043_AM

スクリーンショット_123014_033200_AM

 これはチューニングのし甲斐がありますね。

スクリーンショット_123014_055038_PM_mini後ろを向くと軽くなり、嫁が映るとfpsがガクッと落ちてしまいます。
ふむふむ、どうやら嫁が重いようですね。

スクリーンショット_123114_010813_AM

ちなみに数値の基準については izm さんのつぶやきと記事が大変参考になります。

Mastering the Oculus SDK日本語解説 – izm_11’s blog
http://izm-11.hatenablog.com/entry/2014/12/14/005101

 

TIPS: 実行したらカメラが上にずれちゃう

スクリーンショット_123014_031524_AM

シーン再生時時にOculusRuntimeのProfileの設定値を反映してOVRCameraRigが頭の位置に移動するのをOFFにしたい場合は、OVRPlayerControllerのUserProfileHeightをOFFに。

Quarity Settingsの基本的な設定

 まずいろいろやる前に、基本的な設定を行っていきます。 

無題クリップ_123014_055459_PM_mini

描画遅延を軽減する仕組みのTimewarpを使うにはVSyncが必須のため、全LevelでVSync Countを Every VBlankに設定します。
※ビルド後の実行ファイルを起動する際に、Shift押しながらダブルクリックで起動でクオリティの選択が可能。(OculusSDK0.4.4現在)

無題クリップ_123014_055749_PM_mini

 

また、fpsによって自動的にQualityを変えてくれるアセットを使うのもオススメ

スクリーンショット_122214_053221_PM

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。

スクリーンショット_123014_062754_PM開発中に勝手にQualityを下げられては困る場合はDisabledをONへ。

 

Unity Performance Best Practices

 CPUの最適化

Stereoarts Homepage
http://stereoarts.jp/
Noraさん
「リアルタイム版Bullet Physics」のPDFに最適化の具体的な方法が記載されています。必読。

 レンダリングの最適化

スタティックバッチング

スクリーンショット_123114_125140_AM

Environmentsという空のゲームオブジェクトを作成して、その中に実行中動かないモノ(TransformのPosition、Rotation、Scaleに変化がないもの)を突っ込み StaticのチェックをONへ。

→元からStatic ONだったので変化なし。

カリング

無題クリップ_123114_125811_AM

 そのままBakeして実行。

スクリーンショット_123114_010915_AM

 

効果

スクリーンショット_123114_010813_AM

スクリーンショット_123114_011039_AM

ドローコール28減。嫁が重いので効果は今一つ。

テクスチャの最適化

今回の記事の目玉。
メッシュやテクスチャの統合をさくっと行うことができるCombine Toolsのご紹介。

スクリーンショット_123114_123526_AM

Combine Tools by DAE Studios http://u3d.as/6ca
バージョン: 2.0.2 (Jun 17, 2014)サイズ: 1.9 MB
パブリッシャーサイト

Combine Toolsの使い方

無題クリップ_123114_011755_AM

選択したオブジェクトの頂点数が20,000を超える場合は、ヒエラルキービューで複数選択してCreate Parentを押すと自動的にまとめてくれます。

スクリーンショット_123114_011850_AM

まとめた後に、Parentを選択してCombine Selection
Combine前のモノを非活性の状態で残し、新たに統合済みを~_Combinedとして生成します。

スクリーンショット_123114_012330_AM

もしカリングとの相性が悪い場合など、思ったように表示がされない場合、簡単に実行前に戻せるので安心。

効果

スクリーンショット_123114_011039_AM

スクリーンショット_123114_012307_AM

 ドローコール大幅減!

しかし結局、嫁が重いのでfps75ならず。

ライティング、影の最適化 

シーンのライトを空のゲームオブジェクトLightsへまとめ、シーン再生中にLightsをON/OFFして負荷の程を確認します。

Light ON

スクリーンショット_123114_012307_AM

 Light OFF

スクリーンショット_123114_013640_AM

ドローコールが目標値に収まりました。
ライトによって生成される影が大きいようです。

ここでLightmappingからBakeするという沼がありますが時間のかかる調整が必要になります。
やってるとクリスマスが終わってしまうので今回はLightを削減する方針で手打ちにします。

シーン実行中に見た目の影響と、ドローコールの削減具合を確認しながら消すライトを探していきます。

無題クリップ_123114_015004_AM

が、ヒエラルキービューとインスペクタービューのチェックON/OFFにマウスカーソルの移動が面倒くさいのでこちらのアセットを使って、ヒエラルキービュー内でオブジェクトの有効無効を操作できるようにします。

スクリーンショット_123114_015149_AM

Hierarchy2 by VietLabs http://u3d.as/6eH
バージョン: 1.3.9.0 (Dec 15, 2014)サイズ: 15.2 MB
パブリッシャーサイト

Hierarchy2 導入前

スクリーンショット_123114_015346_AM

Hierarchy2 導入後

スクリーンショット_123114_015507_AM

こんな感じで、目玉のアイコンをクリックするとInspectorのチェックも連動してON/OFF切り替わります。

無題クリップ_123114_015721_AM

 

また、一緒に表示されている星マークはヒエラルキービューやプロジェクトビューのモノにすぐにアクセスできるよう、「お気に入り」として登録して管理ができるエディタ拡張アセットのFavorites Tab[s]

スクリーンショット_123114_020012_AM

Favorites Tab[s] by Flipbook Games http://u3d.as/3hG
バージョン: 1.2.12 (Dec 13, 2014)サイズ: 62.9 kB
パブリッシャーサイト

スクリーンショット_123114_020225_AM

プロジェクトビュー、ヒエラルキービューでお気に入りに登録したものを一覧表示。この一覧から即アクセス可能。
作業中、いろいろなところに散乱している「よく使うもの」をFavorites Tab[s] でお気に入り登録してこの一覧で管理するとトッテモ便利。
深い階層も一発でアクセス可能。

ライトの削減

アンジェラさんの周りだけ、自分の納得とPCのスペックと相談して削減していきます。

スクリーンショット_123114_020528_AM

効果

スクリーンショット_123114_012307_AM

スクリーンショット_123114_022023_AM

こんなところでしょうか。

この後

このライトの数であればbakeと闘ったり、ライトが当たる対象のマテリアルのShadow~関係の設定を変更したり、カメラの影の描画距離を調整したり、まだまだいろいろ最適化の余地はあります。

とりあえず今回はここまで!
近い将来実現されるであろうAsyncronus TimeWarpやいろいろな技術の進歩に期待して。

それでもダメなら

Virtual Texture Scaleを1から下げる。

スクリーンショット_123114_023146_AM

レンダリング解像度を下げることができます。
自分の体感と相談しつつ0.5くらいに下げてみましょう。

スクリーンショット_123114_022840_AM

それでもダメなら

PC買い換えましょう。

OcuFes監修PC
http://www.g-tune.jp/ws_model/ocufes/ 

今ならGTX900シリーズに刷新されたばかり。(2014/12/25日現在)
OculusRift用のPC、グラフィックドライバの設定もページに掲載されている内容の通りに設定するだけで100%の性能が引き出せてオススメ