ファイルサイズと実行性能は別物
2MBのGLBが12fpsしか出ず、20MBのGLBが60fpsで動く。どちらも十分あり得ます。圧縮が直すのはダウンロード時間で、このツールが直すのはフレーム時間です。二つの問題にはほとんど共通点がありません。
実際にフレームを奪っているのはドローコールです。メッシュプリミティブ一つひとつが、ステート変更を伴ってCPUからGPUへ発行されるコマンドです。CADから400個の別パーツとして書き出された家具モデルは、毎フレーム400回のドローコールを発行します。どれだけDracoで圧縮しても、これは変わりません。
各ステップの働き
メッシュを結合 — 同じマテリアルと属性構成を持つプリミティブを一つにまとめます。リアルタイム性能でいちばん効く処理で、数百あったドローコールが数個になることも珍しくありません。
GPUインスタンシング — 同じメッシュが何度も現れる場合(ボルト、椅子、樹木など)、EXT_mesh_gpu_instancing に変換し、GPUがすべてのコピーを1回の呼び出しで描けるようにします。
マテリアルパレット — ベースカラーだけが違うマテリアルを、アトラス化した1つのマテリアルに統合します。これによって、それまで結合できなかったメッシュの結合が可能になります。
重複を排除 — エクスポーターは同じアクセサー・テクスチャ・マテリアルを平気で二重に書き出します。統合すればメモリが減り、後続の統合もしやすくなります。
不要データを削除 — どこからも参照されていないノード、マテリアル、テクスチャ、アクセサーを削除します。見た目は決して変わらない、純粋な得です。
頂点を結合 — 同一位置にある重複頂点をまとめ、インデックスバッファを小さくしてキャッシュ効率を改善します。
フラット化 — トランスフォームを保持するだけの入れ子ノードを畳みます。
並べ替え — インデックスと頂点を並べ替え、GPUのポストトランスフォーム頂点キャッシュのヒット率を大きく高めます。GPU側で通常5〜15%の改善が無料で得られます。
スパースアクセサー — ほとんどがゼロのデータ(モーフターゲットに多い)をコンパクトに格納します。
法線を生成 — エクスポーターが法線を書き忘れた場合に生成します。モデルがフラットシェードや真っ黒に見える原因はたいていこれです。
順序が重要
これらのステップは独立していません。結合の前に頂点結合を済ませないと、まとめたメッシュが重複頂点を抱えたままになります。インスタンシングはフラット化より前でなければなりません。フラット化は、インスタンシングが検出する繰り返し構造そのものを壊してしまうからです。並べ替えは最終的なインデックスバッファができた後、必ず最後に行います。ツールがこの順序を強制するので、トグルは「どのステップを実行するか」だけを決めます。
2つのプリセット
- リアルタイム — すべて有効。ウェブビューアやエンジン向けにアセットを仕上げるときに。
- セーフ — 重複排除・不要データ削除・頂点結合・並べ替えのみ。構造は一切変わらないので、ノード名と階層はそのまま残ります。
アプリが名前でオブジェクトを検索したり、特定のノードをアニメーションさせたりしている場合はセーフを選んでください。結合とフラット化はそれを壊します。
できないこと
結合できるのは同じマテリアルを共有するメッシュだけです。本当に40種類のマテリアルを持つモデルは、依然として最低40回のドローコールを発行します。その場合の対処はテクスチャアトラス化で、これはモデリングの仕事であり自動化できません。ステップごとの結果表が、各処理の実際の成果を正直に示します。
プライバシー
すべての処理はブラウザ内でローカルに実行されます。アップロードも保存もログ記録も行いません。
Tiny Online Tools







