FBXなどからインポートしたアニメーションのサイズを小さくする。
前置き
2017年になってもスマートフォンの搭載メモリはたいして増えてなくて、結局アプリで使うメモリを300MB~400MBくらいに押さえないといけない。なので少しでもファイルサイズやメモリを削るようにしないとアプリが落ちてしまって困ったことになる。(古い端末を対象外にすればいいけどいろんなしがらみがあって大体サポートしないといけない)
3Dゲームの場合、テクスチャサイズはそこまで大きくしなくても見た目は許容できるので、相対的にアニメーションのサイズが問題になることが多い。(解像度が高いけどGPU性能がそうでもない端末が多いのからあまり複雑なシェーダも使えないのでテクスチャの枚数も少なくてすんでいる)
Unityでアニメーションのインポート時の設定によってアニメーションサイズがどのくらい変わるか調べてみた。
インポート設定によるアニメーションサイズの比較
SDユニティちゃん 3Dモデルデータをアセットバンドル化したときのログからアニメーションのサイズを比べてみた。(Unity 5.5.3p4)
デフォルトの状態(圧縮なし)
Compressed Size:4.0 mb Uncompressed usage by category: Textures 2.7 mb 30.3% Meshes 872.9 kb 9.5% Animations 5.1 mb 57.1% Sounds 0.0 kb 0.0% Shaders 105.1 kb 1.1% Other Assets 77.2 kb 0.8% Levels 0.0 kb 0.0% Scripts 0.7 kb 0.0% Included DLLs 0.0 kb 0.0% File headers 90.7 kb 1.0% Complete size 8.9 mb 100.0%
Keyframe Reduction
Compressed Size:2.4 mb Uncompressed usage by category: Textures 2.7 mb 51.7% Meshes 872.9 kb 16.3% Animations 1.4 mb 26.9% Sounds 0.0 kb 0.0% Shaders 105.1 kb 2.0% Other Assets 77.2 kb 1.4% Levels 0.0 kb 0.0% Scripts 0.7 kb 0.0% Included DLLs 0.0 kb 0.0% File headers 90.7 kb 1.7% Complete size 5.2 mb 100.0%
圧縮設定をOptimal
Compressed Size:2.0 mb Uncompressed usage by category: Textures 2.7 mb 56.7% Meshes 872.9 kb 17.8% Animations 969.3 kb 19.8% Sounds 0.0 kb 0.0% Shaders 105.1 kb 2.1% Other Assets 77.2 kb 1.6% Levels 0.0 kb 0.0% Scripts 0.7 kb 0.0% Included DLLs 0.0 kb 0.0% File headers 90.7 kb 1.9% Complete size 4.8 mb 100.0%
圧縮設定をOptimal、Resample Curvesのチェックを外す
Compressed Size:1.9 mb Uncompressed usage by category: Textures 2.7 mb 58.1% Meshes 872.9 kb 18.3% Animations 859.1 kb 18.0% Sounds 0.0 kb 0.0% Shaders 105.1 kb 2.2% Other Assets 77.2 kb 1.6% Levels 0.0 kb 0.0% Scripts 0.7 kb 0.0% Included DLLs 0.0 kb 0.0% File headers 90.7 kb 1.9% Complete size 4.7 mb 100.0%
まとめ
- 圧縮なし 5.1MB
- 圧縮あり(Keyframe Reduction) 1.4MB
- 圧縮あり(Optimal) 969.3KB
- 圧縮あり(Optimal)+Resample Curvesのチェックなし 859.1KB
圧縮しないと大きすぎるので基本的にはOptimalにしておく。Resample Curvesのチェックをなしにすると小さくなるがイマイチどんな設定かよく分かってないので元のモーションから大きくずれてないか確認する必要がありそう。
コメントを残す