容量削減ノウハウ

Vket2021では入稿にあたり、2種類のファイルサイズをチェックします。

  1. AssetBundleのビルドサイズ
  2. 入稿フォルダ以下のファイル総容量

この記事では、それぞれのファイルサイズの確認方法と、容量削減のポイントを説明します。

1. AssetBundleのビルドサイズ

ビルドサイズの合計を測る

VKetTools の Control Panel から『容量チェック』ボタンを押してください。しばらくしてビルドが完了すると、Compressed Size が表示されます。

reducesize

Console のタブ部分を右クリックしてOpen Editor Logを開いてください。ビルドログをメモ帳などのテキストエディタで参照できます。

reducesize

customscene.vrcw を検索すると、付近にファイルサイズ含めて詳細がログ出力されます。

例:

Bundle Name: customscene.vrcw
Compressed Size:1.8 mb
Uncompressed usage by category (Percentages based on user generated assets only):
Textures 5.2 mb 84.3%
Meshes 89.6 kb 1.4%
Animations 0.0 kb 0.0%
Sounds 0.0 kb 0.0%
Shaders 797.2 kb 12.6%
Other Assets 8.1 kb 0.1%
Levels 46.0 kb 0.7%
Scripts 0.4 kb 0.0%
Included DLLs 0.0 kb 0.0%
File headers 52.1 kb 0.8%
Total User Assets 6.2 mb 100.0%
Complete build size 6.2 mb
Used Assets and files from the Resources folder, sorted by uncompressed size:
1.3 mb 21.6% Assets/VitDeck/Templates/04_CM/SharedAssets/Textures/04_PanelTop_Normal.png
1.3 mb 21.6% Assets/VitDeck/Templates/04_CM/SharedAssets/Textures/04_Floor_normal.png
798.2 kb 12.6% Resources/unity_builtin_extra
682.8 kb 10.8% Assets/VitDeck/Templates/04_CM/SharedAssets/Textures/04_PanelTop_Roughness.png
682.8 kb 10.8% Assets/VitDeck/Templates/04_CM/SharedAssets/Textures/04_Floor_metallic.png
682.8 kb 10.8% Assets/VitDeck/Templates/04_CM/SharedAssets/Textures/04_PanelTop_AO.png
204.6 kb 3.2% Assets/VitDeck/Templates/04_CM/SharedAssets/Textures/04_Panel_Dirt_BaseColor.png
204.1 kb 3.2% Assets/VitDeck/Templates/04_CM/SharedAssets/Textures/04_Panel_Dirt_Metalic.png...

Used Assets and files from the Resources folder から先に、サイズの大きい順にファイルがリストアップされています。

ファイルサイズを小さくする

UnityEditor の Project にてファイルを選択したときの inspector から、ファイルサイズを調べることができます。

inspector の設定にて、インポート時の形式を変更することが可能です。

reducesize

ポイント1. Max Size を小さくする

Unityでは画像ファイルを縮小してインポートすることができます。
デフォルトは 2048 です。さらに小さなサイズを選択すると、ファイルサイズもその分だけ小さくなります。

  • 近づかないと細かく見えないような小さなオブジェクトに貼り付けるテクスチャは、小さく設定したほうが良いです。
  • グラデーションなど縮小してもあまり見た目の変化しないテクスチャも、小さく設定するほうが良いでしょう。
  • マスク画像など多少荒くても見た目に影響しないテクスチャもあります。マスク画像は積極的に小さくすると良いです。

ポイント2. Compressionを変更する

デフォルトは Normal Quality ですが、None にすると逆にファイルサイズが巨大になります。None になっている場合は Normal Quality などに変更すると良いでしょう。圧縮するぶん見た目は若干荒くなります。

ポイント3. Use Crunch Compression をチェックする

デフォルトでチェックの付いていない項目ですが、チェックするとさらに圧縮を行うため、ファイルサイズをさらに小さくすることができます。一方、圧縮するぶん見た目が荒くなるため、必要に応じてCompressor Qualityを調整すると良いでしょう。

reducesize

ポイント4. Input Texture AlphaをNoneにする

inspector の中ほどに、デフォルトで有効になっている項目があります。

デフォルトでは Input Texture Alpha となっている項目です。

reducesize

Input Texture Alpha の場合は画像ファイルからAlphaチャンネルをインポートします。Alphaチャンネルを使用していない場合は None に変更することでファイルサイズが若干小さくなる場合があります。(インポート後のテクスチャの圧縮形式に影響するため)

ポイント5. Read/Write Enabled のチェックを外す

チェックを付けるとファイルサイズが大きくなります。VRChatではほぼ使わない機能のためチェックを外しても問題ありません。

テクスチャ圧縮形式についてのUnityマニュアル

テクスチャ圧縮形式についての詳細な解説は、Unityマニュアルの プラットフォーム別オーバーライドのためのテクスチャ圧縮形式 を参考にしてください。

Unityは前述の設定によってテクスチャ圧縮形式を選択するため、品質とサイズを制御することができます。

Meshesのファイルサイズを小さくする

メッシュもサイズの大きなファイルの筆頭です。テクスチャに比べるとサイズを縮小するのは大変ですが、以下に注意して確認してみてください。

ポイント1. Legacy Blend Shape Normals のチェックを外す

Unity2018にて新規追加された項目ですが、こちらはチェックを外しましょう。チェックが入った状態ではWarningが出る事があります。

代わりにblend shape normal をimportかNoneに設定する事を推奨します。

blend shape normalをcalculateに設定するとシェイプキーの数に応じてビルドサイズが増えてしまいます。

※ただしnoneの場合はブレンドシェイプによる法線を変更がされないため、見た目に影響が出る場合があります。

ポイント2. Import BlendShapes のチェックを外す

ブースに設置するメッシュにて Blend Shape を使用しないのであれば、このチェックを外すことでファイルサイズが小さくなる場合があります。

ポイント3. ボーンとウェイトを削除してしまう

動かないメッシュであれば SkinnedMeshBaker などのツールを用いてボーンを抜いてしまうことでファイルサイズを小さくできる場合があります。

ポイント4. サウンドファイルのサイズを減らす

サウンドもまたファイルサイズが大きくなりやすいファイルです。サウンドファイルのインポート設定から、Quality を調整してファイルサイズを小さくすると良いでしょう。サウンドは、オリジナルのファイルサイズとインポート後のファイルサイズが情報として表示されます。表示された値も参考に調整すると良いでしょう。

reducesize

ワンポイントアドバイス

VRChatではワールドロード時にサイズが表示されます。そこで表示されているサイズはまさにそのワールドの AssetBundleのビルドサイズ です。ブース作成以外にも、VRCワールドの容量削減などにこの記事の情報をご活用ください。

またVRChat内では表示されませんが、VRCアバターにおいてもビルドサイズ削減に同じ知識が活用できます。(やはり小さなサイズのアバターのほうがロードが速いです)アバターの場合、ビルドログは customscene.vrcw ではなく customavatar.unity3d で記録されます。それ以外の部分はワールドとほぼ同様です。

2. 入稿フォルダ以下のファイル総容量

Windows Explorer などで入稿フォルダのファイルサイズを確認してください。100MB以下でないと、入稿することはできません。

reducesize

ファイルサイズを小さくする

ファイルサイズが大きくなりやすいファイルは、主に以下の3種類です。

  • テクスチャ用の画像ファイル
  • FBXファイル
  • MeshBaker等のツールで作成したメッシュの.assetファイル

テクスチャ用の画像ファイルのサイズを小さくする

ビルドサイズのときと同様、やはり画像ファイルはもっとも巨大になりやすいファイルです。

ポイント1. PSD形式の画像ファイルはPNGに変換してみる

PSD形式の画像は非表示のものを含めてレイヤー情報が保存されているため、インポート後の何倍ものファイルサイズになることがあります。PNG形式でエクスポートして最適化すると良いです。

ポイント2. インポート時の Max Size を実際よりも縮小している場合は、画像自体を縮小する

前述の AssetBundleのビルドサイズ にて画像を縮小してインポートしている場合は、画像自体を設定に合わせて縮小することでファイルサイズを小さくすることができます。

例:4096x4096 の画像を Max Size 1024 でインポートしている場合は、画像ファイル自体を 1024x1024 に縮小する

この縮小は画像編集ソフトでの操作となるため、AssetBundleのビルドサイズの調整が終わった後に行うと良いでしょう。

FBXファイルのサイズを小さくする

FBXのファイルサイズは頂点数に比例します。頂点数を減らすことがもっとも効果的です。ブレンドシェイプや非表示サブメッシュなど不要な情報も削除してしまうと良いでしょう。(例えばアバターの表情パーツやフェイシャルなど)

MeshBaker等のツールで作成したメッシュの.assetファイル

assetファイルは中身のデータをテキスト形式で保持していることがあります。assetファイルのサイズが大きくて無視できない場合、MeshBakerのかわりにモデリングソフトを用いてFBX自体の結合を検討してください。