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]
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]
- 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]
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]
- 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]
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]
#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]
#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]