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

    Dimension animation configuration Controls FPS-based animation through dimension ranges with various loop modes

    interface DimensionAnimationConfig {
        defaults: {
            targetFPS: number;
            loop: "once" | "loop" | "bounce";
            direction: "forward" | "backward";
            stepSize: number | null;
            ladderDepth: number | "auto" | null;
        };
        presets: {
            fps: number[];
            customMin: number;
            customMax: number;
            stepMultipliers: number[];
            ladderDepths: number[];
        };
        timing: { minFrameTimeMs: number; continuousTraverseSeconds: number };
        ui: { showFPSFeedback: boolean; feedbackThreshold: number };
        playback: {
            budgetFraction: number;
            minBudgetMs: number;
            overheadReserveMs: number;
            autoEnergyThreshold: number;
        };
    }
    Index
    defaults: {
        targetFPS: number;
        loop: "once" | "loop" | "bounce";
        direction: "forward" | "backward";
        stepSize: number | null;
        ladderDepth: number | "auto" | null;
    }

    Type Declaration

    • targetFPS: number
    • loop: "once" | "loop" | "bounce"
    • direction: "forward" | "backward"
    • stepSize: number | null

      Per-tick step override; null = Auto (fps-derived / authored step).

    • ladderDepth: number | "auto" | null

      Playback detail: 'auto' pins each ladder at the first rung whose cumulative energy e(k) reaches playback.autoEnergyThreshold (stamped ladders; unstamped ones fall back to time-budgeted streaming), a number pins that many rungs, null streams whatever fits the tick ("Fast"). See DimensionAnimationState.ladderDepth.

    presets: {
        fps: number[];
        customMin: number;
        customMax: number;
        stepMultipliers: number[];
        ladderDepths: number[];
    }

    Type Declaration

    • fps: number[]
    • customMin: number
    • customMax: number
    • stepMultipliers: number[]

      Step-section choices in the per-dimension context menu, as multipliers of the dimension's BASE step (authored step, else 1% of the range).

    • ladderDepths: number[]

      Detail-section choices in the per-dimension context menu: pinned rung counts offered between Auto and All (the whole ladder).

    timing: { minFrameTimeMs: number; continuousTraverseSeconds: number }
    ui: { showFPSFeedback: boolean; feedbackThreshold: number }
    playback: {
        budgetFraction: number;
        minBudgetMs: number;
        overheadReserveMs: number;
        autoEnergyThreshold: number;
    }

    Type Declaration

    • budgetFraction: number

      Fraction of the animation frame window (1000 / targetFPS) handed to the progressive loaders as their per-tick LOD time budget. The remainder covers projection, commit, and scheduling overhead. Loaders stream sub-LODs until the budget runs out — whether because of level count or a slow (cache-miss) level — then commit what they have.

    • minBudgetMs: number

      Floor for the per-tick budget so high target FPS still loads data.

    • overheadReserveMs: number

      Fixed per-tick reserve (ms) for projection + commit + render. At slow target FPS the budget is frameWindow − overheadReserveMs when that exceeds frameWindow × budgetFraction — otherwise a 1 fps playback would idle 40 % of every second with refinement disabled, capping quality below what the window could deliver.

    • autoEnergyThreshold: number

      The 'auto' playback detail pins a ladder at the FIRST rung whose cumulative energy fraction e(k) (the energy_fraction_cum build stamps) reaches this value; a ladder without stamps is left time-budgeted.