Stage 3 of the planCameraTour pipeline — pick the order of spaces to visit and the chosen viewpoint per stop.

The default planner is planTourTwoOpt — it seeds with the greedy nearest-neighbour walk from CameraTourPlanOptions.startSpaceId (or the largest space when no start hint is given), selects each space's highest-scoring viewpoint, then runs 2-opt swaps until the tour is a local optimum. planTourGreedy is the unrefined seed, exposed so latency-sensitive callers can skip the refinement pass.

Implementations should:

  • visit every space that has at least one viewpoint;
  • skip spaces whose viewpoint bucket is empty;
  • prefer adjacent-via-portal hops over teleporting across the building, even when a teleport would be shorter Euclidean distance.
interface TourPlanner {
    plan(input: TourPlannerInput): Promise<SDKResult<TourPlanResult>>;
}

Methods

Methods