Maya-style Graph Editor panel (View > Curve Editor) that fits Catmull-Rom
Bezier curves through USD time samples, allows interactive editing with
tangent handles, and bakes the result back to dense linear samples on Apply.
Key behaviours:
- Left panel lists all animated attributes of the selected prim, decomposed
into per-component channels (translate [X/Y/Z], etc.) with colour swatches
and visibility toggles
- ImDrawList canvas: smooth Bezier polylines, always-visible tangent handle
lines/circles, diamond keyframe markers
- Pan (MMB/Alt+drag), zoom (scroll / Shift+scroll), Frame All (F)
- LMB drag moves keyframes; tangent handle drag reshapes curve with mirrored
or broken handles; box-select for multi-selection
- Double-click canvas adds a keyframe; Delete removes selected keyframes
- RMB context menu: Delete, Flatten, Break/Unify Tangents, Auto Tangents
- Simplify toggle (Ramer-Douglas-Peucker) reduces baked sample count
- Time cursor draggable to scrub the timeline
- UsdNotice::ObjectsChanged listener re-fits clean channels whenever the
stage changes externally (Property Panel edits, Auto-Key, undo/redo),
while preserving channels with unsaved Bezier edits
- Bake is a single undoable AttributeSetCommand (Ctrl+Z restores original
sparse samples); Revert discards in-editor edits without touching USD
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>