2.3 KiB
2.3 KiB
Why
The current viewport uses a fixed internal camera with basic orbit/pan/zoom controls that do not match industry-standard DCC conventions. Users cannot view the scene through USD stage cameras (e.g. perspective cameras authored in the USD file), and the input mapping differs from Maya's Alt+button convention, making the tool feel foreign to target users. Adding Maya-style controls and the ability to frame the selected prim are essential for a usable USD editing workflow.
What Changes
- Add Maya-style viewport navigation: Alt+LMB to orbit, Alt+MMB to pan, Alt+RMB (or scroll) to dolly/zoom, with optional Alt-free scroll zoom
- Add the ability to switch the viewport camera between the built-in free camera and any camera prim found on the USD stage
- Add a "Frame Selected" action (press F key) that frames the viewport on the currently selected prim's bounding box
- Add a "Frame All" action (press A key) that frames the viewport on the entire stage bounds
- Add a camera selector dropdown in the viewport toolbar to switch between free camera and stage cameras
Capabilities
New Capabilities
maya-viewport-controls: Maya-style Alt+button navigation scheme replacing the current LMB/MMB/scroll mappingviewport-camera-switching: Switch viewport rendering between the built-in free camera and USD stage camera primsviewport-frame-selection: Frame viewport on selected prim (F key) and frame all (A key)
Modified Capabilities
imgui-docking: No spec-level requirement changes; the viewport toolbar UI integrates within the existing dockable panel system
Impact
- ViewportCamera: Add support for driving the view from an external USD camera prim (reading its transform and projection); refactor internal state to support both free-camera and USD-camera modes
- ViewportPanel: Rewrite
HandleInput()to use Maya-style Alt+button conventions; add camera selector UI in the viewport toolbar; add Frame Selected / Frame All hotkeys; expose camera switching - UsdSceneRenderer: No changes required — it already accepts view/projection matrices
- Application: Wire up the selected prim path from SceneHierarchyPanel to the viewport for frame-selected functionality
- Dependencies: No new third-party dependencies; all changes use existing OpenUSD and ImGui APIs