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

    Result of a successful pick operation.

    interface PickResult {
        nodeId: number;
        elementId: number;
        storageElementId: number;
        brightness: number;
        mainNode: Object3D;
        screenX: number;
        screenY: number;
    }
    Index
    nodeId: number

    Assigned pick ID of the node

    elementId: number

    The ON-DISK element index within the node (point index, segment instance, splat instance) — i.e. the index the per-element string/image CSRs are keyed by, resolved through the node's published slot → on-disk map (see picking-system/element-id-map.ts). Falls back to the raw visible-buffer storage slot when the node published no map — which is NOT a guarantee that the two index spaces coincide: a range-loaded points node with no per-element string/image channel publishes no map yet still diverges, and reports the slot (as it did before the map existed).

    storageElementId: number

    Visible-buffer storage slot before the on-disk element-id remap.

    brightness: number

    Brightness weight of the winning vote

    mainNode: Object3D

    Reference to the main scene object

    screenX: number

    Canvas-local cursor position this pick was taken at, in CSS pixels — the untransformed (screenX, screenY) handed to performPick, NOT the lens-corrected or pick-buffer-scaled coordinate used for the readback.

    Carried so a consumer holding onto a pick can check the cursor is still where the pick happened (issue #1917: a click acts on the settled hover pick). Strictly this is belt-and-braces — any real mouse movement fires mousemove, which bumps the generation counter and invalidates such a cache anyway — but it keeps the staleness check self-contained instead of resting on that invariant holding somewhere else forever.

    screenY: number