ファイルの正体はテクスチャ
40MBのGLBを開いて、中身を実際に見てみてください。ほぼ例外なくジオメトリは1〜3MBで、残りはすべてテクスチャです。4096×4096のPNGノーマルマップは1枚で約20MB。4KのPBRセット一式なら、三角形を1枚も描かないうちに簡単に60MBを超えます。
この無料オンライン3Dテクスチャ最適化ツールは、ファイルのその部分だけを扱い、汎用の圧縮ツールにはないスロットごとの制御を提供します。
スロットごとの設定が重要な理由
すべてのテクスチャを同じ扱いにすること — それが、最適化したモデルの見た目をおかしくする原因です。
ベースカラーとエミッシブのマップは知覚的な画像です。人の目はわずかな色の誤差に寛容なので、品質80の非可逆WebPなら、見た目を変えずにバイト数を90%削れるのが普通です。
ノーマルマップは画像ではありません。 各ピクセルはRGBチャンネルに方向ベクトルを符号化しています。JPEG方式のクロマサブサンプリングは隣接ピクセル間で色チャンネルを平均化しますが、ノーマルマップではこれは面の向きを平均化することを意味します。結果として陰影は濁って平坦になり、多くの人は理由を知らないまま「モデルのディテールが失われた」と表現します。ノーマルマップはロスレスのまま保ち、縮小もカラーより控えめにしてください。
メタリック・ラフネスやオクルージョンのマップは、単一チャンネルのデータをRGBに詰め込んだものです。ラフネスは表面上でゆるやかにしか変化しないため、これらは縮小に非常に強く、カラーマップの半分の解像度にしても違いが分からないことがよくあります。
既定値はこの考え方をそのまま反映しています。カラーは非可逆WebP、ノーマルはロスレスWebP、ORMマップはより小さいWebPです。
形式について
- WebP — 実用上どこでも対応しており、削減効果も大きい、順当な既定値です。
- AVIF — さらに小さくなります。ここではブラウザではなく同梱の libavif がエンコードするため、どの環境でも同じように動作します。WebP よりエンコードは遅く、大きなカラーマップほど効果があります。
- JPEG — アルファチャンネルがないため、透明を含むものには使わないでください。
- PNG — ロスレスですが、ロスレスWebPよりはるかに大きくなります。PNGを明示的に要求するパイプラインでのみ使ってください。
KTX2 / Basis Universalは意図的に用意していません。GPUメモリの観点では最良の形式ですが、エンコードにはBasisエンコーダーという大きな別系統のツールチェーンが必要で、本ツールでは生成物について嘘をつくことになってしまいます。
再エンコードの結果が元より大きくなる場合 — すでに非可逆のJPEGをロスレス形式へ入れるとこうなります — 本ツールは元のテクスチャを残し、そのことを表示します。
グリッドで結果を確認する
処理後は、各テクスチャがスロット名・最終的な寸法・前後のサイズとともにグリッドに並びます。サムネイルでノーマルマップが眠く見えるなら、モデル上でも眠く見えます。そのスロットの設定を変えて再実行してください。
2のべき乗の寸法
一部の古いエンジンやミップマップの経路では、テクスチャの寸法が2のべき乗であることが必要です。このスイッチは各テクスチャを最も近い2のべき乗に丸めます。気にしない現代のWebGL2やWebGPU向けならオフのままで構いません。
プライバシー
デコードも再エンコードも、ブラウザ自身のcanvas APIを通じて行われます。テクスチャがアップロードされることはありません。
Tiny Online Tools







