glTFエクスポート時のDraco圧縮で、効率的にファイルを小さくする (ver.21)
ver.21
glTFでは「Draco圧縮」を使用することで、ポリゴンメッシュ情報を大きく圧縮してファイルサイズをコンパクトにすることができます。
Draco圧縮は、メッシュ情報(三角形の頂点インデックス/位置/法線/UV/頂点カラー/スキンのウエイト)を圧縮します。
DracoおよびglTF2.0の仕様上、アニメーション/テクスチャイメージの圧縮には対応していません。
そのため、3Dモデルでテクスチャイメージが大半を占める多くの場合ではそれほど圧縮効果は発揮されないようです。
また、Draco圧縮に対応していないインポータ/ビュワーもあるため、glTFの使用箇所によってはDraco圧縮を使わないほうが可搬性が高い場合もあります。
1ポリゴンメッシュの面数が多い場合
3Dスキャンした形状や3Dプリント向けの形状の場合、比較的ポリゴン数が多いです。
この場合は、高い圧縮効果が期待できます。
以下の画像の形状は、3Dプリント用の形状で250912三角形のポリゴンメッシュです。UVはありません。
この形状をDraco圧縮を行わずにglb形式でエクスポートします。5.82 MBのファイルサイズになりました。
次に、glTF Exportダイアログボックスで「Draco圧縮」チェックボックスをオンにしてエクスポートします。
0.418 MBのファイルサイズになりました。
Draco圧縮 | glbのファイルサイズ |
---|---|
なし | 5.82 MB |
使用 | 0.418 MB |
これより、この形状の場合は圧縮率は10倍以上です。
このDraco圧縮はファイルとしての圧縮となり、WebGLとして表示する際などは元のジオメトリに展開されます。
そのため、リアルタイム描画のリソースとしては圧縮されているわけではない点に注意してください。
単純なポリゴンメッシュが大量にあるシーンの場合
以下は、単純な直方体のポリゴンメッシュを2000個ランダムに配置したシーンです。
この形状をDraco圧縮を行わずにglb形式でエクスポートします。3.17 MBのファイルサイズになりました。
Draco圧縮を使用してglb形式でエクスポートすると、2.12MBのファイルサイズになりました。
Draco圧縮 | glbのファイルサイズ |
---|---|
なし | 3.17 MB |
使用 | 2.12 MB |
あまり圧縮は効いていません。
このように、単純な形状が大量にあるシーンの場合はあまりDraco圧縮は有効ではありません。
次にこの2000個のポリゴンメッシュを「オブジェクトの結合」で1つのポリゴンメッシュにまとめました。
12006の四角形で構成されたポリゴンメッシュになります。
この形状をDraco圧縮を行わずにglb形式でエクスポートします。1.60 MBのファイルサイズになりました。
Draco圧縮を使用してglb形式でエクスポートすると、0.15 MBのファイルサイズになりました。
Draco圧縮 | glbのファイルサイズ |
---|---|
なし | 1.60 MB |
使用 | 0.15 MB |
この場合は圧縮率は10倍以上となりました。