splats4D: ストリーミング可能な 4D ガウススプラッティングフォーマット

splats4D: ストリーミング可能な 4D ガウススプラッティングフォーマット

概要

splats4D は、動的 3D シーンの高効率圧縮とストリーミングを目的とした新しい 4D ガウススプラッティングフォーマットです。生データに比べて 16〜58 倍、gzip に比べて 14〜20 倍小さく圧縮でき、エンコード速度は約 640 MB/s です。このフォーマットは、HTTP Range リクエストを利用したオブジェクトストア(S3、GCS、R2 など)経由での配信を前提に設計されており、サーバー側ロジックやマニフェストファイルなしで即時のファーストビュー描画と高速シークが可能です。

圧縮アーキテクチャ

.splat4d フォーマットは、静的要素と動的要素を分離し、時間的デルタエンコーディング戦略を採用することでファイルサイズを削減します。

静的と動的の分割

冗長性を最小化するため、フォーマットはスプラットがクリップ全体でユーザー定義の誤差境界を満たす単一の量子化値で表現できる場合、これを静的と分類します。これらの静的スプラットは一度だけ保存されるため、長大なシーケンスでも背景は数メガバイト程度に抑えられます。

デッドバンド "Hold" トラック

量子化フリッカーを防ぎ、時間的デルタを削減するために、スプラットは "hold" メカニズムを使用します。保存された値は、実際の値が現在の保存値に対してユーザー定義の境界を超えたときにのみ変化します。これにより時間的デルタはほぼゼロに保たれ、各シンボルが出力される前に厳密な精度保証が維持されます。

GOP 構造とシーク

H.265 から借用した閉じた Group of Pictures (GOP) を使用します。キーフレーム(絶対量子化値)は N フレームごとに保存され、その後に整数デルタからなる P フレームが続きます。各 GOP チャンクは独立してデコードできるため、シーク時に前のチャンクを処理する必要がありません。キーストリームはデルタストリームの前に配置されるため、クライアントはチャンクの最初約 10% だけを取得してキーフレームを即座に表示できます。

エントロピースタック

最終圧縮パイプラインは、Morton 順序のスプラット、ジグザグ符号化整数デルタ、Blosc スタイルのバイトプレーンシャッフル、そしてストリームごとの zstd 圧縮を利用します。このプロセスにより、出力サイズはシンボルストリームの 0 次エントロピーに近づきます。

決定的エラーバウンド

PSNR や平均誤差に依存するフォーマットとは異なり、splats4D は SZ/ZFP スタイルのエラー有界量子化を使用します。これにより、すべてのフレームのすべてのスプラットのすべての属性が、ソースに対して決定的かつ点ごとの境界内に収まります。

属性 境界 デフォルト
位置 ± ミリメートル、軸ごとの Lⁿ ±2 mm
カラー RGB ± 8 ビットレベル/チャンネル ±4/255
不透明度 ± 8 ビットレベル ±4/255
回転 ± クォータニオン成分 正確 (±0)
スケール ± 相対 %、軸ごと ±2%

ストリーミングとオブジェクトストア統合

フォーマットはプレーンな HTTP Range リクエストを前提としています。クライアントは以下の少数のターゲット取得でシーンを描画できます。

  1. ヘッダー: 最初の 256 KB を取得し、マジックナンバーとバイトオフセットを含むヘッダー JSON を取得。
  2. 静的セクション: 静的スプラットを取得して最初のビュー全体を描画。
  3. GOP チャンク: 再生中または事前取得で対応する GOP チャンクを取得。
  4. シーク: チャンクプレフィックス範囲を取得し、約 100〜150 ms でキーフレームを表示。

パフォーマンスベンチマーク

Dynamic 3D Gaussians や Neu3D などのパイプラインからの 8 つのシーケンスで、splats4D は汎用圧縮を常に上回ります。例として、2 秒間の "flame" シーンは 427 MB(生データ)から 18.5 MB に削減され、23.2 倍の圧縮率を実現しました。

シーケンス フレーム × スプラット 生データサイズ Gzip サイズ splat4d サイズ
Birthday 40 × 659k 844 MB 724 MB 40.7 MB (20.7×)
Boxes 40 × 351k 450 MB 423 MB 27.2 MB (16.5×)
Flame 40 Ó 334k 427 MB 367 MB 18.5 MB (23.2×)
Juggle 150 Ó 337k 1616 MB 1515 MB 83.4 MB (19.4×)
Sear 40 Ó 109k 16.9× 8.2 MB
Softball 40 Ó 336k 430 MB 404 MB 25.9 MB (16.6×)
Tennis 40 Ó 333k 426 MB 401 MB 26.2 MB (16.3×)

実装

本プロジェクトは MIT ライセンスで提供され、.splat フレームの時系列を単一の .splat4d ファイルにエンコードする Python パッケージ(pip install splats4d)を提供します。ビューアは antimatter15/splat レンダラの移植版で、WebGPU をサポートし、WebGL2 フォールバックも備えています。

Sources