UsdLayerManager/openspec/changes/viewport-display-usd-data/proposal.md

1.8 KiB

Why

The application currently renders a placeholder "3D viewport will be displayed here" text instead of showing actual USD scene geometry. Users cannot visually inspect their USD stages, making the tool incomplete for scene authoring workflows. A functional viewport is essential for any USD editing application — without it, users must switch to an external viewer (e.g., usdview) to see their changes.

What Changes

  • Add an OpenGL-based 3D viewport that renders USD stage geometry within the existing dockable "Viewport" panel
  • Implement a camera system (orbit, pan, zoom) for navigating the 3D scene
  • Add Hydra or direct UsdGeom-based rendering to traverse the stage and draw meshes, transforms, and materials
  • Provide viewport controls (grid display, axis indicator, background color) via a toolbar or context menu
  • Render a ground grid and axis gizmo for spatial orientation

Capabilities

New Capabilities

  • viewport-renderer: OpenGL rendering pipeline that traverses USD prims and draws geometry, materials, and transforms into an FBO-backed ImGui image
  • viewport-camera: Interactive camera controller supporting orbit, pan, and zoom with mouse input mapped through the ImGui viewport window
  • viewport-overlay: Grid, axis gizmo, and viewport settings overlay rendered on top of the 3D scene

Modified Capabilities

Impact

  • src/ui/Application.h/cpp: Replace placeholder viewport section with a ViewportPanel that owns the renderer and camera
  • New files: ViewportPanel, UsdSceneRenderer, ViewportCamera classes
  • Dependencies: OpenGL 3.3+ (already available via WGL context), OpenUSD UsdGeom/UsdShade APIs
  • Build system: CMakeLists.txt must compile new source files and link OpenGL
  • Rendering path: Initially UsdGeom traversal with OpenGL draw calls; Hydra integration deferred to a future change