Commit Graph

304 Commits

Author SHA1 Message Date
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
Thomas Sarkanen
7a0ded1334 Move CalculateDirection to KismetAnimationLibrary
Function should be available in more than just anim instances, expecially now we want to prefer using property access

#jira none
#rb Jurre.deBaare

[CL 15432851 by Thomas Sarkanen in ue5-main branch]
2021-02-17 07:22:39 -04:00
danny chapman
9a6d7ca014 Reworks BlendSpace to make UBlendSpace the main runtime class, which is able to handle 1 and 2 dimensions.
#jira UE-108155
#rb thomas.sarkanen

[CL 15406467 by danny chapman in ue5-main branch]
2021-02-15 10:12:58 -04:00
Thomas Sarkanen
be2eb599e2 Allow blend list nodes to use property access
Because values are always pins, they dont expose the UI for bindings

#jira none
#rb Jurre.deBaare

[CL 15375880 by Thomas Sarkanen in ue5-main branch]
2021-02-10 10:07:42 -04:00
Marc Audy
cac1fe0019 Merge UE5/Release-Engine-Staging @ CL# 15299266 to UE5/Main
This represents UE4/Main @ CL# 15277572

[CL 15299962 by Marc Audy in ue5-main branch]
2021-02-03 14:57:28 -04:00
danny chapman
429016078e Show the current as well as target preview position in BlendSpaces
#jira UE-107436

[CL 15271911 by danny chapman in ue5-main branch]
2021-02-01 13:01:45 -04:00
Zousar Shaker
3b4c8fc1c5 Automated wrapped object pointer upgrade for Engine + ShooterGame + ShooterGame referenced plugins
#rb none

[CL 15224650 by Zousar Shaker in ue5-main branch]
2021-01-27 17:40:25 -04:00
Thomas Sarkanen
5419497f90 BlendSpace 2.0: Blendspace Graph Node
Added a new animation graph node that hosts its own UBlendSpaceBase. Modified UBlendSpaceBase to allow for pose links to be evaluated as the sample points.
The new blend space graphs can be spawned from existing UBlendSpace and UBlendSpace1D assets, or they can be created from scratch, or they can be converted from existing blendspace player nodes via the context menu.

Fixed anim node conversion functions so that their transactions work correctly.

Updated FBlueprintEditorUtils::IsGraphNameUnique to allow it to work with any object as the outer, not just UBlueprint. UBlueprint still has a special case for functions and events. This is to support GenerateUniqueGraphName within a scope (e.g. an outer graph).

Formalized the concept of 'node sub-graphs' (as well as the composite node pattern a little). Previously a number of known node types that contained sub-graphs (e.g. UK2Node_Composite) had special case logic for dealing with node/graph deletion etc. Now  any node can opt into this behaviour via the GetSubGraphs() override.

Added status bar readouts for the blendspace grid, so we dont have to stuff the prompts into the tooltip any more.

Moved anim BP related APIs out of FBlueprintEditor. They are always used via FAnimationBlueprintEditor.

Refactored graph title bar widget creation out into a function to allow other document tab factories to create it.

Altered breadcrumb trail click callbacks and SMyBlueprint::ExecuteAction to always JumpToHyperLink rather than calling OpenDocument directly. This allows unknown (to FBlueprintEditor) document types that reference objects to be correctly jumped to using the breadcrumb trail. Derived asset editors (i.e. FAnimationBlueprintEditor) can intercept the JumpToHyperlink call to ensure that the correct document is presented (i.e. the correct tab payload is generated).

Instead of making yet another bunch of duplicated code for handling the various alpha blend options, refactored this into FAnimGraphNodeAlphaOptions (for editor code) and FAnimNodeAlphaOptions (for runtime code).

Added OnCopyTermDefaultsToDefaultObject for per-node copying of default values from editor node to runtime node, rather than another special-case in the compiler.

#rb Jurre.deBaare,Phillip.Kavan

[CL 15177316 by Thomas Sarkanen in ue5-main branch]
2021-01-25 08:43:19 -04:00
Marc Audy
bc88b73a29 Merge Release-Engine-Staging to Main @ CL# 15151250
Represents UE4/Main @ 15133763

[CL 15158774 by Marc Audy in ue5-main branch]
2021-01-21 16:22:06 -04:00
Thomas Sarkanen
69c02df8ec Fixed root motion weight modifier being incorrectly initialized
#jira UE-105413
#rb Jurre.deBaare,Aaron.Cox

[CL 15134804 by Thomas Sarkanen in ue5-main branch]
2021-01-19 06:20:49 -04:00
Thomas Sarkanen
b85a3cea8c Animation sync node and anim graph attributes
Refactored tick record sync into utility structure - FAnimSync. This improves the odd API around tick records, better encapsulating functionality and leaving less for the caller to get wrong. This will also eventually allow this to be refactored out into a scriptable pipeline stage.
Added sync node and scoped sync message for new 'graph based sync'. Nodes that subscribe to graph-based-sync determine their sync group based on the scope that they are in.
Removed 4.26-style sync scopes - pushed all syncing up to the main anim instance. Linked anim instances no longer sync their own tick records.
To make graph based sync more useful, surfaced graph attributes and their visualizations as labels on pins and parallel wires to visualize flow.
This involves statically determining the attribute flow of the graph at compile time. Added a new compiler handler to deal with this new debug data.
Updated a lot of nodes to specify their attributes so graph flow can be correctly visualized.
Added tracing of attributes and sync records and visualization of traced records when debugging the anim graph.

#rb Jurre.deBaare, Martin.Wilson

[CL 14998555 by Thomas Sarkanen in ue5-main branch]
2021-01-06 09:11:59 -04:00
Marc Audy
ada7c144fa Merge //UE5/Release-Engine-Staging @14903491 to //UE5/Main
[CL 14906022 by Marc Audy in ue5-main branch]
2020-12-11 14:21:20 -04:00
jose villarroel
0fd19a7091 Adding support for inertial blending in montages
#review-14875570 @Aaron.Cox, @Fernando.Coello
#jira none

[CL 14879240 by jose villarroel in ue5-main branch]
2020-12-08 11:55:28 -04:00
jose villarroel
979102319f Fix for warning on FAnimNode_LayeredBoneBlend
#jira UE-103899
#rnx

[CL 14836360 by jose villarroel in ue5-main branch]
2020-12-02 13:12:25 -04:00
john vanderburg
e6bf65cb19 Add support for blend profiles inside anim montages and blend nodes.
Improved blend profile support adding a time based method.

#jira UE-100992
#review @Aaron.Cox, @Jose.Villarroel, @Thomas.Sarkanen

[CL 14831887 by john vanderburg in ue5-main branch]
2020-12-01 18:43:52 -04:00
Alexis Matte
73d83c6a38 To protect the skeletalmesh when using async operations like build or re-import we deprecate all public member variables of USkeletalMesh class and create the necessary getter and setter. Those member will stay public but will be move to private in a future release.
Adding a public member to USkeletalMesh class is now prohibed since it can break asynchronous operations that will be added next to this submit.

#rb danny.couture
#jira UEENT-3936
#rnx

[CL 14812920 by Alexis Matte in ue5-main branch]
2020-11-25 11:17:08 -04:00
Marc Audy
a7f9391231 Merge UE5/Release-Engine-Staging @ 14811410 to UE5/Main
This represents UE4/Main @ 14768117

For ReleaseObjectVersion.h
#lockdown Marcus.Wassmer

[CL 14811440 by Marc Audy in ue5-main branch]
2020-11-24 18:42:39 -04:00
jose villarroel
3b7d2ea62e -Added Blend Profile mode selection to blend profile picker.
-Added option to blend profile picker for blend mask creation.
-Fixed issue w/ Blend profile picker sometimes showing in non-standalone mode outside of skeleton editor.
-Fixed issue w/ reset to default w/ blend profiles.
-Added blend mask mode to layered blend per bone node
#jira UE-101586
#review-14761881 @Aaron.Cox, @John.VanDerBurg, @Thomas.Sarkanen

[CL 14798723 by jose villarroel in ue5-main branch]
2020-11-20 15:02:56 -04:00
kiaran ritchie
f8f418ece1 Fix for LegIK node popping when angular constraints are on in tight poses
#jira: UE-93064
#code review: lina.halper
#rb: lina.halper

[CL 14784772 by kiaran ritchie in ue5-main branch]
2020-11-18 22:26:08 -04:00
Zousar Shaker
3cdeeb8075 Prototype Wrapped Object Pointers (ObjectHandle/ObjectPtr) Change ternary operators that are ambiguous when TObjectPtr can be implicitly constructed from a raw pointer. Also allow TObjectPtr to be implicitly constructed from an appropriate raw pointer.
#rb devin.doucette

[CL 14739879 by Zousar Shaker in ue5-main branch]
2020-11-12 18:18:02 -04:00