Top-level input to planCameraTour. Couples the source model with optional semantic data and per-stage strategy overrides.

The extractor default is the IFC extractor — it walks dataModel.objectsByType["IfcSpace"] plus IfcRelSpaceBoundary / IfcDoor adjacency. Supply a custom extractor (or the geometry-fallback one) for SceneModels without a paired DataModel.

interface CameraTourPlanParams {
    dataModel?: DataModel;
    extractor?: SpaceExtractor;
    options?: CameraTourPlanOptions;
    planner?: TourPlanner;
    sampler?: ViewpointSampler;
    sceneModel: SceneModel;
}

Properties

dataModel?: DataModel

Optional DataModel paired with sceneModel. Required by the default IFC SpaceExtractor; ignored by geometry-only extractors.

extractor?: SpaceExtractor

Strategy override — defaults to the IFC extractor. Swap to extractSpacesFromGeometry for non-IFC sources, or provide a custom extractor for proprietary schemas.

Per-call tuning. All fields optional; see CameraTourPlanOptions for defaults.

planner?: TourPlanner

Strategy override — defaults to planTourTwoOpt (greedy nearest-neighbour seed, then 2-opt-refined for shorter tours on convoluted floor plans). Swap to planTourGreedy to skip the refinement pass when latency matters more than tour quality (e.g. headless precompute that runs per save).

Strategy override — defaults to the visibility-grid sampler, which raycasts from candidates against the scene collision index and scores by coverage. Swap to sampleRoomCentroid for a cheaper "one viewpoint per room" path.

sceneModel: SceneModel

Source SceneModel — the geometry the camera will walk through. The collision index is read off sceneModel.scene internally for occlusion + raycasting work.