One candidate camera position inside a SpaceGraphNode. Produced by a ViewpointSampler; consumed by the TourPlanner, which picks one per visited space.

position / look / up are full Camera state — sampling the graph and feeding the result straight into a View.camera (or a CameraFlightAnimation) renders the viewpoint without further interpretation.

interface ViewpointGraphNode {
    id: string;
    look: Vec3;
    position: Vec3;
    score: number;
    spaceId: string;
    up: Vec3;
    visibilityCoverage?: number;
}

Properties

id: string

Unique node id within the parent ViewpointGraph.

look: Vec3

World-space point the camera looks at. Default samplers point the camera toward the nearest exit door so a tour through the space reads as "approach → cross threshold → next room" rather than "spin in place".

position: Vec3

Camera eye position, world coords.

score: number

Quality score in [0, 1]. Higher = better viewpoint. The tour planner picks the highest-scoring viewpoint per visited space.

spaceId: string

SpaceGraphNode.id of the space this viewpoint belongs to.

up: Vec3

Camera up vector, world coords.

visibilityCoverage?: number

Fraction of the room's interior surface area visible from this viewpoint, in [0, 1]. Optional — only the visibility- grid sampler populates it; cheaper samplers leave it undefined.