最適化後にGLBが大きくなる理由

出力が大きくなっても、必ずしも失敗ではありません。新しい設定が別の形式や精度を優先していたり、入力がすでに圧縮済みだったりする場合があります。さらに設定を変える前に、元と出力の拡張機能をコマンドとともに比較してください。

ジオメトリ圧縮が解除されていないか確認

「控えめな最適化」はMeshopt圧縮を指定しません。入力がすでにMeshoptを使っていると、圧縮なしで最適化した結果、三角形数が同じでもファイルが大きくなる場合があります。出力にもMeshoptを使いたく、アプリケーションが対応しているなら、「ファイルを小さく」を選んでください。

波形サンプルでのテストサイズ(バイト)三角形数
Meshopt圧縮済みの入力39,2488,192
圧縮なしで再処理119,1208,192

このテストは、最適化済みのCC0サンプルをネイティブgltfpack 1.3で再処理したものです。三角形が増えたのではなく、出力設定が異なるためにファイルが大きくなっています。最適化を繰り返しても小さくなり続けるとは限らない例です。

テクスチャのエンコードと精度の変更を確認

UASTCはETC1Sより大幅に大きくなる場合があります。最小容量ではなく画質を選ぶ設定です。同様に、ジオメトリ量子化を無効にしたり精度を上げたりすると、データ量が増える場合があります。入力を作ったときの設定と比較してください。

小さなモデルやテクスチャでは、追加のメタデータやコンテナの付加データが削減量を上回る場合もあります。必ず減る最低容量というものはありません。新しい形式に用途上の利点がなければ、元のファイルを使うほうがよいこともあります。

両方で同じ量を測る

ダウンロードしたGLBファイル同士のサイズを比較してください。ブラウザーのネットワークパネルにはHTTP圧縮後の転送量が表示されることがありますが、ファイルマネージャーは保存されたGLBのサイズを表示します。どちらもGPU読み込み後のテクスチャメモリを直接測る値ではありません。

設定を1つ変えて再比較

元の入力に戻り、まず圧縮方式を合わせてから、テクスチャのエンコードと精度を確認します。各結果とコマンドを保存すれば、容量を増やした変更が分かります。エンコード変更による増加を、すぐに形状を削って埋め合わせようとしないでください。

ETC1S・UASTC・WebPを比較 →

条件をそろえてファイルサイズを比較する →

エンジンの資料: gltfpack

最適化ツールを開く ↗