Commit Graph

267 Commits

Author SHA1 Message Date
andrew rodham
e176cf13a9 Curve Editor: Fixed curve editor filtering for filter terms separated by periods (.)
- Introduced a new match result utility that keeps track of remaining matched tokens.
  - Filter terms that include periods (.) are now also eligible to be matched non-recursively using a literal match (ie, an entry with the literal label Location.X will be matched by Location.X, but LocationABC.X will not match)
  - Previously, sequencer curve editor filter terms were not being matched recursively. This has been corrected using the new match result utility.

#rb david.bromberg

[CL 36448236 by andrew rodham in 5.5 branch]
2024-09-19 15:45:11 -04:00
benoit gadreau
41162392a6 Animation mode & Sequencer: added the ability to filter widget types to avoid stealing focus from
#jira UE-223373
#rb Mike.Zyracki
#rnx

#ushell-cherrypick of 36233912 by benoit.gadreau

[CL 36259509 by benoit gadreau in 5.5 branch]
2024-09-13 05:53:44 -04:00
Ryan Hummer
4af2fd066d Updating Dev-Release-5.5 from Main at CL #36144969
#okforversepublic

[CL 36146571 by Ryan Hummer in Dev-5.5 branch]
2024-09-10 10:26:02 -04:00
max chen
266a95a070 Curve Editor: Key details fix
Follow up fix to 35727872. It turns out the ugly hack is still necessary in some cases

#jira UE-223371
#rb matt.hoffman

[CL 36022768 by max chen in ue5-main branch]
2024-09-04 16:30:32 -04:00
max chen
c7241e2ecd Curve Editor: Remove hack of looking for the first two properties to looking for them by name, Time and Value
This is slightly more robust because we want to expose other properties on the key struct, like interp and tangent modes.

#rb Matt.Hoffman

[CL 35727878 by max chen in ue5-main branch]
2024-08-21 19:46:46 -04:00
max chen
5a4f13752f Curve Editor: Check for valid key handle before removing
#rb Mike.Zyracki
#jira UE-171677

[CL 35717091 by max chen in ue5-main branch]
2024-08-21 15:55:11 -04:00
mike zyracki
7dacb7bca6 Sequencer: Fix so User/Broken tangents get set to curve slope automatically wherever added in Curve Editor or Sequencer. Need to make sure we only do this when within the keys, if a key is added outside it stays flat.
#jira UE-221531
#rb Andrew.Rodham

[CL 35600316 by mike zyracki in ue5-main branch]
2024-08-16 13:51:26 -04:00
benoit gadreau
d71750a8da Animation mode & Sequencer: focus improvements
Set the focus on the viewport, sequencer or the curve editor if the mouse hovers the widget AND a key is pressed when the mouse is over the widget.
    This is disabled by default but can be enabled using 'AnimMode.PendingFocusMode true' to enable it in animation mode only

+ improved fps when playing animations in animation mode (mainly due to synthesized mouse moves)

TODO: add a user preference instead of the cvar if the feedback is positive
NOTE: this could probably be something provided as a core slate functionality but we'd like this to be tested at the animation level first.


#jira UE-220620
#rb mike.zyracki

[CL 35311116 by benoit gadreau in ue5-main branch]
2024-08-05 13:08:14 -04:00
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
2b01fe21fc Curve Editor: Correct reversed parameters that were causing dragging in the curve editor to feel sketchy
#rb Mike.Zyracki

[CL 35196745 by andrew rodham in ue5-main branch]
2024-07-30 16:21:32 -04:00
max chen
f99b9f38b2 Curve Editor: When toggling selection, respect bPreferPointSelection which prioritizes toggling point selection over tangent selection if there are any points selected. The same thing logic occurs currently for just regular selection (not toggling with control). This fixes an issue where toggling point selection will inadvertently also change tangent selection.
#jira UE-217977
#rb Mike.Zyracki

[CL 35109895 by max chen in ue5-main branch]
2024-07-26 11:22:44 -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
mike zyracki
7d4bd51493 Sequencer: Curve Editor: New Gaussian filter. Added BP/Python functions to set/get curve display in the curve editor, curve filters are now blueprintable, and you can apply the filter.
#jira UE-210906
#jira UE-210974
#jira UE-141257
[FYI] greg.richardson
#rb Max.Chen

[CL 32740460 by mike zyracki in ue5-main branch]
2024-04-04 16:08:13 -04:00
andrew rodham
1cbdc562ae Cureve Editor: Prevent setting of invalid output bounds
[CL 32472334 by andrew rodham in ue5-main branch]
2024-03-25 12:08:16 -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
9efb58c223 Curve Editor Filter: Static Analysis fix
#rb mike.zyracki

[CL 32173117 by mike zyracki in ue5-main branch]
2024-03-12 00:59:34 -04:00
mike zyracki
9e37895b83 Sequencer: Control Rig: New Smart Baking algorithm added as a curve filter, make new filter default for reducing control rig keys when baking, add bp/python support. Note we still support the old baking via UMovieScene::Optimize, etc.. in the code, may want to revisit changing that algorithm over once the new one is battle tested.
#rb max.chen

[CL 32158670 by mike zyracki in ue5-main branch]
2024-03-11 13:17:59 -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
jaime cifuentes
bebcda7e05 Curve editor sets new key attributes based on neighbour keys (previous or next key to the curve time)
#rb Mike.Zyracki
#jira UE-203765

[CL 30925445 by jaime cifuentes in ue5-main branch]
2024-01-26 10:58:13 -05:00
max chen
216206e825 Curve Editor: Rework 26837914 to refresh the container on tick rather than in the getters
#jira UE-202041
#rb Mike.Zyracki, Patrick.Boutot

[CL 30892706 by max chen in ue5-main branch]
2024-01-25 13:15:22 -05:00
yohann dossantos
1073efb1c4 Fix retainer widget rendering and input issues.
We previously had 2 render paths, with each one having some issues.
With the attribute RenderWithLocalTransform set to to true, scale and absolute position were wrong in the geometry, resulting in texts scaled incorrectly and GetAccumulatedLayoutTransform returning incorrect (shifted) values.
With the attribute RenderWithLocalTransform set to to false, render transform like rotation/shear were applyed twice

There is now a single render path with the best of both world. The render path is similar to the one with RenderWithLocalTransform set to true, but it keep the scale and position info in the FGeometry that were lost in the process of getting rid of additional render transform previously.

#jira UE-114934, UE-107863, UE-112225, UE-203471

#tests Added auto test validating different use case of the retainer, based on the different jira related to this issue. Tested retainer usage from the curve editor where keyframe drag selection was working only with RenderWithLocalTransform deactivated, and other input issue test case from UDN.


#rb Patrick.Boutot

#virtualized

[CL 30886114 by yohann dossantos in ue5-main branch]
2024-01-25 10:08:41 -05:00