【Unity】Blend Shapeを使うとファイルサイズがどれだけ増えるか検証してみた

モデルにBlend Shapeを設定するとUnity上のデータにどんな影響があるのか気になったので検証しました。

頂点を一つだけ動かしたBlend Shapeで検証する

まず、頂点を一つだけ動かしたBlend Shapeを作ります。
Blenderでの設定はこんな感じです。頂点が一つだけ飛び出しています。

f:id:halya_11:20181101153003p:plain

これをUnityにインポートします。
そしてImporterのImport BlendShapesの項目をオンにした状態でApplyした後、メッシュだけを複製してFBXから取り出します。
同様にしてImport BlendeShapesの項目をオフにした状態のメッシュも取り出します。

f:id:halya_11:20181101154301p:plain

そしてこれらのメッシュをテキストエディタで開いて中身を比べます。
手っ取り早くWinMergeで比較しました。

f:id:halya_11:20181101154445p:plain

上図の右がBlend Shape有りのものです。
m_ShapesにBlend Shapeの情報が追加されていることがわかります。

ここで注目したいのが、Blend Shapeなしの状態と比較して変化がある頂点の情報だけが追加されている点です。
このことから、Blend Shapeを使っても動かす頂点が少なければ容量はそこまで増えないことがわかります。

実際にファイルサイズを見てみてもほぼ変わっていませんでした。

f:id:halya_11:20181101155955p:plain

多数の頂点を動かしたBlend Shapeで検証する

次に多数の頂点を動かしたBlend Shapeで同様の検証を行います。

f:id:halya_11:20181101154952p:plain

これをテキストエディタで開くと、m_Shapesのverticesに大量に情報が追加されています。
ファイルサイズも大幅に(想像以上に)膨れ上がりました。

f:id:halya_11:20181101155754p:plain

結論

Blend Shapeを使うと動かす頂点の数に比例してMeshの容量が増えていきます。

さらにBlend Shape一頂点あたりの情報量は結構大きいので、
多数の頂点を動かしたBlend Shapeを使う場合には注意が必要です。

関連

light11.hatenadiary.com