Luxar Viewer API Documentation - v2026.9.22
    Preparing search index...

    Interface GSplatsMetadata

    GSplats node metadata from zarr .zattrs

    This interface defines all metadata stored with a GSplats node in the zarr archive. It enables type-safe access to splat properties throughout the viewer.

    interface GSplatsMetadata {
        type: "gsplats";
        n_splats: number;
        ndim: number;
        has_colors: boolean;
        has_label_ids?: boolean;
        label_vocabulary?: Record<string, string>;
        has_labels?: boolean;
        has_image_labels?: boolean;
        has_keys?: boolean;
        chunk_size: number;
        amplitude_range: ValueRange;
        center_bounds: CoordinateBounds;
        position_bounds?: CoordinateBounds;
        ordering: OrderingMethodName;
        ordering_min?: number[];
        ordering_max?: number[];
        ordering_bits_per_dim?: number;
        slice_dims?: number[];
        transform?: number[];
        opacity?: number;
        absorption?: number;
        gamma?: number;
        intensity?: number;
        offset?: number;
        blending_mode?: BlendingModeName;
        layer?: boolean;
        extend_to_all?: string[];
        n_additive_sublods?: number;
        truncation_radius?: number;
    }
    Index
    type: "gsplats"

    Node type identifier

    n_splats: number

    Total splat count

    ndim: number

    Position dimensionality

    has_colors: boolean

    Whether colors array is present

    has_label_ids?: boolean

    Whether exact per-splat categorical ids are present.

    label_vocabulary?: Record<string, string>

    Exact id-to-name vocabulary for label_ids.

    has_labels?: boolean

    Whether per-element string labels exist (CSR-encoded, for hover tooltips)

    has_image_labels?: boolean

    Whether per-element image labels exist (CSR-encoded, for hover thumbnails)

    has_keys?: boolean

    Whether per-element stable string keys exist (CSR-encoded, for element actions)

    chunk_size: number

    Elements per chunk

    amplitude_range: ValueRange

    Amplitude value range

    center_bounds: CoordinateBounds

    Center coordinate bounds

    position_bounds?: CoordinateBounds

    Axis-aligned bounds stamped by the v3.0 writer on every node (a leaf's is its center bounds; a group's is the union of its children). Used for framing/clipping a bare-node file on load. Optional for back-compat with scene leaves that surfaced only center_bounds.

    Spatial ordering method

    ordering_min?: number[]

    Min bounds for coordinate normalization (when ordering != 'none')

    ordering_max?: number[]

    Max bounds for coordinate normalization (when ordering != 'none')

    ordering_bits_per_dim?: number

    Bits per dimension for space-filling curve encoding (when ordering != 'none')

    slice_dims?: number[]

    BARRIER (categorical) center-column indices the writer's spatial ordering grouped by — the authoritative answer to "which dims did chunk_bounds NOT get the truncation_radius · σ expansion on". Stamped whenever ordering != 'none' by luxar/io/_compiler/gsplat_assembly.py::apply_gsplat_group_attrs (full leaves) and by the lightweight additive_<i> sub-LOD branch of luxar/io/_compiler/gsplat_tree.py::_write_single_splat_set, from whichever set compute_chunk_bounds_gsplats actually used.

    Read by gsplats-spatial-index-loader.ts and passed to the tolerance computer as ToleranceOptions.barrierDims. Absent on a legacy store (and on ordering: 'none' nodes, which run no spatial query), where the reader falls back to the scene dimensions' discrete flags. Same index space as ndim / chunk_bounds columns / slicePosition.

    transform?: number[]

    4x4 transform matrix (column-major for THREE.js)

    opacity?: number

    Opacity multiplier

    absorption?: number

    Absorption coefficient κ (volumetric blending mode; identity 1.0)

    gamma?: number

    Gamma correction

    intensity?: number

    Intensity (linear color multiplier / gain)

    offset?: number

    Offset (additive brightness shift / black level subtraction)

    blending_mode?: BlendingModeName

    Blending mode

    layer?: boolean

    Whether this node is exposed as a layer in the Layers panel

    extend_to_all?: string[]

    List of dimension names to extend visibility across. GSplats with extend_to_all will be visible regardless of slice position in the specified dimensions. Allows splats to appear at all values of non-displayed dimensions (e.g., all times, all channels).

    Example: ["Time", "Channel"] makes splats visible at all time points and all channels regardless of the current slice position.

    n_additive_sublods?: number

    Number of additive sub-LODs. When > 1 the splats group contains additive_0/ … additive_<N-1>/ subgroups for progressive (prefix-sum) loading. Absent or 1 means single-LOD (flat) layout.

    truncation_radius?: number

    Gaussian truncation radius in standard deviations. Falls back to GSPLAT_DEFAULT_TRUNCATION_RADIUS (config/constants.ts) when absent.