Commit Graph

323 Commits

Author SHA1 Message Date
danny chapman
e54fad360e Analysis for BlendSpace. Also includes:
Tweaks to the rendering of blendspaces, including separating the graph from the buttons
Context menu changes for the sample details
Changes to AnimationBlueprintLibrary and AnimPose from Jurre to help get the poses during analysis

#jira UE-114512
#rb thomas.sarkanen

[CL 16356830 by danny chapman in ue5-main branch]
2021-05-17 15:03:56 -04:00
koray hagen
c1b4f07a7a Fix for blendsplace player root motion evaluation. This underwent changes during experiements with custom attribute root motion sampling and slipped under the rug.
#jira UE-115461
#rb aaron.cox, thomas.sarkanen

[CL 16355372 by koray hagen in ue5-main branch]
2021-05-17 13:38:32 -04:00
aurel cordonnier
8eebe8841f Merge UE5/RET @ 16305968 to UE5/Main
This represents UE4/Main @ 16261013 and Dev-PerfTest @ 16259937

[CL 16306996 by aurel cordonnier in ue5-main branch]
2021-05-12 18:10:03 -04:00
Thomas Sarkanen
7578b8bd88 Added static_assert to verify that anim node data types are being correctly accessed
#jira UE-114768 - Syncing locomotion using sync markers seems to be broken
#rb Jurre.deBaare

[CL 16246870 by Thomas Sarkanen in ue5-main branch]
2021-05-10 05:23:27 -04:00
timothy daoust
af4f2b5309 Added support for mirroring animation attributes
#rb thomas.sarkanen, jurre.debaare
#jira UE-111796
#preflight 6093d2ea4420920001a75b0e

[CL 16219706 by timothy daoust in ue5-main branch]
2021-05-06 08:43:56 -04:00
Andrew Davidson
3ddc3a4da3 Merge up from //UE5/Dev-LargeWorldCoordinates
#rb none

[CL 16211417 by Andrew Davidson in ue5-main branch]
2021-05-05 15:07:25 -04:00
koray hagen
26af906499 Graph-driven pose warping, with root motion delta flow:
1) Root motion delta flow supported through all anim nodes deriving from FAnimNode_AssetPlayerBase and montages.
2) Stride/Orientation warping feature graph-driven evaluation modes which leverage root motion delta flow (graph-driven slope warping currently disabled).
3) Root motion flow connected to the Animation Warping plugin.
4) Pose Warping test map featuring various motion "styles" connected to pose warping (Motion Matching, Blend Space Graphs/Assets, Sequence Players, Evaluators).

#preflight 6092380a58c4790001a3e9b6
#rb aaron.cox, braeden.shosa, thomas.sarkanen
#jira none
#fyi laurent.delayen

[CL 16208667 by koray hagen in ue5-main branch]
2021-05-05 12:18:35 -04:00
aurel cordonnier
50944fd712 Merge UE5/RES @ 16162155 to UE5/Main
This represents UE4/Main @ 16130047 and Dev-PerfTest @ 16126156

[CL 16163576 by aurel cordonnier in ue5-main branch]
2021-04-29 19:32:06 -04:00
Thomas Sarkanen
3f6391e553 Backing out CL 16112742
#jira UE-114336
#jira FROST-2388
#fyi Helge.Mathee

[CL 16122604 by Thomas Sarkanen in ue5-main branch]
2021-04-27 05:25:49 -04:00
Thomas Sarkanen
8d90aee030 Revert optimization for layered bone per blend
This can cause crashes in certain graph configurations (e.g. when within a state machine, Initialize can be called without a CacheBones call directly afterwards)

#rb Jurre.deBaare

[CL 16112742 by Thomas Sarkanen in ue5-main branch]
2021-04-26 06:34:27 -04:00
Thomas Sarkanen
27a6f84b12 Fix crash in cooked games with standalone asset players
Also fix blendspace sync groups not working correctly

#rb Timothy.Daoust
#jira FROST-2365

[CL 16105948 by Thomas Sarkanen in ue5-main branch]
2021-04-23 15:31:02 -04:00
timothy daoust
f4c11a45c9 Added system to attach additional data to animation notifies
- Added animation notify mirroring functionality
- Extended IGraphMessage to allow users to create context data that is attached to notifies
- Notify, NotifyBegin, NotifyTick, and NotifyEnd methods have been extedned to take an FAnimNotifyEventReference that can provide generic data
- StateMachines can optionally attach active state information to notifies
- Added function libraries to query if a notify was triggered by a particular state or state machine
- Added support for detecting if a notify was generated by a mirrored animation

#github https://github.com/EpicGames/UnrealEngine/pull/7204 Fredrik Lindh

#rb thomas.sarkanen, aaron.cox
#jira UE-111797

[CL 16099692 by timothy daoust in ue5-main branch]
2021-04-22 18:24:26 -04:00
Thomas Sarkanen
16eee0289d Anim node data/compiler refactor
Per-node constant data is now held on a generated struct as part of sparse class data.
Per-node mutable data (i.e. pin links/property access mappings) is now held on a generated 'mutable data' struct that is compiled as part of the generated class.

The anim BP compiler is now extended more conventionally using UAnimBlueprintExtension, derived from UBlueprintExtension. This directly replaces the older 'compiler handler' pattern that was added in an emergency fashion for 4.26. Anim graph nodes now request their required extensions and these are held on the UAnimBlueprint in the UBlueprint::Extensions array. The Extensions array is potentially refreshed with any node addition or removal. The Extensions array is force-refreshed each time an anim BP is compiled for the first time to deal with newly added or removed requirements.

Const-corrected a bunch of UAnimInstance/FAnimInstanceProxy APIs that rely on (now truly) const data.
Added a split state/constant version of FInputScaleBiasClamp to allow some of its data to be split into constants.
Tweaked alignment/ordering of FPoseLinkBase to save a few bytes per pose link.
Deprecated FAnimNode_Base::OverrideAsset in favor of a more UAnimGraphNode_Base-based approach. Individual nodes can still have runtime overrides via specific accessors. The new approach will also give us the oppurtunity to override multiple assets per node if required in the future.

Moved property access into Engine module & removed event support from it - this was never used.
Reworked property access compilation API a little - construction/lifetime was a bit confusing previously.

Optimized path used to create UK2Node_StructMemberSet nodes in per-node custom events. When using mutable data, the structure used is large and very sparsely connected (i.e. only a few properties are written) so we only create pins that are actually going to be used, rather than creating all of them and conly connecting a few.

Patched the following nodes to use the new data approach:

- Asset players (sequences, blendspaces, aim offsets)
- Blend lists
- Ref poses
- Roots

#rb Jurre.deBaare, Martin.Wilson, Keith.Yerex

[CL 16090510 by Thomas Sarkanen in ue5-main branch]
2021-04-22 04:57:09 -04:00
Thomas Sarkanen
5364bab827 Backing out CL 16071104
[CL 16071592 by Thomas Sarkanen in ue5-main branch]
2021-04-21 08:01:44 -04:00
Thomas Sarkanen
0ddbfb9894 Anim node data/compiler refactor
Per-node constant data is now held on a generated struct as part of sparse class data.
Per-node mutable data (i.e. pin links/property access mappings) is now held on a generated 'mutable data' struct that is compiled as part of the generated class.

The anim BP compiler is now extended more conventionally using UAnimBlueprintExtension, derived from UBlueprintExtension. This directly replaces the older 'compiler handler' pattern that was added in an emergency fashion for 4.26. Anim graph nodes now request their required extensions and these are held on the UAnimBlueprint in the UBlueprint::Extensions array. The Extensions array is potentially refreshed with any node addition or removal. The Extensions array is force-refreshed each time an anim BP is compiled for the first time to deal with newly added or removed requirements.

Const-corrected a bunch of UAnimInstance/FAnimInstanceProxy APIs that rely on (now truly) const data.
Added a split state/constant version of FInputScaleBiasClamp to allow some of its data to be split into constants.
Tweaked alignment/ordering of FPoseLinkBase to save a few bytes per pose link.
Deprecated FAnimNode_Base::OverrideAsset in favor of a more UAnimGraphNode_Base-based approach. Individual nodes can still have runtime overrides via specific accessors. The new approach will also give us the oppurtunity to override multiple assets per node if required in the future.

Moved property access into Engine module & removed event support from it - this was never used.
Includes a thread-safety fix for 4.26 that hasnt made it over to 5.0 yet.
Reworked property access compilation API a little - construction/lifetime was a bit confusing previously.

Optimized path used to create UK2Node_StructMemberSet nodes in per-node custom events. When using mutable data, the structure used is large and very sparsely connected (i.e. only a few properties are written) so we only create pins that are actually going to be used, rather than creating all of them and conly connecting a few.

Patched the following nodes to use the new data approach:

- Asset players (sequences, blendspaces, aim offsets)
- Blend lists
- Ref poses
- Roots

#rb Jurre.deBaare, Martin.Wilson, Keith.Yerex

[CL 16071104 by Thomas Sarkanen in ue5-main branch]
2021-04-21 07:09:28 -04:00
jose villarroel
190fc906d7 Fix for bStartFromMatchingPose only working when used within state machines re-init.
#review-16010512 @Braeden.Shosa
#jira none
#rnx
#preflight 607876646bcfea0001fe8fa7
#preflight 6078824d0a7408000122ed48

[CL 16024631 by jose villarroel in ue5-main branch]
2021-04-15 14:54:07 -04:00
Jurre deBaare
d498271275 UStruct property default initializations
//UE5/Main - UE.EditorAutomation(RunTest=Editor) Win64 - Uninitialized script struct members found AnimGraphAttributes.h and other anim files
#jira UE-110793

//UE5/Main - UE.EditorAutomation(RunTest=Editor) Win64 - Uninitialized script struct members found DataSourceFiltering.h
#jira UE-110804

Fix BlendSpace errors in ShooterGame
#jira UE-111352

#rb Thomas.Sarkanen

[CL 15758350 by Jurre deBaare in ue5-main branch]
2021-03-22 07:53:36 -04:00
timothy daoust
a4e3872935 Added support for mirroring sync markers
#rb thomas.sarkanen

[CL 15741120 by timothy daoust in ue5-main branch]
2021-03-18 16:18:00 -04:00
Marc Audy
0cbbc781ca Merge UE5/Release-Engine-Staging @ 15740152 to UE5/Main
This represents UE4/Main @ 15709114

[CL 15740605 by Marc Audy in ue5-main branch]
2021-03-18 15:20:03 -04:00
timothy daoust
94ceb4381f Added support for mirroring curves to AnimNode_Mirror
#jira UE-110057
#rb thomas.sarkanen

[CL 15637661 by timothy daoust in ue5-main branch]
2021-03-08 07:36:28 -04:00
Marc Audy
8f73cd7fa9 Merge UE5/Release-Engine-Staging @ 15630841 to UE5/Main
This represents UE4/Main @ 15601601

[CL 15631170 by Marc Audy in ue5-main branch]
2021-03-05 19:27:14 -04:00
danny chapman
08c9a4bbc2 Use triangulation at runtime in BlendSpace. This is coupled with changes to the BlendSpace UI.
#jira UE-108158
#rb thomas.sarkanen

[CL 15626759 by danny chapman in ue5-main branch]
2021-03-05 13:37:08 -04:00
timothy daoust
1d2811e0c0 New Animation Mirroring System:
+ UMirrorDataTable stores the bones / notifies / curves to mirror
	* Generates table based on FMirrorFindReplaceExpression in project settings
	* Can be used in any Animation Blueprint with a compatible skeleton
	* Support for self mirroring
	* Shared mirror axis
+ Project Settings for Mirroring Find & Replace Strings
+ FMirrorFindReplaceExpression
	* Find the mirrored name based on a prefix, suffix, or regular expression match
+ FAnimNode_Mirror
	* Inertialization support for blending between mirroring / unmirrored states over a configurable duration
	* Support for different MirrorDataTables (to support partial / full body mirroring)
+ Deprecated old mirroring system (FBoneMirrorExport) in SkeletalMesh

#rb Thomas.Sarkanen

[CL 15580895 by timothy daoust in ue5-main branch]
2021-03-03 08:23:59 -04:00
Jurre deBaare
2c933f4825 New Animation Attributes system, replacing Custom Attributes:
+ Attribute structures to UAnimDataModel
    * These are sampled/copied into AnimSequence whenever they change
+ Attribute related Notifies and Payloads
+ Controller API and Actions for Attribute related behaviour
+ Type traits (TAttributeTypeTraitsBase) to determine support functionality for user-defined attribute types
+ TAttributeContainer equivalent to TCustomAttributes, used for keeping track of attributes at runtime in a TMap similar fashion
    * Has two exported specializations FStack/Heap-AttributeContainer
+ IAttributeBlendOperator interface used for Attribute related operations in Anim graph
    * Allows for user-defined blending behaviour for their associated types
+ TAttributeBlendOperator providing out-of-the-box blending behaviour for user-defined types
+ FAttributeBlendData helper structure, this encapsulates and abstracts the blend / attribute operations
    * Exposes two iterators, allowing BlendOperator to loop through (type) overlapping Attributes and unique attributes
+ Float/Integer/String Animation Attribute structures used to support legacy TVariant CustomAttribute data types
+ Transform animation attribute structure to add support for single-FTransform based attributes
+ FAnimationAttributeIdentifier identifier used to reference an attribute in a script-friendly manor
+ AttributeTypes static API for registering Attribute types
+ FAttributeCurve providing a curve-type with an Attribute type as its underlying key-value
+ TWrappedAttribute helper structure to wrap end template operate on raw memory (TArray buffer)
+ Added tests for
    * Attribute related controller functionality and actions
    * Attribute curve key reduction
    * Evaluating attributes from AnimSequence
    * Attribute operations (blend, accumulate etc)
    * Functional testing for blendspace attribute evaluation and blending

* Changed default attribute blend type to Blend vs Override
* Updated FBX import/export paths to handle and use new Attribute data structures
* Attribute data is now incorporated into animation source data DDC key
* Deprecated Custom Attributes stored on AnimSequence get converted into their equivalent Attribute structures
* Deprecated all previous CustomAttribute structures, APIs and files
* Corrected some comments in UAnimDataController.h
* Updated existing custom attribute tests to adhere to new blend expectations/behaviour
* Updated AnimSequence resize tests to also incorporate an attribute curve
* Changed layered bone blend to use .5 blend weight vs 1.0 to cover more behaviour
* Added transform attribute used to compare against bone transform during pre-existing functional testing (blended only)

- Deleted CustomAttributes details customization

#rb Thomas.Sarkanen
#fyi kiaran.ritchie, koray.hagen, timothy.daoust

[CL 15568420 by Jurre deBaare in ue5-main branch]
2021-03-02 09:04:09 -04:00
john vanderburg
398515a9d3 Initial support for skeletal remapping, which allows you to play animation assets from one skeleton onto the other.
[CL 15464346 by john vanderburg in ue5-main branch]
2021-02-18 18:42:00 -04:00