29 lines
1.8 KiB
Markdown
29 lines
1.8 KiB
Markdown
## 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
|