GLBのファイルサイズを小さくする方法
設定を1つずつ変えて何度か書き出し、結果を比較してください。三角形数だけではファイルサイズは説明できません。同じメッシュでも、小さなテクスチャが1枚の場合と、大きな画像が複数ある場合があります。まずジオメトリを圧縮し、それでもファイルが大きければテクスチャの設定を試してください。
1. 比較用の基準を保存
元のGLBを残します。三角形の削減もテクスチャ変換もせず「控えめな最適化」を実行し、出力とコマンドを保存します。両方のバイト数と三角形数を記録してください。その後の試行も必ず元データから始めれば、差を変更した設定に結び付けられます。
2. 細部を削る前にジオメトリ圧縮を比較
元のテクスチャのまま「ファイルを小さく」を試してください。三角形の削減を指定せずMeshopt圧縮を有効にします。十分に小さくなり、ビューアーが出力拡張機能に対応していれば、三角形を削る必要がないかもしれません。
| 波形サンプル | ファイルサイズ(バイト) | 三角形数 |
|---|---|---|
| 元のモデル | 186,756 | 8,192 |
| 「控えめな最適化」プリセット | 119,120 | 8,192 |
| 「ファイルを小さく」プリセット | 39,248 | 8,192 |
独自のCC0波形サンプルをネイティブgltfpack 1.3で測定しました。テクスチャは16 × 16ピクセルしかないため、主にジオメトリ圧縮の例です。両方の出力で三角形数は変わりませんでしたが、他のすべての性質が保持されたという意味ではありません。
3. テクスチャが容量の主因か確認
2つ目のテストデータは、同じジオメトリに生成した1024 × 1024のPNGを1枚使い、元のサイズは3,061,644バイトです。PNGを変えずにMeshoptを使うと2,914,152バイト、テクスチャ出力だけを品質8のWebPにすると445,632バイトになります。3ファイルとも三角形数は8,192です。
このデータではメッシュ圧縮よりテクスチャ変更の効果がはるかに大きくなりました。原因を切り分ける例であり、どのモデルでも同じ削減率になるわけではありません。写真、法線マップ、フラットなデザインのロゴではエンコード結果が異なります。
4. アプリケーションで使える結果を選ぶ
想定する表示距離でモデルを比較し、代表的な端末で読み込みを試してください。ダウンロード容量が小さくても、GPUメモリの削減や描画の高速化に直結するとは限りません。外観と互換性の要件を満たす範囲で、最も小さい版を残します。
エンジンの資料: gltfpack
最適化ツールを開く ↗