Commit Graph

41 Commits

Author SHA1 Message Date
Thomas Sarkanen
502797ca50 Animation Curve Runtime & Editor Improvements
Runtime notes:
- Removes 'smart name' usage across the animation systems.
- Changed curve blending from a uniform array (sized per skeleton) to a sparse array of sorted named values. Blends and other combiners are performed using a dual iteration 'tape merge'.
- Skeleton curves are no longer guaranteed to cover all curve names that can be found at runtime.

Editor notes:
- Curve metadata (flags, bone links etc.) is still present on the skeleton, but can also now exist on a skeletal mesh
- Curve metadata (for morph targets) is still populated on import
- Curves can now be used arbitrarily at runtime

New features:
- New Find/Replace dialog that allows for batch-replacing curves and notifies across all of a project's assets
- New curve debugger tab in various Persona editors that allows for viewing curve values live. This also now allows viewing curves for specific pose watches.
- Pose watches now output curve tracks to the Rewind Debugger

#rb Jurre.deBaare,Nicholas.Frechette,Sara.Schvartzman,Helge.Mathee,Kiaran.Ritchie,Jaime.Cifuentes,Martin.Wilson,Keith.Yerex,Andrean.Franc (and more!)
#jira UE-167776
#jira UE-173716
#jira UE-110407
#preflight 63fc98c81206d91a2bc3ab90
#preflight 63f3ad4f81646f1f24c240c2

[CL 24421496 by Thomas Sarkanen in ue5-main branch]
2023-02-27 07:20:58 -05:00
henrik karlsson
b5b86c796c This change is a strategical submit for a coming change that removes lots of includes in headers that are included by many files. This change contains adding of includes in files that previously got those includes transitively from other inclkudes
#preflight 6355d4940313c24974b2107b
#rb none

[CL 22783162 by henrik karlsson in ue5-main branch]
2022-10-26 12:57:32 -04:00
marc audy
311f7464bf Updated ../Engine/Source/Runtime/... to inline gen.cpp files
Before:
3648 unity files
Total CPU Time: 47886.140625 s
Total time in Parallel executor: 498.81 seconds

After:
3548 unity files
Total CPU Time: 46643.828125 s
Total time in Parallel executor: 486.06 seconds

#jira
#preflight

[CL 22173263 by marc audy in ue5-main branch]
2022-09-24 13:57:58 -04:00
kriss gossart
0422ca7705 Skeletal Mesh - Replace the newly created GetSkeletalMesh function by GetSkeletalMeshAsset so it matches the setter SetSkeletalMeshAsset function (which itself couldn't be named SetSkeletalMesh due to the function already existing and doing something else).
#rb Josie.Yang
#preflight 62fa2afeae3edb54c979492e
#jira none

[CL 21385959 by kriss gossart in ue5-main branch]
2022-08-15 09:26:50 -04:00
jaime cifuentes
7fabb99aaf Inclusive Terminology Push - Part of UE-158645, UE-158525, UE-158532
Renamed / deprecated master/slave terms at SkinnedMeshComponent and SkeletalMeshComponent (plus all the users)

#jira UE-158645, UE-158525, UE-158532
#review @thomas.sarkanen @john.vanderburg
#preflight 62ced88af324cee189e48d43
#tests Verified the properties transfer correctly after modifying them without the fix and loading the character with the component with the fix applied
#preflight 62cfc490c36afd11ef07c9ab

[CL 21088391 by jaime cifuentes in ue5-main branch]
2022-07-14 03:55:26 -04:00
Josie Yang
6b15506e58 Replace direct access to SkeletalMesh object from USkinnedMeshComponent with GetSkeletalMesh function
#rb kriss.gossart
#preflight 62aafc9ada0af39a4783930a

[CL 20686007 by Josie Yang in ue5-main branch]
2022-06-16 09:14:04 -04:00
michael noland
e132a8476e Animation: CopyPoseFromMesh and RetargetPoseFromMesh will now walk up the attach parent hierarchy to the parent mesh component when using bUseAttachedParent instead of only checking the immediate parent, which fixes issues when the owning actor is attached via, e.g., a child actor component
#jira UE-143947
#rb marc.audy
#preflight 621982be42189ae62269b48d
#lockdown julien.marchand

#ROBOMERGE-OWNER: michael.noland
#ROBOMERGE-AUTHOR: michael.noland
#ROBOMERGE-SOURCE: CL 19162668 in //UE5/Release-5.0/... via CL 19162967
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v921-19075845)

[CL 19163001 by michael noland in ue5-main branch]
2022-02-25 22:00:29 -05:00
jurre debaare
838e928cde Validate Attribute bone index typing / mapping
#jira UE-132455

Animaton attribute index remapping:
- Introduced FMeshAttributeContainer which stores the attributes according to FMeshPoseIndex
- Added FinalizeAttributeEvaluationResults to SkeletalMeshComponent - which remaps the evaluated compact-pose indexed attributes to mesh-indices
- Added CopyFrom template for different bone index types
- Updated CopyPoseFromMesh
   * Added SourceBoneToTarget as attributes are mapped from source to target vs target to source for Bones
- Ensure that attributes are only inserted during evaluation if its bone index is present in the required bones
- Added testing for remapping attributes
    * Remapping between LODs with removed bones
    * Remapping between Skeletal meshes with different skeleton hierarchies

#rb Thomas.Sarkanen
#preflight 61e8067e843acf1b2428c2be

#ROBOMERGE-OWNER: jurre.debaare
#ROBOMERGE-AUTHOR: jurre.debaare
#ROBOMERGE-SOURCE: CL 18657038 in //UE5/Release-5.0/... via CL 18657062 via CL 18657063
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v900-18638592)

[CL 18657069 by jurre debaare in ue5-main branch]
2022-01-19 07:57:49 -05:00
Marc Audy
0c3be2b6ad Merge Release-Engine-Staging to Test @ CL# 18240298
[CL 18241953 by Marc Audy in ue5-release-engine-test branch]
2021-11-18 14:37:34 -05:00
aurel cordonnier
7f517562d5 Merge from Release-Engine-Staging @ 17438845 to Release-Engine-Test
This represents UE4/Main @17430120 and Dev-PerfTest @17437669

[CL 17439044 by aurel cordonnier in ue5-release-engine-test branch]
2021-09-06 12:23:53 -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
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
Marcus Wassmer
3b81cf8201 Merging using //UE5/Main_to_//UE5/Release-Engine-Staging @14384769
autoresolved files
#rb none

[CL 14384911 by Marcus Wassmer in ue5-main branch]
2020-09-24 00:43:27 -04:00
ryan durand
0f0464a30e Updating copyright for Engine Runtime.
#rnx
#rb none


#ROBOMERGE-OWNER: ryan.durand
#ROBOMERGE-AUTHOR: ryan.durand
#ROBOMERGE-SOURCE: CL 10869210 via CL 10869511 via CL 10869900
#ROBOMERGE-BOT: (v613-10869866)

[CL 10870549 by ryan durand in Main branch]
2019-12-26 14:45:42 -05:00
Robert Manuszewski
7b6f840f7f Copying //UE4/Dev-Core @ 10708550 to Dev-Main (//UE4/Dev-Main)
#rb none

[CL 10708666 by Robert Manuszewski in Main branch]
2019-12-13 11:07:03 -05:00
Marc Audy
8df336162c Copying //UE4/Dev-Anim to Dev-Main (//UE4/Dev-Main) @ 8782600
#rb
#rnx

[CL 8783278 by Marc Audy in Main branch]
2019-09-17 19:12:19 -04:00
helge mathee
a6a2a333c0 Final copy-up for Control Rig Task Stream.
Merging using Fortnite_Main<->Fortnite_ControlRig

#rb none


#ROBOMERGE-OWNER: helge.mathee
#ROBOMERGE-AUTHOR: helge.mathee
#ROBOMERGE-SOURCE: CL 7321580 via CL 7323175
#ROBOMERGE-BOT: (v371-7306989)

[CL 7323351 by helge mathee in Main branch]
2019-07-16 11:49:59 -04:00
aaron cox
3618478716 Reinitialize the Copy Pose From Mesh node when the target mesh changes.
Fixes animation pose breaking when dynamically changing between skeletal meshes that use the same animbp but have a different number of bones.
[CODEREVIEW] Laurent.Delayen, Lina.Halper


#ROBOMERGE-SOURCE: CL 6938273 via CL 6938276 via CL 6938281 via CL 6938283 via CL 6943622
#ROBOMERGE-BOT: (v366-6836689)

[CL 6946612 by aaron cox in Main branch]
2019-06-11 22:52:01 -04:00
lina halper
99bdf1f381 Add more log w.r.t. skeleton crash from copy pose and change to ensure
#jira: FORT-160974
#rb: Laurent.Delayen


#ROBOMERGE-SOURCE: CL 6151477 via CL 6151490 via CL 6155798

[CL 6177837 by lina halper in Main branch]
2019-04-30 12:13:28 -04:00
lina halper
c4ea32533e Speculated fix w.r.t. copy pose node
- where it seems the reference contains invalid skeleton
- refSkeleton access seems violated
- copied Jaren's fix w.r.t. evaluation crash due to setting different AnimBP in the middle of evaluation

#code review: Thomas.Sarkanen
#jira: FORT-160974, FORT-149957


#ROBOMERGE-SOURCE: CL 5672339 via CL 5675808

[CL 5675866 by lina halper in Main branch]
2019-04-01 18:07:21 -04:00
thomas sarkanen
7a50ab7f6c Making copy pose thread-safe
Moved the work to acquire the bone transforms to PreUpdate on the game thread.
Supported master-pose by checking whether what we are copying is running master-pose (this potentially fixes issues where character heads/hats can detach).
Profiled, this averages ~8us on console per call, so not too bad.

#rb Lina.Halper
[FYI] Lina.Halper


#ROBOMERGE-SOURCE: CL 4691593

[CL 4692711 by thomas sarkanen in Main branch]
2019-01-09 11:34:37 -05:00
thomas sarkanen
05e9d6f132 Back out changelist 4688737
Just in case - found a potential regression with the editor after this went in.

#rb none


#ROBOMERGE-SOURCE: CL 4688910

[CL 4689070 by thomas sarkanen in Main branch]
2019-01-08 12:36:23 -05:00
thomas sarkanen
e0770494a9 Making copy pose thread-safe
Moved the work to acquire the bone transforms to PreUpdate on the game thread.
Supported master-pose by checking whether what we are copying is running master-pose (this potentially fixes issues where character heads/hats can detach).
Profiled, this averages ~8us on console per call, so not too bad.

#rb Lina.Halper


#ROBOMERGE-SOURCE: CL 4688737

[CL 4689055 by thomas sarkanen in Main branch]
2019-01-08 12:36:03 -05:00
Marc Audy
ab108c215e Copying to Dev-Main @ CL# 4688301
#rb
#rnx

[CL 4688816 by Marc Audy in Main branch]
2019-01-08 11:38:48 -05:00
Ben Marsh
7598af0532 Update copyright notices to 2019.
#rb none
#lockdown Nick.Penwarden

[CL 4662404 by Ben Marsh in Main branch]
2018-12-14 13:41:00 -05:00