présentation
Le format .splat4d est divisé en trois parties : un en-tête, une section statique et des chunks GOP. L'en-tête contient les limites, les étapes de quantification et un index de chunk avec des plages de bytes absolues. La section statique stocke les masques et les valeurs de base par splat, permettant ainsi d'afficher la scène complète après un seul téléchargement.
fonctionnement
Le mécanisme de quantification utilisé est de type SZ/ZFP, avec une erreur bornée par construction (erreur ≤ bound). Cela signifie que chaque attribut de chaque splat dans chaque trame décodée est dans une borne choisie par l'utilisateur par rapport à la source. Après quantification, tout est calculé en mathématiques entières, ce qui empêche les dérives temporelles. Les décodeurs Rust et JavaScript reconstruisent des valeurs identiques au bit près.
splat4d encode -i frames_dir -o out.splat4d
implémentation
Le format est conçu pour les requêtes HTTP Range contre des hôtes statiques tels que S3, GCS ou R2, sans logique serveur ni fichiers de manifeste. Un client nécessite exactement les bytes 0-262143 pour le magic et l'en-tête JSON. Les magasins d'objets prennent en charge cela de manière native. Pour les clients navigateur, il faut configurer CORS pour autoriser l'en-tête Range et exposer Content-Range.
performances
Les performances du format .splat4d sont évaluées à l'aide de huit séquences provenant de trois pipelines de capture indépendants. Les résultats montrent que le format .splat4d atteint un taux de compression supérieur à 2,5 fois par rapport à la meilleure ligne de base générique (zstd-19 --long sur la série entière). Les méthodologies et les lignes de base complètes sont disponibles dans BENCHMARKS.md.