Read a splat file's structural metadata as efficiently as the format allows —
from the header alone wherever possible, without decoding gaussian data, and
across every LOD level.
sog is peeked from meta.json (no WebP decode) and spz from its 16-byte
header (no payload decode: gzip-wrapped v1-3 files inflate only enough of the
stream to reach the header); every other format opens via readFile
(header-only for the lazy readers; eager for ksplat/mjs) and reads its
meta. For those, integrity is enforced by the readers, which throw on a size
mismatch, so a returned FileInfo implies a structurally sound file; the
sog/spz peeks validate the header but not the payload. A FileInfo doesn't
imply splat data either: a permissive container (e.g. a point-cloud PLY) reads
fine with gaussian: false. To test "is this a valid splat", check both: a
throw means unreadable, gaussian is the data verdict.
Read a splat file's structural metadata as efficiently as the format allows — from the header alone wherever possible, without decoding gaussian data, and across every LOD level.
sogis peeked frommeta.json(no WebP decode) andspzfrom its 16-byte header (no payload decode: gzip-wrapped v1-3 files inflate only enough of the stream to reach the header); every other format opens via readFile (header-only for the lazy readers; eager forksplat/mjs) and reads itsmeta. For those, integrity is enforced by the readers, which throw on a size mismatch, so a returnedFileInfoimplies a structurally sound file; thesog/spzpeeks validate the header but not the payload. AFileInfodoesn't imply splat data either: a permissive container (e.g. a point-cloud PLY) reads fine withgaussian: false. To test "is this a valid splat", check both: a throw means unreadable,gaussianis the data verdict.