ハイポリモデルをモバイルで使うときにUnityでとりあえずやったこと

Asset Storeでモデルを探すとモバイルで使おうと思うと固まってしまうような高精細なリアルのモデルなことが多々あります。原因はいろいろあるんだろうけど、モデル自体のポリゴンを減らすのはUVの設定とかも考えると手間なので、モデル自体のポリゴンはいじらず、設定だけで対応したことの備忘録。ちなみにUnity5.4を使用。

3Dのモデルそのものを減らす

使いたいモデルが例えば建物内とか、街だったりした場合に手っ取り早いのは使われているモデルそのものを減らしてしまうということ。基本中の基本ですが、プレイヤーからあまり見えない部分とか、遠景のモデルとかは思い切って削除してしまいます。この時に注意したいのはヒエラルキー内に非アクティブにして残しておかないということ。非アクティブにしてもメモリを消費するので、思い切ってヒエラルキーから削除してしまいます。

あとは街みたいなモデルそのものが大きいときは、若干手間ですが、分割して細かく別のシーンに分けてしまうというのが一番簡単です。その場合シーン間の移動を工夫しないといけないですが、例えば街を4分割するだけでだいぶシーンの読み込みから処理までだいぶ軽減されます。

テクスチャのサイズを小さく設定

ハイポリアセットの場合、2048pxの高解像度のテクスチャがふんだんに使われている場合が往々にしてあります。全部のテクスチャを開いて画像ソフトで解像度を下げていくのはナンセンスなので、Unity内で変更していきます。Project > t:Textureで検索してテクスチャの一覧を表示します。iOS/Androidでそれぞれで設定をできるので必要に応じて設定します。

まず、インスペクタ内のDefaultバーの右にあるiOS/Androidのアイコンからそれぞれ設定します。Override for iOS/Androidにチェックを入れると設定できます。

Max Size : 基本は128にしておいて描画が細かいテクスチャに関しては最大でも256にします。ここは全体のテクスチャ量とかつくり方にもよってくるので、大きくなりすぎないように気をつけます。

Format : Compressedを選んで圧縮

Compression Quality : Fast

Compress usging xxxx : 選択できれば選択

これだけでかなり処理が軽減される

3Dモデルを圧縮する

3Dモデルのメッシュを圧縮することもできます。面倒くさいのでここは一気にやります。Project > Favorites > All Models でモデルの一覧を表示選択し、インスペクタを開きます。まずインスペクタのModelタブを選択します。

Mesh Compression : High ここでメッシュを圧縮

Read/Write Enabled : チェック外す

アニメーションのない背景やオブジェクトはさらに、Rigタブを選択し、

Animation Type : None 

さらにAnimationsタブを選択し、

Import Animation : チェック外す

マテリアルをベイクする

背景モデルや動かないモデルのマテリアルはグローバルイルミネーションを基本的に全部ベイクしてしまいます。Project > Favorites > All Materials でマテリアルの一覧を表示して選択します。特殊なシェーダはベイクできないので、Standardシェーダを使ったものをベイクします。インスペクタを開き、

Global Illumination : Baked もしくは None

あと建物のモデルだと窓とかに透過が使われてたりすることもあるけど、モバイルでは思い切ってガラスは外して超クリアな窓にしてしまいます。

ライティングをベイクする

ライティングもあらかじめ全部ベイクします。Window > Lighting > Sceanを開きます。

Precomputed Realtime GI : チェック外す

Baked GI : チェック

Precomputed Realtime GI はある程度グローバルイルミネーションの様子がわかるのでモデルをいじったりするときはチェックを入れておく。最終的にはBaked GIでベイクします。

あと、このSceanパネルの下の方にある、「Other Settings」にBuildのボタンがありますが、ここの横のAutoのチェックを外しておきます。チェック入ってると設定変更するたびにベイクの実行が始まります。もろもろ設定が完了したらBuildボタンを押すようにしてます。

だいたいこんなところでしょうかね。