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

    Interface LODGroupMetadata

    Metadata stored on a kind=lod Group node's .zattrs.

    interface LODGroupMetadata {
        type: "group";
        kind: "lod";
        display_type?: "points" | "lines" | "gsplats" | "mesh";
        selector: LodSelectorName;
        default_level?: number;
        transform?: number[];
        opacity?: number;
        absorption?: number;
        gamma?: number;
        intensity?: number;
        offset?: number;
        blending_mode?: BlendingModeName;
        layer?: boolean;
        visible?: boolean;
        nd_transform?: Record<string, unknown>;
        extend_to_all?: string[];
    }
    Index
    type: "group"

    Node type identifier.

    kind: "lod"

    Specialized-group discriminant.

    display_type?: "points" | "lines" | "gsplats" | "mesh"

    Geometry type the user sees this layer as. Resolved at write time (typically the finest child's type, walking through nested specialized groups). The viewer uses this for the layers-panel label.

    Spelled out rather than GeometryTypeName: this is the LOD-CAPABLE subset of the vocabulary, so do not widen it when a geometry type is added — declare that type's lod capability in types/geometry-capabilities instead, and extend this union only if it comes out true.

    selector: LodSelectorName

    Units of the children's coverage_fraction thresholds (see the module doc): 'screen-area' = literal screen-area fractions (what derived ladders stamp), 'coverage' = the legacy diagonal metric. An unknown / missing value falls back to 'coverage' so older stores keep rendering. Single-sourced from format-contract/contract.yaml::lod_selectors.

    default_level?: number

    Initial active level index for the manual-override UI. Stored 0-based in child insertion order (i.e., coarsest-first). The runtime defaults to auto (view-driven) selection; this value only seeds the override widget.

    transform?: number[]

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

    opacity?: number

    Optional compositing rendering attrs (inherited via scene-graph composition).

    absorption?: number
    gamma?: number
    intensity?: number
    offset?: number
    blending_mode?: BlendingModeName
    layer?: boolean
    visible?: boolean
    nd_transform?: Record<string, unknown>

    Optional nD transform (per-dimension affine / permutation).

    extend_to_all?: string[]

    Visibility extension across non-displayed dimensions.