UsdLayerManager/openspec/changes/multi-viewport-support/specs/per-viewport-camera/spec.md

1.7 KiB

ADDED Requirements

Requirement: Independent camera per viewport tile

Each viewport tile SHALL own an independent ViewportCamera instance. Camera operations (orbit, pan, dolly, zoom, frame) in one tile SHALL NOT affect any other tile's camera.

Scenario: Orbit in one tile, other tiles unchanged

  • WHEN the user Alt+LMB drags to orbit in tile A
  • THEN tile A's camera rotates, while tiles B, C, D remain at their previous camera positions

Scenario: Frame selection in one tile

  • WHEN the user presses F in a tile
  • THEN that tile's camera frames the current selection, other tiles are unaffected

Requirement: Per-tile camera selector dropdown

Each tile SHALL have a compact camera selector (icon + dropdown) showing "Free Camera" and all USD camera prims on the stage. Selecting a USD camera in one tile SHALL NOT affect other tiles.

Scenario: Tile A uses Free Camera, Tile B uses a USD camera prim

  • WHEN the user selects a USD camera prim in tile B's camera dropdown
  • THEN tile B switches to USD camera mode and renders from that camera's view, while tile A continues in free camera mode

Scenario: Both tiles use the same USD camera

  • WHEN the user selects the same USD camera prim in both tile A and tile B
  • THEN both tiles render from that camera's view but can navigate independently when one tile goes into free camera mode

Requirement: Camera list refreshes on dropdown open

Each tile SHALL refresh its camera prim list from the stage whenever its camera dropdown is opened.

Scenario: New camera added, then dropdown opened

  • WHEN the user adds a new UsdGeomCamera prim to the stage and opens a tile's camera dropdown
  • THEN the dropdown includes the newly added camera prim