/** * @fileoverview GaussianPlyLoader — decode a 3D Gaussian Splatting `.ply` into the trainer's * `Gaussian3D` SoA. This is the `dataset.init` consumer that was missing (flagged by the 2026-06-20 * /critic review: "no loader turns job.dataset.init into the Gaussian3D the runner requires"). * * Decodes the standard 3DGS PLY layout (the inria/gsplat format): position is raw; scale is stored * in LOG space (→ exp); opacity in LOGIT space (→ sigmoid); color is the SH degree-0 DC term * (→ 0.5 + C0·f_dc, C0 = 0.28209); rotation is a (w,x,y,z) quaternion (→ normalized). This decode is * the one proven correct against the real S23 capture (it renders matching gsplat). * * Parses `binary_little_endian` / `binary_big_endian` headers with per-property typed byte offsets * (so non-float properties like normals don't corrupt the stride). ASCII PLY bodies are not supported * (3DGS exports are always binary). Higher-order SH (`f_rest_*`) is skipped — the trainer is diffuse * RGB only (see GaussianTrainer3D header). */ import { type Gaussian3D } from './GaussianTrainer3D'; /** * Decode a 3DGS `.ply` (binary) into a `Gaussian3D`. The caller reads the file bytes (the engine * module stays fs-free / portable); pass the buffer in. * * @throws on a non-3DGS PLY (missing scale_, rot_, opacity, or f_dc_ properties) or an ASCII body. */ export declare function loadGaussianPly(data: Uint8Array | ArrayBuffer): Gaussian3D; //# sourceMappingURL=GaussianPlyLoader.d.ts.map