Add animation curve editor with Bezier F-curve round-trip
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>
This commit is contained in:
@@ -369,6 +369,11 @@ void TimelinePanel::SetCurrentFrame(double frame)
|
||||
}
|
||||
}
|
||||
|
||||
void TimelinePanel::SetCurrentFrameExternal(double frame)
|
||||
{
|
||||
SetCurrentFrame(frame);
|
||||
}
|
||||
|
||||
void TimelinePanel::NotifyTimeChanged()
|
||||
{
|
||||
if (OnTimeChanged)
|
||||
|
||||
Reference in New Issue
Block a user