Article may be outdated

This article is 14 days old. Some details may have changed since publication.

Hacker News·3 min read·hard

Fable created novel 4D splat format

A
adamraudonis
AI Summary

A new 4D splat format has been developed to compress dynamic 3D scene captures significantly more efficiently than existing methods. The format uses techniques like static/dynamic splitting and H.265-style keyframes to enable high-performance streaming in web browsers.

Code PyPI Full demo Spec Benchmarks 16 - 58 smaller than raw 14 - 20 smaller than gzip encodes at ~640 MB/s HTTP Range -native streaming & seek Interact Live preview, streamed and decoded in your browser: a 2-second dynamic scene as one 7.4 MB .splat4d file - 58 smaller than its 427 MB of raw .splat frames. Press Interact to take the camera: drag to orbit, ctrl-scroll to zoom. Needs WebGPU (Chrome 113+, Safari 26+, Firefox 141+ on Windows) - open the full demo for more scenes and live encoding controls. How it works Static / dynamic split In a typical dynamic capture, most splats are background that never moves beyond the bound. They are stored once - the entire background of a 1.6 GB sequence costs a few MB. Classification is exact: a splat is static iff a single quantized value satisfies the bound against its min and max over the whole clip. Deadband "hold" tracks A dynamic splat's stored value changes only when the true value would violate the bound against it. This kills quantization flicker, makes temporal deltas mostly zero, and the check itself enforces the guarantee before every emitted symbol. H.265-style closed GOPs Keyframe (absolute quantized values) every N frames, then P-frames of exact integer deltas. Every GOP chunk decodes independently seeking never touches other chunks. Key streams are laid out before delta streams inside each chunk, so a scrub can fetch ~10% of a chunk and show the keyframe instantly. Entropy stack Morton-ordered splats, zigzag-coded integer deltas, byte-plane shuffle (Blosc-style), zstd per stream. Output lands at 100% of the order-0 entropy of its own symbol streams. Inside the file A .splat4d file has three parts. A small header carries the bounds, the quantization steps, and a chunk index with absolute byte ranges - everything a client needs to plan its fetches. The static section holds the per-splat masks and base values: fetch it once and the complete scene is on screen. The rest is one self-contained GOP chunk per ~1 s of video, with key streams laid out before delta streams.

Continue reading on Headlinne

Create a free account to read the full article.

Read full article →
technologyscience

Get the full story

Sign up for Headlinne to unlock AI insights, political bias analysis, and your personalized news feed.

Create free account

Already have an account? Sign in