Stage 2 of the planCameraTour pipeline — for each SpaceGraphNode from the extractor, emit up to CameraTourPlanOptions.maxViewpointsPerRoom candidate camera placements, each scored for visibility / coverage.

The default sampler (sampleVisibilityGrid) lays out a grid of candidates inside each space, raycasts CameraTourPlanOptions.visibilityRayCount rays from each candidate against the scene collision index, and scores by coverage. The cheaper alternative (sampleRoomCentroid) emits one viewpoint per space, anchored at the centroid and looking toward the nearest exit door.

Implementations should:

interface ViewpointSampler {
    sample(input: ViewpointSamplerInput): Promise<SDKResult<ViewpointGraph>>;
}

Methods

Methods