diff --git a/README.md b/README.md index a7f8be8..4de496c 100644 --- a/README.md +++ b/README.md @@ -10,9 +10,10 @@ A C++17 / Windows desktop application providing a **Maya Render Layers-style** U - **Scene Hierarchy** — Browse prim tree with per-type SVG icons; create, delete, rename prims; add/replace references - **Property Editor** — Maya Channel Box-style attribute editing with type-aware drag inputs, color pickers, and undoable transforms - **3D Viewport** — Hydra rendering via `UsdImagingGLEngine` into an offscreen FBO; switchable render delegates; grid overlay; selection bounding boxes; camera wireframes -- **Camera Control** — Free orbital camera (tumble/truck/dolly) or drive from USD camera prims; auto near/far clipping; frame selection +- **Multi-Viewport** — Single, horizontal split, vertical split, and quad layouts; per-tile camera and render settings; Space to maximize/restore +- **Camera Control** — Free orbital camera (tumble/truck/dolly) or drive from USD camera prims; auto near/far clipping; frame selection; correct camera prim orientation for Y-up and Z-up stages - **Transform Gizmo** — Pure ImDrawList-based manipulator (translate/rotate/scale) in object or world space -- **Undo/Redo** — Full command history for prim creation/deletion, attribute edits, transform changes, and layer operations +- **Undo/Redo** — Full command history for prim creation/deletion, attribute edits, transform changes, and layer operations; Ctrl+Z / Ctrl+Y hotkeys; Edit menu integration - **Multi-select** — Rectangular selection in viewport with cross-panel syncing ## Dependencies @@ -59,15 +60,23 @@ src/ ├── core/ — USD business logic (no UI dependency) │ ├── UsdStageManager — Stage open/create/save/close lifecycle │ ├── LayerManager — Layer stack introspection and mutation -│ ├── PropertyManager — Property read/write via edit target +│ ├── PropertyManager — Property read/write via edit target with undo │ ├── CommandHistory — Undo/redo stack for ICommand instances │ ├── UsdSceneRenderer — Hydra rendering + picking + overlays │ ├── ViewportCamera — Free / USD-camera-driven orbital camera │ └── commands/ — ICommand subclasses for all mutable operations +│ ├── TransformCommand — Undoable translate/rotate/scale +│ ├── CreatePrimCommand — Undoable prim creation (with camera orientation) +│ ├── DeletePrimCommand — Undoable prim deletion (SdfCopySpec snapshot) +│ ├── AttributeSetCommand — Type-agnostic undoable attribute writes +│ ├── AddReferenceCommand — Undoable reference addition +│ ├── ReplaceReferenceCommand — Undoable reference replacement +│ └── LayerCommands — Create, remove, reorder sublayers ├── ui/ — ImGui panels and application shell │ ├── Application — App shell (owns managers/panels, docking, menus) -│ ├── ImGuiContext — Win32+OpenGL+ImGui initialization and loop -│ ├── ViewportPanel — 3D viewport with toolbar, picking, camera +│ ├── ImGuiContext — Win32+OpenGL+ImGui initialization and loop +│ ├── ViewportPanel — Viewport container (layout, divider drag, maximize) +│ ├── ViewportTile — Single viewport tile (camera, rendering, overlays, picking) │ ├── SceneHierarchyPanel — Prim tree browser with context menus │ ├── PropertyPanel — Attribute/transform editor (channel box-style) │ ├── LayerPanel — Layer stack editor with modal dialogs