Commit Graph

475 Commits

Author SHA1 Message Date
jaime cifuentes
981823850f Enable Random Sequence Player react to automatic transition rules
#rb thomas.sarkanen
#jira UE-160566
#preflight 632ad260826e0c2fe994e9dd

[CL 22112881 by jaime cifuentes in ue5-main branch]
2022-09-21 10:45:04 -04:00
danny couture
89385f7f05 Fix assert on CVars when accessed from the async loading thread in FAnimNode_AnimDynamics::HasPreUpdate
#rb Thomas.Sarkanen
#preflight 6329a1c9b40000c8f064d0d0

[CL 22090797 by danny couture in ue5-main branch]
2022-09-20 07:51:47 -04:00
halfdan ingvarsson
1581de59be After five years, it's probably time to remove the 'experimental' flag from the Constraint anim node.
#rnx

[CL 22068476 by halfdan ingvarsson in ue5-main branch]
2022-09-17 22:06:58 -04:00
thomas sarkanen
be963f20ec Fix asset overrides not working correctly for blendspace & sequence players that use identical defaults
Folding properties prevents derived classes from properly overriding these properties

#jira UE-158068
#preflight 63243da5121ffddebc793a02
#rb Jurre.deBaare

[CL 22050397 by thomas sarkanen in ue5-main branch]
2022-09-16 11:37:25 -04:00
Jurre deBaare
ff0db16d0b Reintroducing AnimationDataModel refactor with additional memory and cooktime optimizations.
**Animation Data Model load/cook time and memory optimizations**
- Added SetKeysOnly to FMovieSceneFloatChannel, allowing to only set value/frames values and skip allocating key handles
- Added EvaluateWithCache to TMovieSceneCurveChannelImpl, allowing to evaluate multiple curves using a caching data structure holding the frame-indices resulting from the FrameTime -> indexes calculationg
- UFKControlRig::GetControlName/GetControlTargetName, added thread_local mapping cache and optimized FName generation
- Made the sequencer bone curve keys 'sparse' again, if constant it just sets the default value for the curve otherwise it is still uniform
- Only resample keys when compressing, and clear them on any significant model changes and when save-during-cook has been completed
- Routed ::Presave for AnimSequencerDataModel directly through to UMovieSceneSignedObject to skip compiling cooked sequencer that that will/should never cooked and packaged
- Added some significant pass-by-reference changes to AnimSequencerModel APIs (passing large arrays by value previously) :doh:
- Optimized GenerateLegacyBoneData

Original CL description:

**New**
- Engine
	- IAnimationDataModel interface
- AnimationData plugin
	- AnimSequencerDataModel, sequencer based implementation of IAnimationDataModel
	- AnimSequencerDataController, controller for above (implementation of IAnimationDataController)
- Added FCompressedRichCurve::PopulateCurve, allowing users to convert back to a FRichCurve for validation/debugging
- Added DefaultFrameRate to AnimationSettings, this replaces the hardcoded 30FPS in code
- Added ::GetKeyIndicesFromTime which takes FFrameRate
- Added AnimSequenceBase::OnAnimModelLoaded, this is required for correct postloading behaviour of data model (specifically AnimSequencerDataModel, as it depends on data from its outer ? anim sequence)
- Added IAnimationDataModel ::Evaluate which now takes responsibility for evaluating raw animation bone, curve and attribute data. And moved all trackbased evaluation code into AnimDataModel.cpp
- Added a.ForceEvalRawData allowing to force evaluation of source data
- Added a.SkipDDC to force compressing animation data locally

**Changed**
- Reparent UAnimDataModel to IAnimationDataModel interface, and rejig behaviour
- AnimSequenceBase now reference AnimDataModel as IAnimationDataModel
- Upgrade path for legacy to IAnimationDataModel and existing UAnimDataModel to IAnimationDataModel through IAnimationDataController::PopulateWithExisting
- IAnimationDataModel data is now frame(number/rate/time) based rather than seconds/keyindices. This enforces frameborder aligned data from now on.
- Moved RichCurve evaluation code from RichCurve.cpp to separate file and consolidated all instances of copy-pasta behaviour
- Updated/removed deprecated EngineTests around AnimSequences
- Changed many instances to use a FFrameTime together with a known FFrameRate versus seconds and sequencelength in float involving frame \/ time calculations (including instances of FAnimKeyHelper)
- Switched anim sequence evaluation to use double in Extraction context for time value and patched up places with static\_cast\<double\>
- FRichCurve::Eval
	- Make sure we always evaluate keys when T >= Key0.Time and T <= KeyN.Time to deal with crazy userweighted tangents
- Fixed WeightedKeyDataAdapter::GetKeyInterpMode/GetKeyTangentWeightMode retrieving invalid values, as it was indexing according to KeyIndex rather than KeyIndex\*2. This made it so that values were misinterpreted.
- Fixed WeightedEvalForTwoKeys for compressed data retrieving GetKeyInterpMode and GetKeyTangentWeightMode using the wrong index value. As they are not indexed using KeyDataHandle type.
- Fixed issue where compression could crash when containing zero-key scale additivebase track (tries to retrieve)
- Replaced instances of NULL with nullptr
- Moved required decompression information into FAnimSequenceDecompressionContext and reimplemented decompression within UE::Anim::Decompression namespace and new file
- Deprecated ::GetRawDataGuid and replaced with GetDataModel()->GenerateGuid()
- Fixed UAnimStreamable evaluation/compression (previously broken with MVC refactor)
- Updated Animation exporting pipeline to be frame-based rather than seconds
- Deprecated RetargetPose, replaced with FRetargetingScope (used within AnimModel::Evaluate)
- Fixed BaseAdditiveAnimation array become invalid/incorrect when removing zero-additve tracks during compression
- Updated EngineTest animation sequence related tests to new APIs (while maintaining deprecated path testing as well for now)
- AnimDataController / Animation Sequence tests now generate a USkeleton for the transient animation sequence (used to perform the test on)

**Removed**
- Unused file/class AnimData/AnimDataNotifyCollector.h

#rb Thomas.Sarkanen, Mike.Zyracki
#jira UE-131296
#preflight 631f6897a9331c69c3a34d1e

[CL 21980597 by Jurre deBaare in ue5-main branch]
2022-09-13 06:41:15 -04:00
austin crismore
302160436b Adding BP support for setting animation custom mode and Swap Root Bone on Anim Params
#rb matt.hoffman
#jira UE-163211
#preflight 631b4f9ad135b61bc561fc6d

[CL 21922832 by austin crismore in ue5-main branch]
2022-09-09 12:19:02 -04:00
bryan sefcik
cb0456c6d4 Cleaned up build.cs files by removing any include paths that were already being added by UBT. This was done to help identify how include paths are being added and to help with future refactoring.
#jira
#preflight 631a5c04967ffc68fbf0dd8f

[CL 21911226 by bryan sefcik in ue5-main branch]
2022-09-08 21:44:02 -04:00
lucas dower
167b77e995 PR #9253: Added blendspace player library to support editing blendspace players (Contributed by bestofact)
#jira UE-155699
#rb thomas.sarkanen
#preflight 63187e66b069eea9ab2f06e0

[CL 21847671 by lucas dower in ue5-main branch]
2022-09-07 07:46:07 -04:00
Jurre deBaare
bf737517f7 AnimNode_LayeredBoneBlend BlendWeight bug when using LODThreshold
#jira UE-149026
#fix rely on bHasRelevantPoses=false to skip evaluating poses rather than zero-ing out the blendweight array - that way they are also 'cached' for when the node becomes relevant again given the LOD
#rb Thomas.Sarkanen
#preflight 6315e12c2b7fe03eb6286b1c

[CL 21790994 by Jurre deBaare in ue5-main branch]
2022-09-05 07:56:40 -04:00
jaime cifuentes
562c89116d Fix for FAnimNode_RandomPlayer::Initialize_AnyThread crash
#rb keith.yerex
#jira UE-162912
#preflight 63124f80e11efde08fa5dd0d

[CL 21767360 by jaime cifuentes in ue5-main branch]
2022-09-02 16:51:27 -04:00
Keith Yerex
b1ce8450de Fix for MakeDynamicAdditive
Missing name on FScopedExpectsAdditiveOverride
#rb Thomas.Sarkanen
#preflight 63122fa9da63cdf1708db5d3

[CL 21762079 by Keith Yerex in ue5-main branch]
2022-09-02 12:35:22 -04:00
jaime cifuentes
1a8e6ce4ed Prevent out of range errorin FAnimNode_RandomPlayer, due to precision errors
GitHub #9137

#rb
#jira UE-150775
# robomerge 5.1
#preflight 6311afaaef428502175eb08b

[CL 21756549 by jaime cifuentes in ue5-main branch]
2022-09-02 03:40:40 -04:00
Chris Caulfield
fa6ad88864 Chaos - Constraint Solver Refactor
- Constraint Solver now solves IslandGroups using sets of dependent tasks
- Gather and Scatter use all available workers regardless of number of Islands
- Significantly better multi-core performance in large-island tests
- Added IslandGroupManager
- Added ConstraintGroupSolver (replaced SolverDatas)
- Added ConstraintContainerSolver (replaced ConstraintRule)
- Removed a lot of dead code

#rb cedric.caillaud, vincent.robert, benn.gallagher, jaco.vandyk
#jira none
#okforgitbug public
#preflight 630450540061f895d002cf5d
#preflight 6307c7e71670d55ad5cfd33e

[CL 21570706 by Chris Caulfield in ue5-main branch]
2022-08-25 15:42:32 -04:00
jose villarroel
c511833e59 Fix for crash in FAnimNode_LayeredBlendPerBone::Update when weights array is empty
#jira UE-160976
#review-21458108 @Thomas.Sarkanen
#rnx
#preflight 63039378a45b007ea23e60a2

[CL 21483753 by jose villarroel in ue5-main branch]
2022-08-22 10:53:14 -04:00
jose villarroel
e403498be3 Fix for crash when removing blend pose from Layered Blend Per Bone
#review-21435073 @Aaron.Cox, @Fernando.Coello
#rnx
#jira none
#preflight 62fd76a61e39eb26a0a12b86

[CL 21457298 by jose villarroel in ue5-main branch]
2022-08-19 10:39:52 -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
ennorehling
664320eb6b PR #9375: Common typo: doens't -> doesn't (Contributed by ennorehling)
#preflight 62f27e1a0264595302eefa12
#jira UE-158763
#rb trivial

[CL 21292281 by ennorehling in ue5-main branch]
2022-08-09 13:21:24 -04:00
chris caulfield
0c36c1d8e1 RBAN - change warning to a log to prevent new CIS breaks
#rb trivial

#ROBOMERGE-AUTHOR: chris.caulfield
#ROBOMERGE-SOURCE: CL 21202017 via CL 21202104 via CL 21202177
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v972-20964824)

[CL 21204039 by chris caulfield in ue5-main branch]
2022-07-21 13:31:01 -04:00
chris caulfield
8a874eebd3 RBAN - add warning when using a bone-space simulation with an invalid base bone
#rb none
#preflight 62d869fac0180d8071e4f5b1

#ROBOMERGE-AUTHOR: chris.caulfield
#ROBOMERGE-SOURCE: CL 21197201 via CL 21197206 via CL 21197208
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v972-20964824)

[CL 21197505 by chris caulfield in ue5-main branch]
2022-07-20 23:51:33 -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
Marc Audy
5b28f37a7c Follow up to CL# 21088391
Remove properties and functions so that redirectors can do their job
Add redirector for function paramter
#preflight
#codereview jaime.cifuentes, thomas.sarkanen, john.vanderburg

[CL 21140261 by Marc Audy in ue5-main branch]
2022-07-17 12:55:54 -04:00
jaime cifuentes
2c16e8a3b3 Uninitialized vars fix
#jira UE-159400
#review @thomas.sarkanen
#preflight 62d03b8cdc4397d384059f9f

[CL 21091809 by jaime cifuentes in ue5-main branch]
2022-07-14 12:05:04 -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
jaime cifuentes
86c8b3ddab AnimNode_Rigidbody MasterAlpha rename. Part of UE-158645
Adding the old property as deprecated, so the c++ continues compiling for external users of the engine

#jira UE-158645
#review @thomas.sarkanen
#fyi @benn.gallagher
#preflight 62cd75d33f422700272a0e11

[CL 21055821 by jaime cifuentes in ue5-main branch]
2022-07-12 10:03:15 -04:00
jaime cifuentes
7f89f01ffa AnimNode_Rigidbody MasterAlpha rename. Part of UE-158645
#jira UE-158645
#review @thomas.sarkanen @benn.gallagher
#preflight 62cc4bcabc36fc75cc5d6d72

[CL 21054114 by jaime cifuentes in ue5-main branch]
2022-07-12 05:30:52 -04:00