2012年12月2日日曜日

[Unity]DrawCallを減らす方法


◆DrawCallを減らす方法

Shadeからデータをインポートしてオブジェクトを表示しようと思ったら、DrawCall数がめちゃくちゃ多かった。
元々ゲーム用に作っていたデータではなかったのであたりまえだがポリゴン数がめちゃくちゃ多く、かつテクスチャーもオブジェクト一つ毎に使用されていた。
作り直すのはコストが掛かるので減らすために何か試作をと思い、簡単なオブジェクトをShadeで作成し、それをFBX形式でエクスポートしてUnityで使った。
それでも減らないので、Unity側で色々弄ってみた。
少し改善したのでメモしておく。

 1. FBXデータの中で同じようなオブジェクトがたくさん在る場合
一つだけ生成し、シーン内で複製を行うと描画実行時にDrawCall数が増えなかった。
Shadeでデータを作る時にLinkで複製しても、Unity内にデータをエクスポートした時には同じオブジェクトとして扱われなかった。
だから、同じようなオブジェクトが在る場合はUnity内で複製を行う必要が在る。
高度な複製を行えば、よりオブジェクトが少なくできる。

例:)本、球、などなど。

2.Shade側でのポイント
メッシュ化してオブジェクトを一つにする。
その際、UVの編集も忘れずに行う事。
こうする事で、一つのオブジェクトとして扱えるので、オブジェクトに掛かるDrawCall数は1回になる。

例:)Unity3D 3.5のサンプルとしてAssetStoreにある、『Penelope』などはキャラクターが一つのオブジェクトとして作成されているなどの細かいな作業が行われている。

◆外部サイト
http://hideapp.cocolog-nifty.com/blog/2012/06/drawcall-21d5.html
・マテリアルの数の分DrawCallが増えるのでマテリアルの種類は最低限にする
・極力オブジェクトをまとめる
・UI作成時には、UI毎にテクスチャを持たずに、1枚のテクスチャにまとめて
 1マテリアルにする。(NGUI等のアセットを使うと楽)

50のTips
http://warapuri.tumblr.com/post/28972633000/unity-50-tips

0 件のコメント:

コメントを投稿