Commit Graph

33 Commits

Author SHA1 Message Date
aurel cordonnier
34f55d3a4a Merge from Release-Engine-Test @ 17946149 to UE5/Main
This represents UE4/Main @17911760, Release-5.0 @17915875 and Dev-PerfTest @17914035

[CL 17949667 by aurel cordonnier in ue5-main branch]
2021-10-27 15:14:40 -04:00
Jurre deBaare
635f35f41e Option to apply Animation Modifiers to only new or changed animations
#feature add ability to only apply out-of-date animation modifiers from asset context menu, and through details view on AnimationModifier classes
#fix ensure that we do not apply pending kill modifiers or instances that are used for reverting
#jira UE-84819
#rb Thomas.Sarkanen
#preflight 60cb38fd6092ba000140842e

[CL 16704034 by Jurre deBaare in ue5-main branch]
2021-06-17 09:49:44 -04:00
Jurre deBaare
c261a951cc Feature Request: Apply All for Animations modified by Anim Modifier
#feature added ApplyModifier scope struct which keeps track of which modifier has prompted the user for any warnings, and allow them to YesAll/NoAll rather than having to individually prompt for each modifier/animation sequence combination
#jira UE-82825
#rb Thomas.Sarkanen

[CL 16671774 by Jurre deBaare in ue5-main branch]
2021-06-15 07:23:26 -04:00
Jurre deBaare
a1f73dae73 - Move AnimBlueprintLibrary to its own Module (out of AnimModifiers)
- Added FAnimPose, a script-friendly helper structure to generate/read/write evaluated anim poses
- Added API to populate AnimPose from AnimationSequenceBase, USkeleton (ref pose) and AnimBlueprint

#jira none
#rb Thomas.Sarkanen, Danny.Chapman
#preflight 609bb27f2032ee00016b253a

[CL 16297653 by Jurre deBaare in ue5-main branch]
2021-05-12 07:30:40 -04:00
Jurre deBaare
be38ae281c - Added button to Anim Modifiers details customizations to apply all instances of its class to their outer AnimSequences
- Added context menu entry to AnimationSequence asset actions to apply all contained animation modifiers
#rb Thomas.Sarkanen
#preflight 604f343a23863e000183d66b

[CL 15694950 by Jurre deBaare in ue5-main branch]
2021-03-15 06:52:40 -04:00
Jurre deBaare
bc8e1bb823 - Added GetAnimNotifyEventDuration
- Set duration when replacing AnimNotify states
#jira none
#rb Jaren.Peterson

[CL 15679068 by Jurre deBaare in ue5-main branch]
2021-03-11 14:31:55 -04:00
jurre debaare
40ce4dcefe Expose Montages notifies to python via anim blueprint library like anim sequences already are
#jira UE-90241
#fix changed subset of the AnimationBlueprintLibrary API to take an UAnimSequenceBase/UAnimationAsset instead of an UAnimSequence
#misc added redirectors for all cases

#ROBOMERGE-SOURCE: CL 15558241 in //UE5/Release-5.0-EarlyAccess/...
#ROBOMERGE-BOT: STARSHIP (Release-5.0-EarlyAccess -> Main) (v771-15082668)

[CL 15558273 by jurre debaare in ue5-main branch]
2021-03-01 12:25: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
Jurre deBaare
fad5503605 Moved SmartName FName arrays local to functions, global static is being initialized to NAME_None due to (new) different AnimModifiers module loading order
#rb Thomas.Sarkanen

[CL 15134972 by Jurre deBaare in ue5-main branch]
2021-01-19 07:57:57 -04:00
Jurre deBaare
f24003f082 Animation data MVC refactor
#jira UE-104234
#rb Thomas.Sarkanen, Martin.Wilson, Alexis.Matte, Michael.Zyracki

+ Introduced UAnimDataModel, this currently represents the source data for bone and curve animation. It contains:
    + Bone animation tracks (FBoneAnimationTrack)
        + Key data (coarse)
        + Name
        + Bone tree index
    + Curve data (FAnimationCurveData)
        + Float Curves
        + Transform Curves
    + Play length
    + Sampling rate
        + Used for deriving the expected number of keys/frames when combined with the PlayLength
    + Transient data for supporting backwards compatibility APIs
    + (Dynamic) delegate which broadcasts the mutation Notifies

+ Introduced UAnimDataController, this has sole authority over mutating data contained by UAnimDataModel
    + API functionality allows to transform the contained data in all ways currently expected in the engine.
        + Any mutation will add an undo/redo-able FChange object into the transaction buffer
            + FChangeTransactor helper object allows for keeping track of (compounded) FChange's and inserting them into GUndo
        + Broadcasts change notifies alongside a payload object containing details about the change
            + Interested systems/objects can register to these changes through UAnimDataModel::OnModelModified event
        + Almost all functionality is exposed to both Blueprint and Python scripting
    + Allows for opening 'Brackets', these define the beginning and end of a chain of mutations. Allowing anything registered to OnModelModified to halt responding to the notifies until the (top-level) bracket is closed
    + Undo/redo actions
        + Each mutation to the UAnimDataModel is covered by a 'Action' which is based of FChange and is used to insert a undo/redo-able operation into the transactions buffer

+ Introduced EAnimDataModelNotifType and per-notify payload types. These are used to update views, and any model derived data

+ Introduced FAnimationCurveIdentifier, exposed to scripting, this is used for referencing a curve by name and type when passed to the controller
    + Allows for targetting a specific RichCurve as part of a TransformCurve

+ Introduced FAnimationDataNotifyCollectorused for keeping track of which notifies of type EAnimDataModelNotifType are broadcasted between top-level EAnimDataModelNotifType::BracketOpened and EAnimDataModelNotifType::BracketClosed notifies

+ Added CanTransact to UEngine, returns whether or not a transaction can be made

+ Added UAnimCompositeBase::SetCompositeLength, used for runtime changing of play length value

+ Animation Sequence helpers, containing 'helper' functionality for both AnimSequence and AnimDataModel

* Animation Sequence Base
    + virtual PopulateModel, called during upgrade path for converting existing (legacy) data to the new UAnimDataModel data
    + virtual OnModelModified, registered to the Model's OnModified event to handle any Notifies and payloads
    + Added UAnimDataModel sub-object (editor only)
    + Added UAnimDataController instance (transient and editor only)
    + FAnimationDataNotifyCollector to keep track of model bracketed notifies
    * Deprecated
        * SetSequenceLength()
        * RefreshCurveData()
        * MarkRawDataAsModified()
        * RegisterOnAnimCurvesChanged()
        * UnregisterOnAnimCurvesChanged()
        * UnregisterOnAnimTrackCurvesChanged()
        * RegisterOnAnimTrackCurvesChanged()
        * Public access to RawCurveData

* Animation Sequence
    + Implements PopulateModel/OnModelModified for AnimationSequence related data
    + Added TargetFrameRate, currently locked to the initial sampling rate, but allows for resampling the UAnimDataModel data according to the set rate
    + Added NumberOfSampledKeys (editor only), populated by resampling process
    + Added NumberOfSampledFrames (editor only), populated by resampling process
    + Added ResampledAnimationTrackData (editor only and transient), populated by resampling process
    + Added bBlockCompressionRequests (editor only), used for blocking compression during automation tests
    * Deprecated
        * SetNumberOfSampledKeys()
        * MarkRawDataAsModified()
        * GetRawAnimationData()
        * GetAnimationTrackNames()
        * AddNewRawTrack()
        * GetRawTrackToSkeletonMapTable()
        * GetRawAnimationTrack()
        * GetRawAnimationTrack()
        * UpdateFrameRate()
        * ExtractBoneTransform()
        * CompressRawAnimData()
        * GetSkeletonIndexFromRawDataTrackIndex()
        * RecycleAnimSequence()
        * CleanAnimSequenceForImport()
        * CopyNotifies()
        * PostProcessSequence()
        * AddLoopingInterpolation()
        * RemoveAllTracks()
        * DoesContainTransformCurves()
        * InsertFramesToRawAnimData()
        * CropRawAnimData()
        * RemoveTrack()
        * InsertTrack()
        * ResizeSequence()
        * Non-editor access to GetUncompressedRawSize()
        * Non-editor access to GetApproxRawSize()
        * Public access to UpdateCompressedCurveName()
        * NumberOfKeys
        * SamplingFrameRate
        * TrackToSkeletonMapTable
        * RawAnimationData
        * AnimationTrackNames

* Animation Streamable
    * Model from source Sequence is duplicated rather than copying animation data

* Deprecated ERawCurveTrackTypes::RCT_Vector (marked as hidden)

+ Added automated test for
    + All script exposed controller functionality
    + Undo/redo actions
* Updated existing AnimSequence tests with deprecation and new expected data

+ Base data for compression is now populated from the 'resampled' version stored on the AnimSequence
+ Data cleanup and validation is now performed during compression
    + Track sanitization is now performed during compression (normalizing Quats and clamping near-zero values to zero)
    + Key reduction
    + Invalid track (missing bone from skeleton) removal
    + Curve name validation against skeleton
* Replaced RawCurves with Float curves
* Updated DDC key
- Removed all Guid generation related functionality (now part of the model)

* AnimSequenceBase model registers to AnimModel's notify event, used for refreshing the tracks
    * Replaces the in-place calling of RefreshTracks()
* All curve tracks now hold a const CurveType* rather than a CurveType*/& for introspection of its data
    + Any mutations now go through the controller API
    + Uses AnimationCurveIdentifier to set Transform's per-channel tracks
* RichCurveEditorModelNamed conformed to model/controller
    + Any modifications are applied to an temporary CurveType which always contains a copy of the const-ptr after any previous mutation
    + Registers to the outer AnimModel's notify event, used for updating the cached curve data
    + Registers to CurveModifiedDelegate, used for copying the temp curve data to the model using SetCurveKeys
        * Not-ideal but point that I got to for V1
        * Would be replaced with either refactoring FRichCurve to be MVC like, or by calling UAnimDataController functionality from an implementation of FRichCurveEditorModel

* Mark FChange overrides as final for swap/command change permutations
* Changed FCompoundChange GetDescription to return concatenation of all sub-changes
* Added GetDescription to FTransaction which returns the ToString() value of any contained FChange entries.
    * Entries in SUndoHistory tab now have a ToolTip showing the GetDescription() value
+ FChangeTransactor helper object allows for keeping track of (compounded) FChange's and inserting them into GUndo

* Deprecation handling, conforming code to new APIs and exposing structure/objects/properties to scripting
* Conforming AnimSequence importing from FBX to Model/Controller changes

[CL 15106211 by Jurre deBaare in ue5-main branch]
2021-01-15 06:41:11 -04:00
Jurre deBaare
6f3438b57a UAnimSequence:
- Deprecated NumFrames instead added NumberOfKeys (data is copied over during serialization patch up)
- Deprecated GetNumberOfFrames and GetRawNumberOfFrames instead added GetNumberOfSampledKeys
- Deprecated SetRawNumberOfFrames and instead added SetNumberOfSampledKeys
- Added SamplingFrameRate (FFrameRate), which is populated according to the sequence's actual number of frames and length
- Changed some behaviour to use FFrameRate API to calculate frame number / timings
- Deprecated GetFrameRate and instead added GetSamplingFrameRate
- Fixed uses where NumFrames was assumed to contain the number of frames rather than the number of keys (ResizeSequence, AddLoopingInterpolation, CropAnimation, InsertKeysIntoRawData)

UAnimStreamable:
- Deprecated NumFrames instead added NumberOfKeys (data is copied over during serialization patch up)

ITimeManagementModule:
- Exposed GetCommonFrameRates through the abstract interface to get around circular Engine module dependency

#jira UE-102191
#rb Martin.Wilson

[CL 14608938 by Jurre deBaare in ue5-main branch]
2020-10-29 09:47:22 -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
Lina Halper
44c1bb3292 COPY from //Dev-Anim to //Dev-Main
#rb: none
#fyi: Laurent.Delayen, Thomas.Sarkanen

[CL 11088765 by Lina Halper in Main branch]
2020-01-22 17:58:55 -05:00
ryan durand
627baf970a Updating copyright for Engine Editor.
#rnx
#rb none


#ROBOMERGE-SOURCE: CL 10869241 via CL 10869527 via CL 10869904
#ROBOMERGE-BOT: (v613-10869866)

[CL 10870586 by ryan durand in Main branch]
2019-12-26 15:33:43 -05:00
marc audy
5170b67476 Fix implicit cast
#jira
#rb
#rnx
[CODEREVIEW] Jurre.deBaare

#ROBOMERGE-SOURCE: CL 9840402 in //UE4/Release-4.24/...
#ROBOMERGE-BOT: RELEASE (Release-4.24 -> Main) (v546-9757112)

[CL 9840404 by marc audy in Main branch]
2019-10-25 12:46:44 -04:00
jurre debaare
ac0b99bbd9 Make Animation Modifiers retain the previously applied version, this way when behaviour or property values change the reverting stage is actually correct.
#jira UDN
#rb Martin.Wilson

#ROBOMERGE-SOURCE: CL 9838449 in //UE4/Release-4.24/...
#ROBOMERGE-BOT: RELEASE (Release-4.24 -> Main) (v546-9757112)

[CL 9838451 by jurre debaare in Main branch]
2019-10-25 09:03:38 -04:00
zzz77
97e4a99783 PR #6033: Fixes for IntelliSense (Contributed by zzz77)
#rb none
#rnx

[CL 7308593 by Ben Marsh in Dev-Build branch]
2019-07-15 10:09:44 -04:00
lina halper
bab821de19 Copying //UE4/Dev-Anim to Dev-Main (//UE4/Dev-Main) [at] 6861656
#rb
#rnx

#ROBOMERGE-OWNER: ben.marsh
#ROBOMERGE-AUTHOR: lina.halper
#ROBOMERGE-SOURCE: CL 6863572 in //UE4/Main/...
#ROBOMERGE-BOT: BUILD (Main -> Dev-Build) (v366-6836689)

[CL 6917136 by lina halper in Dev-Build branch]
2019-06-10 16:16:11 -04:00
NEdwards-SumoDigital
275e4eda37 PR #5479: Fixed a couple of issues with animation notify functions in AnimationBlueprintLibrary (Contributed by NEdwards-SumoDigital)
#rb Jurre.deBaare

[CL 6782690 by Jurre deBaare in Dev-Anim branch]
2019-06-03 05:05:04 -04:00
Ben Marsh
bbb8057a5e Merging //UE4/Dev-Main to Dev-Build (//UE4/Dev-Build)
#rb none
#rnx

[CL 4820573 by Ben Marsh in Dev-Build branch]
2019-01-26 14:33:56 -05:00
bpeck
b5e437076f PR #5150: Fix UAnimSequence::CopyNotifies & expose to Animation Blueprint Library (Contributed by bpeck)
[CL 4751685 by Jurre deBaare in Dev-Anim branch]
2019-01-18 11:32:49 -05:00
Ben Marsh
e26dfd2100 Merging //UE4/Dev-Main to Dev-Build (//UE4/Dev-Build)
#rb none
#rnx

[CL 4716250 by Ben Marsh in Dev-Build branch]
2019-01-12 13:09:07 -05:00
Jurre deBaare
9cd11ebaea Running Anim Modifiers on a selection of animations
#jira UE-52080
#rb Thomas.Sarkanen

[CL 4688597 by Jurre deBaare in Dev-Anim branch]
2019-01-08 11:04:38 -05:00
Thomas Sarkanen
8ba3c4c087 Merging //UE4/Dev-Main to Dev-Anim (//UE4/Dev-Anim) @ CL 4643671
#rb none
#jira none

[CL 4665410 by Thomas Sarkanen in Dev-Anim branch]
2018-12-17 06:31:16 -05:00
Ben Marsh
530369c613 Merging //UE4/Dev-Main to Dev-Build (//UE4/Dev-Build)
#rb none
#rnx

[CL 4662695 by Ben Marsh in Dev-Build branch]
2018-12-14 14:49:12 -05:00