最適化後にGLBが大きくなる理由
出力が大きくなっても、必ずしも失敗ではありません。新しい設定が別の形式や精度を優先していたり、入力がすでに圧縮済みだったりする場合があります。さらに設定を変える前に、元と出力の拡張機能をコマンドとともに比較してください。
ジオメトリ圧縮が解除されていないか確認
「控えめな最適化」はMeshopt圧縮を指定しません。入力がすでにMeshoptを使っていると、圧縮なしで最適化した結果、三角形数が同じでもファイルが大きくなる場合があります。出力にもMeshoptを使いたく、アプリケーションが対応しているなら、「ファイルを小さく」を選んでください。
| 波形サンプルでのテスト | サイズ(バイト) | 三角形数 |
|---|---|---|
| Meshopt圧縮済みの入力 | 39,248 | 8,192 |
| 圧縮なしで再処理 | 119,120 | 8,192 |
このテストは、最適化済みのCC0サンプルをネイティブgltfpack 1.3で再処理したものです。三角形が増えたのではなく、出力設定が異なるためにファイルが大きくなっています。最適化を繰り返しても小さくなり続けるとは限らない例です。
テクスチャのエンコードと精度の変更を確認
UASTCはETC1Sより大幅に大きくなる場合があります。最小容量ではなく画質を選ぶ設定です。同様に、ジオメトリ量子化を無効にしたり精度を上げたりすると、データ量が増える場合があります。入力を作ったときの設定と比較してください。
小さなモデルやテクスチャでは、追加のメタデータやコンテナの付加データが削減量を上回る場合もあります。必ず減る最低容量というものはありません。新しい形式に用途上の利点がなければ、元のファイルを使うほうがよいこともあります。
両方で同じ量を測る
ダウンロードしたGLBファイル同士のサイズを比較してください。ブラウザーのネットワークパネルにはHTTP圧縮後の転送量が表示されることがありますが、ファイルマネージャーは保存されたGLBのサイズを表示します。どちらもGPU読み込み後のテクスチャメモリを直接測る値ではありません。
設定を1つ変えて再比較
元の入力に戻り、まず圧縮方式を合わせてから、テクスチャのエンコードと精度を確認します。各結果とコマンドを保存すれば、容量を増やした変更が分かります。エンコード変更による増加を、すぐに形状を削って埋め合わせようとしないでください。
エンジンの資料: gltfpack
最適化ツールを開く ↗