## 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