4
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Optimize Game Objects設定の効果計測

Last updated at Posted at 2016-04-30

Optimize Game Objects設定とは

FBXのインポート設定に「Optimize Game Objects」というものがあります。
これは、階層構造になっているFBXの内部構造を最適化し、アニメーションの処理を高速化するためのものです。
詳しくはテラシュールブログさんの内容をご覧下さい。(少し前の記事なので、今のUnityではインターフェースが変わっていますが、効能は同じです)
http://tsubakit1.hateblo.jp/entry/2015/04/30/012956

optimize_check.png

計測してみる

これが実際にどの程度高速化するのかを計測してみました。
計測環境は以下の通りです。

  • Unity5.3.4p5を使用
  • 「SDユニティちゃん 3Dモデルデータ」を使い、Optimize設定をONにしたものとOFFにしたものをそれぞれ15体づつ並べ、Profilerで計測する

unity-chan.png

計測結果

Optimize無し

0.71~0.87ms程度

profile_normal.png

Optimize有り

0.27~0.41ms程度

profile_optimize.png

結構違いが出ました。
特に理由がない限りはOptimize設定はONの方が良さそうです。

Optimize設定をすることによるデメリット

Optimize設定をすることでデメリットが存在します。
2つほど例を挙げてみます。

特定のボーンに対する計算を行う時に追加の設定が必要

例えば髪などの揺れものをスクリプトで制御するケースとか、手に武器を持たせるケースなどは、取り扱うボーン名をあらかじめインポート前に指定しておく必要があります。こちらはテラシュールブログさんにも記載がありますね。

ゲームでは多種多様なモデルが出てくるはずで、これらに対して追加出力するボーンを逐一設定しているとなかなかに面倒です。だからと言って全てのモデルで共通の設定をすると、特定のモデルでしか使わないボーンが全てのモデルに混入して、ちょっと処理負荷が増えてしまいます。

アセットインポーターで自動設定することも出来ますが、いずれにせよ色々考える必要があります。

あとでボーンが必要になった時にインポートしなおしになる

リリースされたゲームで仕様変更があり、特定のボーンが必要になったとします。例えば髪を揺らすことになったので、人間系のモデルで髪のボーンが新たに必要になる、といったケースですね。

この時、既にOptimize設定済みの人間系のモデル全てに対し、髪のボーンを追加出力する設定をしなおさなくてはいけません。端的に言うとプレハブの出し直しです。

更にアセットバンドルにしていた場合、アセットバンドルの更新が入ります。遊んでくれているユーザーさんにダウンロードを強いてしまう訳です。

これらは、予めOptimizeしないでおけば避けられる問題です。
もしも処理負荷をそこまで気にしなくても良いなら、Optimizeしないのも一つの選択かと思います。メリットとデメリットを見極めて使いたいですね。

4
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?