テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

Unityに配置したモデルをアニメーション向けに最適化する

Unityでアニメーションを行うモデルを配置した際、パーツ次第で結構深い階層を持つことになります。実はUnityは深い階層を持つのは高いコストになるらしく、これを避けるのが望ましくあります。

下の図はハロゥインユニティちゃんのみのシーンですが、展開すると凄くオブジェクトが大量にある事が分かります。

f:id:tsubaki_t1:20150430011030p:plain

対策

なので不要なオブジェクトを減らします。

AnimatorのOptimize Transform Hierarchyを実行すると、Animatorの「コンポーネントがTransformだけの」オブジェクトをHierarchyから削除します。

またこの状態は、モーションの角度計算などがオブジェクトや階層毎ではなく一括で出来るようになるらしく、パフォーマンスにそれなりな影響が出るみたいです。

f:id:tsubaki_t1:20150430011604p:plain

f:id:tsubaki_t1:20150430011709p:plain

最適化で削除されないで欲しいオブジェクトがある場合もあります。例えば「剣」や「盾」といった装備を持つジョイントです。

そういった場合は、モデル(.fbxファイル等)を選択してRigを選択し、Optimize GameObjectにチェック。その後、「+」をクリックして残して欲しいボーンを選択します。また上に書いたとおり、コンポーネントを持つオブジェクトは削除されないみたいです。

f:id:tsubaki_t1:20150430012305p:plain

ただしこの方法、計算を一括で行う関係上「ボーンをスクリプトで動かす」機能に使用できません。なのでこの機能を使用する場合はユニティちゃんの髪や胸を揺らしたい場合は、アニメーション側で管理してやる必要があります。

参考

[Unite 2015 TOKYO]Unity パフォーマンス・チューニング from Unity Technologies Japan G.K. on Vimeo.

ライセンス

http://unity-chan.com/images/imageLicenseLogo.png