GLB圧縮: Dracoで見た目はそのまま、容量は数分の一に
.glbをドロップすると、ジオメトリをDraco圧縮し、重複データをまとめたファイルが返ってきます。テクスチャ、マテリアル、スケルトン、モーフターゲット、アニメーションはそのまま通り、変わるのは三角形の保存方法だけです。ZIP 1つに最大50ファイルまで。
圧縮ツールがファイルに行うこと
処理は3段階、順番に行われます。まず、同一のアクセサー、テクスチャ、マテリアルを使用ごとではなく1回だけ保存します。次に、どこからも参照されないリソースを削除します。このとき頂点属性、末端ノード、extrasブロックは意図的にすべて残すので、テクスチャ座標をまだ必要とするマテリアルバリアントはそれを失いません。最後に、すべてのメッシュプリミティブをDracoでエンコードします。位置は14ビット、法線は10ビット、テクスチャ座標は12ビットというライブラリーの既定値で、ビューワーでの見た目は変わらず、ジオメトリは半分から4分の1になります。
テクスチャには手を付けません。テクスチャ付きモデルでは容量の大半がテクスチャなので、どれだけ減るかは元のファイルのうちジオメトリが占めていた割合しだいです。小さなテクスチャ1枚のスキャンデータなら80〜90パーセント減り、4Kテクスチャ付きのローポリの小物なら数パーセントです。ページには圧縮前後の両方の数値を表示するので、推測は要りません。
Draco GLBが開ける場所
Three.js、Babylon、model-viewer、UnityのglTFast、Godot、Blender、Khronosのサンプルビューワーは、いずれも読み込み時にDracoをデコードします。唯一対応しないのがVRMです。UniVRMやVTuberアプリは通常のglTFしか読めないため、どこでも開けないファイルにするよりも、VRMはここでは受け付けません。VRM最適化なら、それらのアプリが読める形でVRMを軽量化します。
このツールでできないこと
VRMには使えません
.vrm、またはVRMデータを含む.glbは受け付けず、VRM最適化への案内を表示します。Draco圧縮したVRMはUniVRMでもVTuberアプリでも読み込めず、どこでも開けないファイルは小さくなったとは言えません。
ジオメトリのみ
テクスチャの形式とサイズは変わりません。容量の大半が4K画像のファイルでは、減り方はわずかです。圧縮の前に3Dソフトで画像を縮小するか、VRM最適化のテクスチャ処理を使ってください。
ZIPは最大50ファイル
.glb以外のメンバーは無視され、入れ子のフォルダーは結果にも保たれます。50ファイルを超える場合、または展開後のモデルが500 MBを超える場合は、先に小さなZIPに分けてください。
3日後に削除
アップロードしたファイルと結果は、ダウンロードの有無にかかわらずジョブの3日後に削除されます。ページに履歴は残りません。ダウンロードリンクをブックマークするか、あるうちにファイルを取得してください。
よくある質問
圧縮後にモデルの見た目は変わりますか?
通常の表示距離では変わりません。Dracoはモデルの範囲全体に対して位置を14ビットに量子化します。身長2メートルのキャラクターなら0.1ミリメートル程度です。法線とテクスチャ座標が頂点と一緒に運ばれるので、ハードエッジ、UVシーム、スムーズシェーディングはすべて残ります。
VRMが受け付けられないのはなぜですか?
VRMの読み込み側(UniVRM、VSeeFace、VRChatのインポーター、VRoid Hub)はDracoをデコードしません。圧縮すると、どのVRMアプリでも開けない小さなアバターを渡すことになります。VRM最適化はコンテナを圧縮せずにポリゴンとテクスチャを減らすので、それらのアプリで読めます。
複数のファイルをまとめて圧縮できますか?
できます。ZIPにまとめてドロップしてください。最大50個の.glbをそれぞれ元の名前のまま圧縮し、1つのZIPで返します。各メンバーの圧縮前後のバイト数はページに一覧表示されます。
すでにDraco圧縮済みのファイルも処理できますか?
できます。いったんデコードし、上記の設定で再度エンコードします。サイズは前後1パーセント程度の差でほぼ同じになり、さらに半分にはなりません。
アニメーションとスキンはどうなりますか?
そのまま通ります。モーフターゲットが必要とする箇所ではDracoが頂点順序を保ち、スキンウェイトは他の属性と一緒に量子化され、アニメーションチャンネルには手を付けません。