Commit Graph

21 Commits

Author SHA1 Message Date
benoit gadreau
f65e4f1dd3 Add undoable support for constraints
#jira UE-159833
#rb mike.zyracki
#preflight 62fe499d3752f9dd44246922

[CL 21455552 by benoit gadreau in ue5-main branch]
2022-08-19 07:23:25 -04:00
Mike Zyracki
bda9e41e3f Sequencer: Consraints: Add/Move/Delete constraint keys for transform tracks
Main change was to move code out of ConstraintChannelHelper to a new MovieSceneConstraintChannelHelper so that we can use the same functions for add/delete/move for both TransformableHandle types. It would have been better perhaps to keep this in control rig plugin, it would have made things much easier, but the Sequencer architecture limits us to only one track editor per track type so we had to move code into the transform track editor, which meant moving functionality to MovieSceneTools module. but do to this I had to add some modularity which means less code duplication. In particularly
Added an Interface IMovieSceneConstrainedSection, to handle accessing contraint channels. Also moved getting channels and setting transforms to the TransfomableHandles. Both of these changes will make moving more things like compensentation to runtime if needed later. Also added a snapper fix for sub sections
#jira UE-143510
#robomerge FNMain
#preflight 62f81e49b66d5d93134784f8
#rb Benoit.Gadreau

[CL 21407789 by Mike Zyracki in ue5-main branch]
2022-08-16 13:02:21 -04:00
benoit gadreau
c4996e6327 delegates implementation for active keys move/deletion and channel deletion so that child's transform keys are compensated
#jira none
#rb mike.zyracki
#preflight 62d90b98110da0f9449bb359

#robomerge FNMain

[CL 21199938 by benoit gadreau in ue5-main branch]
2022-07-21 09:22:18 -04:00
Bryan sefcik
b4a6e947d8 Ran IWYU on Public headers under Engine/Source/Runtime/...
Headers are updated to contain any missing #includes needed to compile and #includes are sorted.  Nothing is removed.

#ushell-cherrypick of 21065896 by bryan.sefcik
#preflight 62d4b1a5a6141b6adfb0c892
#jira

#ROBOMERGE-OWNER: Bryan.sefcik
#ROBOMERGE-AUTHOR: bryan.sefcik
#ROBOMERGE-SOURCE: CL 21150156 via CL 21151754 via CL 21154719
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v972-20964824)
#ROBOMERGE-CONFLICT from-shelf

[CL 21181076 by Bryan sefcik in ue5-main branch]
2022-07-20 11:31:36 -04:00
benoit gadreau
99ab461493 make sure that the constraint ticks before the child if the both parent and child tick functions are the same (e.i. two controls controling the same skeletal mesh)
#jira UE-159534, UE-153573
#rb mike.zyracki
#preflight 62d16522af68cd745b702b55


#robomerge FNMain

[CL 21143907 by benoit gadreau in ue5-main branch]
2022-07-18 04:52:10 -04:00
benoit gadreau
dd6b6cd563 removed useless dynamic offsets and added editable conditions for offset properties
#jira none
#rb mike.zyracki
#preflight 62ced9b7d00f3c208e4839b3

#robomerge FNMain

[CL 21107366 by benoit gadreau in ue5-main branch]
2022-07-15 04:58:43 -04:00
benoit gadreau
3600d14c67 - Label improvements to display constraint's type and parent in editor
- avoid creating handles for certain controls

#jira UE-157458
#rb mike.zyracki
#preflight 62c86155230ad2aa3095ccd0

[CL 21009972 by benoit gadreau in ue5-main branch]
2022-07-08 13:16:16 -04:00
Mike Zyracki
9771008042 Constraints: Refactor constraint channels out of MovieScene and ControlRig and into Constraint. Note still need to create a ConstraintEditor plugin to move the ConstraintChannelEditor code out of MovieSceneTools but wanted to get this in asap.
#jira na
#rb Benoit.Gadreau
#preflight 62c5150d2f2d046918d6794f

[CL 20969379 by Mike Zyracki in ue5-main branch]
2022-07-06 13:49:40 -04:00
benoit gadreau
b4d9995de7 Constraints in Sequencer:
- dynamic behavior or parent constraints so that child transform in constraint space can be dynamically changed over time.
- transform compensation when changing child transforms
- Aim constraint: dynamic look-at axis and input roll

to be discussed: this has to be done for scene components as well once the constraint channel available thru sequencer

#jira na
#rb mike.zyracki
#preflight 62c459ceb47aed4cf1a2a889

[CL 20944281 by benoit gadreau in ue5-main branch]
2022-07-05 12:44:47 -04:00
Mike Zyracki
b68b21f08f CIS Fix, remove unused virtual functions.
#rb na
#preflight na
#trivial
#jira UE-157962

[CL 20877153 by Mike Zyracki in ue5-main branch]
2022-06-29 12:38:52 -04:00
Mike Zyracki
6050797bba Constraints: Add PIE, serialization, and BP/Python support.
For PIE got rid of just using the level editor world, and removed it as a UPROPERTY. We now get it dynamically.
For constrol rig serialization just needed to make the pointer that's held a soft object ptr. It will resolve automagically when the level sequence is loaded. Not sure if we should store a soft object ptr to that also so we can tell the user which level sequence(s) they need to load.
For BP/Python added a library to handle the  add/create/get functions. and then exposed BP to the handles and the tickable constraints.  Also added function for the Control Rig to dynamically create the handle so we can script it.

#jira na
#rb benoit.gadreau
#preflight 62bb4fa630036d0db92ece26

[CL 20863534 by Mike Zyracki in ue5-main branch]
2022-06-28 15:58:02 -04:00
benoit gadreau
2aee9e6f8f Constraints in Sequencer:
- handled notifications for child/parent deletion, control rig replaced, control element renamed, etc.
- added FMovieSceneConstraintChannel to manage the constraint's active state animation + drawing overrides
- added dynamic mode for parent constraints when animating constraints to treat control animation as constraint's space local animation. This is experimetal and will have to be done for other types once stable.

#jira UE-140598
#rb mike.zyracki
#preflight 62a8fe8ac1708af1ec25179b

[CL 20666935 by benoit gadreau in ue5-main branch]
2022-06-15 05:00:13 -04:00
benoit gadreau
0465f116f8 Constraints in Sequencer : Improved constraints baking and properties changes
#jira none
#rb none
#preflight 6295df42d57da28cc8ef4f14

[CL 20435145 by benoit gadreau in ue5-main branch]
2022-05-31 06:23:44 -04:00
benoit gadreau
089d1d8ab0 Constraints in Sequencer:
Exposed basic constraints properties (via the contextual menu)
Added a basic baking process (via the contextual menu) factorizing code with the snapper when possible.

todo:
    - factorize the controls' snapping process to use the BakingHelper interface
    - create a better UI for the baker to stick to the design (currently via a contextual menu) and handle both frame range and constraint's active state animation

#jira UE-140598
#rb mike.zyracki
#preflight 628dec29415c65b96ad88d29

[CL 20361614 by benoit gadreau in ue5-main branch]
2022-05-25 05:04:16 -04:00
benoit gadreau
b8f0f3c237 fixed missing include (NoPCH compilation error)
#jira none
#rb trivial
#preflight 6283d23b496ba7f1b277e4cc

[CL 20246186 by benoit gadreau in ue5-main branch]
2022-05-17 13:15:43 -04:00
benoit gadreau
a321b705dc fix NoPCH compilation
#jira UE-152676 UE-152677
#rb trivial
#preflight 6283b7284316db80d18edcd5

[CL 20243676 by benoit gadreau in ue5-main branch]
2022-05-17 11:16:46 -04:00
benoit gadreau
1838c15a3b fix NoPCH compilation (missing header)
#jira UE-152666
#rb halfdan.ingvarsson
#preflight 6283a418ba3597a0308fba92

[CL 20242089 by benoit gadreau in ue5-main branch]
2022-05-17 09:59:21 -04:00
benoit gadreau
77439b7338 Constraints in Sequencer experiments
#jira UE-140598
#rb mike.zyracki
#fyi chase.cooper
#preflight 62820966fa65e101e5ca23b9

This is a first prototype of a constraints manager system.

note: have a look at the jira description for the features leading this work

The current design is based on the idea of having a unique constraint manager that stores several constraints (UTickableConstraint).
Each constraint holds a tick function (FConstraintTickFunction) that can register one or several functions (represented by a basic TFunction) that are evaluated when calling
the FConstraintTickFunction::ExecuteTick function. This FConstraintTickFunction can basically represent anything.

[CL 20221291 by benoit gadreau in ue5-main branch]
2022-05-16 04:56:23 -04:00
cesar castro
18c7c9dba5 Added angular information to trajectory samples
#rb aaron.cox braeden.shosa koray.hagen
#preflight 6192f6634c209c1865c8594a
#preflight 6192f6634c209c1865c8594a

[CL 18201094 by cesar castro in ue5-main branch]
2021-11-15 20:13:45 -05:00
koray hagen
92c6cef01d Motion Trajectory Component debugging functionality. Includes minor Horde compiler suite fixes.
#rb none
#trivial

[CL 17553625 by koray hagen in ue5-main branch]
2021-09-17 12:25:13 -04:00
koray hagen
972c9dcdb9 #preflight 6143ef4681695600011c49a8
#rb braeden.shosa, aaron.cox, cesar.castro
#jira none

Motion Trajectory Component for Motion Matching:

Motion Trajectory Component notes:
1) Abstract component/interface implemented with prediction and history API.
2) Implemented uniform, frame-rate independent history sampling algorithm for retaining trajectory sample coherence.
3) Implemented concrete Character Movement Trajectory Component for encapsulating ground locomotion prediction algorithm and API.
4) Motion Trajectory blueprint library containing:
5) FlattenTrajectory2D algorithm for isolating and removing Z axis direction contribution from tracjectory.
6) ClampTrajectoryDirection for projecting trajectory samples into a discrete, allowed set of directions (such as cardinal).

Engine changes:
1) Implemented shared TrajectorySample, Range, and Domain structures for common usage among Motion Trajectory, Pose Search, and Blueprint.
2) Expanded Sequence Player blueprint library functionality for Scripted Motion Matching content example.

Pose Search changes:
1) Match Pose renamed to Pose History with minor configuration parameters.
2) Complete removal of approximated past trajectory sampling. This has now been pushed to the Motion Trajectory Component.
3) Motion Matching interface changes: Goal has been replaced with Trajectory and Dynamic Play Rate Adjustment has been encapsulated to an experimental code module and blueprint library. New defaults, and encapsulating settings.
4) Motion Matching changes: New Pose Search blueprint library which encapsulates core Motion Matching algorithm.
5) Unified Trajectory to Pose Feature Vector transformation algorithms.
6) Removal of temporary Pose Search Prediction blueprint library (now Dynamic Play Rate).
7) End-to-end implementation support for Past/Future Time and Distance domain schemas.

AnimInput changes:
1) Removal of AnimInput_CapsulePrediction (replaced with Motion Trajectory Component).

Gameplay Anim Gym changes:
1) Pose search database is now fully distance-based (history and future).
2) Character blueprint includes Character Movement Trajectory Component with distance-based domain setup.
3) Scripted Motion Matching anim node function prototype with Engine content example.
#preflight 6143ef4681695600011c49a8

[CL 17547347 by koray hagen in ue5-main branch]
2021-09-16 22:34:04 -04:00