Commit Graph

86 Commits

Author SHA1 Message Date
loris rossi
b1d8ebc086 CurveEditor
- Fixed crash while engine is exiting due to FCurveEditor unbinding its uobject delegates in destructor

[CL 35220246 by loris rossi in ue5-main branch]
2024-07-31 13:59:51 -04:00
andrew rodham
927c5d41b3 Sequencer: Added time-warp capabilities to sequences, sub-sections and skeletal animation sections
This is a large suite of changes that are being submitted in bulk for build-health reasons:

Core machinery:
 - FMovieSceneNumericVariant: This is the base variant type that represents either a double, or a custom object. It is not much use on its own, but provides the basis for the time-warp variant, and will be the basis for parameterization.
 - FMovieSceneTimeWarpVariant: This is a drop in replacement for a double PlayRate/TimeScale UProperty that can now represent a time-warp or play rate curve, a loop, a clamp, or a fixed time. It also provides functionality for remapping time, and inverse remapping time.
 - The following interpolation types have been added/improved to add Derivative and Integral functionality
   * FConstantValue: Represents a curve of the form y=c
   * FLinearInterpolation: Represents a curve of the form y=mx + c
   * FQuadraticInterpolation: Represents a curve of the form y=ax^2 + bx + c.
   * FCubicInterpolation: Represents a curve of the form y=ax^3 + bx^2 + cx + d.
   * FQuarticInterpolation: Represents a curve of the form y=ax^4 + bx^3 + cx^2 + dx + e. Does not support integration.
   * FCubicBezierInterpolation now has an AsCubic method that converts it to a cubic polynomial form, which also allows derivative/integral functionality.
 - FPiecewiseCurve(Model): A generic read-only piecewise curve implementation and curve editor model. Used to display derivative curves for playrate.
 - FMovieSceneTimingParameters: A struct for specifying section timing that simplifies computation of a transform. I wanted to replace all implementations with this but current deprecation mechanisms were prohibitively restrictive. More work will be needed there to remove legacy code.
 - FMovieSceneTimeWarpChannel: A new channel type that defines time in one of two domains: PlayRate or Time

Curve Editor: Added the ability to specify custom axes and child curves
- Custom Axes:
  * Custom axes can now be assigned to each curve within a view, and the axis defines the scaling for that curve.
  * This allows us to have multiple different 'spaces' on the same view that have vastly different scales (for instance, play rate, and tick resolution times)
- Child Curves:
  * Child curves are added whenever their parent is added. This allows us to show the derivative of a play rate curve on the curve editor.

Sequencer: Added Owning Object and key offsets to channel meta-data and curve models, made Sequencer key-editors polymorphic,
- New options on channel proxy entries allow us to specify that a channel's keys are relative to their section start time via a key offset
- New options in the curve editor models allow for a non-UMovieSceneSection owner object type

#jira UE-149871
#rb Ludovic.Chabant, David.Bromberg, Max.Chen

[CL 34813298 by andrew rodham in ue5-main branch]
2024-07-15 10:52:09 -04:00
max chen
06028e7e94 Curve Editor: Tweak Invert Selection so that it skips curves that don't have keys selected
#jira UE-209915
#rb mike.zyracki
#rnx

[CL 32283587 by max chen in ue5-main branch]
2024-03-15 16:23:29 -04:00
max chen
48026e707d Curve Editor: Tweak Invert Selection so it just removes all selection and then adds what's needed.
#jira UE-209915
#rb mike.zyracki
#rnx

[CL 32280799 by max chen in ue5-main branch]
2024-03-15 14:57:32 -04:00
max chen
086ea58abc Curve Editor: Change snap axis to a setting/preference
Tested that you can still override snapping by holding down Shift.
Tested that snapping settings are retained when closing and reopening Sequencer/Curve Editor.

#jira UE-203562
#rb Mike.Zyracki

[CL 32217525 by max chen in ue5-main branch]
2024-03-13 12:29:45 -04:00
max chen
abf821e47e Curve Editor: Invert selection (Ctrl-I)
Invert selection of keys for curves that have selected keys. (ie. don't select all keys if there are no keys selected for a curve)

#jira UE-205341
#rb Mike.Zyracki

[CL 32217374 by max chen in ue5-main branch]
2024-03-13 12:27:01 -04:00
mike zyracki
442d0cab3e Sequencer: Deprecrate FCurveModel::GetKeys function that requires FCurveEditor to get ready for new key filter
#rb Max.Chen

[CL 32149060 by mike zyracki in ue5-main branch]
2024-03-10 21:08:10 -04:00
steve robb
f8d47335a4 Replaced RemoveAt(N, 1, EAllowShrinking::*) with RemoveAt(N, EAllowShrinking::*).
[CL 31626444 by steve robb in ue5-main branch]
2024-02-19 16:51:58 -05:00
steve robb
6d5b974842 Fixed up a lot of bool-taking container resize functions to take EAllowShrinking instead.
[CL 30735396 by steve robb in ue5-main branch]
2024-01-19 19:41:56 -05:00
max chen
8a39036cfc Sequencer: Expose TimeBounds which is a subset of the PlaybackRange.
This is the actual playback range that can be restricted by Sequencer with the selection range or the shot range. This allows other systems, like the Curve Editor to be bounded by the same range.

#jira UE-199263
#rb andrew.rodham

[CL 29607487 by max chen in ue5-main branch]
2023-11-09 15:34:16 -05:00
max chen
4a5d01b0d3 Curve Editor: Paste should paste should just paste onto the selected curves (or if none selected, derive the curves to paste onto). It shouldn't paste onto the hovered curves
#jira UE-198368
#rb mike.zyracki

[CL 28992591 by max chen in ue5-main branch]
2023-10-20 20:25:00 -04:00
max chen
e954e78d25 Curve Editor: Change PixelsPerInput to double to fix jittery movement when manipulating keys
#rb mike.zyracki
#jira UE-184603

[CL 27886397 by max chen in ue5-main branch]
2023-09-14 13:46:11 -04:00
steve robb
51f3ea53ae Removed ChooseClass.h includes.
#rb trivial

[CL 27823723 by steve robb in ue5-main branch]
2023-09-13 05:43:01 -04:00
max chen
2b8a905306 Curve Editor: Apply postundo on postredo
Fixes stray curve data remaining on redo

#rb mike.zyracki
#preflight 646536fb6b1406b54a6a2fde

[CL 25519525 by max chen in ue5-main branch]
2023-05-17 20:09:42 -04:00
mike zyracki
cf58f87c06 Curve Editor: Add Option to show bars(constarint/spaces)
#jira UE-184767
#rb max.chen
#preflight 645576afd02ea5289f0b31dc

[CL 25373570 by mike zyracki in ue5-main branch]
2023-05-08 13:47:47 -04:00
mike zyracki
6f4ba583ee Sequencer: Curve Editor: Make normalized mode scrollable and panable. Also make sure that if you frame to the normalized mode now it doesn't use the max/min values but defaults.
#jira UE-171807
#preflight 64480ab7d07064cbaead6d7e
#rb max.chen

[CL 25204836 by mike zyracki in ue5-main branch]
2023-04-26 15:15:33 -04:00
mike zyracki
e6953937d9 Sequencer: Smart Auto Key
New algorithm is in MovieScenCurveChannelImpl where we calculate auto tangents. Since they work off tangents and not key positons, need to make sure to recalc them if the tangent changes now.  Since FRichCurve will not support these new auto tangents, they only do 2 key interps with the old auto key algorithm that doesn't average the tangents at all, had to add a SupportedTangentType to FCurveEditor so that we can use that with the curve editor context menu/commands/SCurveEditorPanel since they are all shared between Sequencer and the Curve Asset viewer. Most of the code is making sure we treat smart auto's the same as the old autos
#jira UE-171811
#rb max.chen
#preflight 6446d596dc71c13446fa361a

[CL 25175842 by mike zyracki in ue5-main branch]
2023-04-24 23:44:01 -04:00
mike zyracki
8d512fc280 Sequencer: Curve Editor: Keep Output bounds the same even if curves are destroyed so users can select/deselect and keep their curve bounds.
#jira UE-158396
#rb max.chen
#preflight 63dadf9ddd0298377620e8b4

[CL 24009676 by mike zyracki in ue5-main branch]
2023-02-04 00:31:06 -05:00
Patrick Boutot
6a2863234b Deprecate arrays from SColorPicker. Memstomp was fixed with 23672712. This CL removed the posibility of creating a new memstomp
#jira UE-173303
#rb daren.cheng
#preflight 63c6034bd040694ab82f3970

[CL 23736262 by Patrick Boutot in ue5-main branch]
2023-01-17 07:24:54 -05:00
Patrick Boutot
6e02de5817 Fix memstomp with color picker. Prepare SColorPicker for API change. Update AssetViewUtilis::PathColors to use FLinearColor instead of shared pointer. The shared pointer was only needed for the SColorPicker.
#jira UE-173303, UE-173454
#review-23672715 23617361,23611673
#rb daren.cheng
#preflight 63c0b12b1a06fc61059f2fa3

[CL 23672712 by Patrick Boutot in ue5-main branch]
2023-01-12 20:33:08 -05:00
max chen
4c4ab0161f Sequencer: Add commands to clear selection in Sequencer and Curve Editor (Esc)
#jira UE-165566
#preflight 6336345de72271755fe8a233
#rb andrew.rodham

[CL 22279896 by max chen in ue5-main branch]
2022-09-30 16:25:21 -04:00
matt hoffman
c91efc7f09 CurveEditor: Adjusted copy/paste logic for curves to better handle copying Control Rig controls between rigs. This now allows copying related controls between multiple rigs (ie: foot_fk_l, foot_fk_r, head_fk onto a matching set of controls on another object, but we also can support copying a single group (foot_fk_l onto foot_fk_r). Individual curves can still be copied to one or more target curves regardless of intent.
#jira UE-159670
#rb Max.Chen, Michael.Zyracki
#preflight 632b6925d51603c548ff5720

[CL 22141912 by matt hoffman in ue5-main branch]
2022-09-22 14:58:31 -04:00
max chen
006dcee5df Curve Editor: Curve color tweaks
- Set color for all selected curves in the tree and/or curves that have selected keyframes (ie. curve selection)
- Fix next random color - pastel green
- Broadcast when custom colors changed so that the curve models can update their colors

Note - if you delete a custom color from the preferences, it doesn't refresh the curve editor as you might expect because the color is no longer defined in the key area meta data. The only way to fix this is to recreate the curve models, but that seems like overkill for this (selection would change, framing would change, etc)

#jira UE-164162
#jira UE-164168
#jira UE-164165
#preflight 632657398c3def91aa032650
#rb mike.zyracki, matt.hoffman, ludovic.chabant

[CL 22088557 by max chen in ue5-main branch]
2022-09-20 00:45:12 -04:00
max chen
6a2b7d2ed4 Curve Editor: Autoframe on paste only when setting is enabled
#jira UE-164334
#rb mike.zyracki
#preflight 6328ac9e331ace46b5b40b93

[CL 22087373 by max chen in ue5-main branch]
2022-09-19 22:29:17 -04:00
bryan sefcik
b93a6cf7ed Pass 1 on editor include fixes:
Removed redundant private include paths from build.cs files.
Fixed include paths to be relative to the private or public folders.
Hid or removed includes that reached into other private module folders.
Updated PublicInclude paths when necessary.

#jira
#preflight 631e283bec5b0c765fc0ffdb

[CL 21960084 by bryan sefcik in ue5-main branch]
2022-09-11 18:33:06 -04:00