Commit Graph

222 Commits

Author SHA1 Message Date
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
halfdan ingvarsson
0e50cd24fe Relocating the contents of the Classes directory in AnimGraph in favor of Public.
#jira none
#trivial

[CL 14823295 by halfdan ingvarsson in ue5-main branch]
2020-11-30 16:40:07 -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
braeden shosa
4bcf791d57 PoseSearch: Pose feature vector API, support for indexing and searching collections of animations, and lots of refactoring and cleanup.
+ Pose feature vector API
  + FPoseSearchFeatureVectorLayout
    - Explicit description of a pose feature vector (FV)
    - Determined by options set in a UPoseSearchSchema and owned by the schema. See UPoseSearchSchema::GenerateLayout().
  + FPoseSearchFeatureDesc
    - Describes each feature of a vector, including data type, sampling options, and buffer offset.
    - New data types introduced (previously only positions were supported)
    - Could potentially be extended in the future to support externally registered features, but that's not the goal for now.
  + FFeatureVectorBuilder
    - Helper object for writing features into a float buffer according to the layout
    - Keeps track of which features are present, allowing the FV to be constructed piecemeal
  + FFeatureVectorReader
    - Helper object for extracting features. Presently only used for debug rendering.
+ UPoseSearchDatabase
  - A data asset for indexing a collection of animation sequences
  - Support added for searching the collection and returning the matching sequence with time offset
+ Pose matching refactoring
  - Setup no longer requires an animation modifier or a special graph node
  + UPoseSearchSequenceMetaData
    - Replaces UPoseSearchIndexConfig and UPoseSearchIndex
    - Counterpart to UPoseSearchDatabase for a single animation instead of a collection
    - Simply add to sequence metadata, fill it out, and save
  + IPoseSearchProvider
    - Modular feature interface that replaces the need for AnimGraphNode_PoseMatchingSequencePlayer
    - The PoseSearch plugin now registers itself as an implementer of IPoseSearchProvider
    - AnimGraphNode_SequencePlayer now detects if a pose search provider exists and offers optional pose matching support
    - Currently exposed as checkbox in an "experimental" section of the node's settings
+ Other cleanup/refactoring
  + Namespacing
    - Pulled all non-UCLASS/USTRUCTs into a UE::PoseSearch namespace
    - Renamed PoseSearchDetail namespace to UE::PoseSearch::Private per standards
  + UPoseSearchSchema is no longer an animation asset
    - This was a kludge to get the bone reference UI to work
    - Now it's a data asset and implements IBoneReferenceSkeletonProvider
    - Removed related asset type actions and factory
  + FPoseSearchIndex replaces bits of UPoseSearchIndex
    - Has narrower scope and is shared by UPoseSearchSequenceMetaData and UPoseSearchDatabase
  + Odds n' ends
    - Removed FPoseSearchBuildQueryScratch. FPoseHistory now owns memory required for taking samples.
    - Debug drawing reworked in terms of FV API
    - Added a.PoseSearch.DrawSearchIndex console command to render the search index of any animation sequences currently open in the editor
    - Removed Blueprint function library for building search indices since animation modifiers are no longer needed
#rb Aaron.Cox

[CL 14615629 by braeden shosa in ue5-main branch]
2020-10-29 17:05:00 -04:00
Marc Audy
4c1bb11c29 Merge UE5/Release-Engine-Staging to UE5/Main @ 14548662
This represents UE4/Main @ 14525125 + cherrypicked fixes
#skipundocheck

[CL 14551026 by Marc Audy in ue5-main branch]
2020-10-22 19:19:16 -04:00
Zousar Shaker
77d13185b7 Copying //UE5/Dev-Cooker@14539516 to Main (//UE5/Main)
[CL 14539954 by Zousar Shaker in ue5-main branch]
2020-10-21 17:56:05 -04:00
john vanderburg
121a24f7e1 Improve the Blend Profiles by allowing time based profiles.
Users can now select the blend profile mode: Blend Weight Factor based or Time Factor based.
The Blend Weight Factor method is the legacy method, which multiplies the transition blend weight with the per bone factor.
The new Time Factor method allows you to specify a time factor. A value of 0.5 would mean the bone would take half the time of the transition to reach its target state, while a value of 0.1 would mean it takes a tenth of the time, etc. A value of 0 would make the bone instantly transition into the target state.

#jira UE-100994
#review-14530265 @Aaron.Cox, @Thomas.Sarkanen

[CL 14539393 by john vanderburg in ue5-main branch]
2020-10-21 16:54:58 -04:00
Thomas Sarkanen
eb63841a83 Merging using //UE5/Main_to_//UE4/Release-4.26 @ CL 14521949
Fixed issue with sync group collisions when syncing with 'component' scope

This change moves sync group management to use a name->group map instead of indices. Staying with indices cannot work across multiple instances as they are simply allocated at the point the single anim BP is compiled, so can easily collide in anything other than simple configurations.
Deprecated all index based access to sync groups in the runtime. Sync groups can still be enumerated on the generated class.

#jira UE-101030 - Sync groups with non-local scope can collide, causing incorrect behaviour
#rb Martin.Wilson,Jurre.deBaare

[CL 14521985 by Thomas Sarkanen in ue5-main branch]
2020-10-20 04:59:00 -04:00
Marc Audy
50a3d7d368 Merge Release-Engine-Staging to Main @ CL# 14467590
This represents UE4/Main @ 14432125 + some cherrypick fixes

[CL 14468207 by Marc Audy in ue5-main branch]
2020-10-09 22:42:26 -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
Thomas Sarkanen
8b3709fb28 Restricted anim BP compiler subsystem APIs
Removed direct access to currently compiling BP class to restrict unguarded mutation.
Const-corrected various accessors and overrides.
Moved UObject-based compiler subsystems to 'handlers' and removed UObject dependency.
Moved from set of virtual functions on subsystems/handlers to a restricted set of contexts passed to specific multicast delegates that handlers subscribe to.
Removed anim class subsystems.
Moved property access code to engine module (editor code is still in a plugin).
Fixed nativized builds where anim BPs have nativized/non-nativized classes in the hierarchy

#rb Dan.OConnor
#jira none

[CL 14278258 by Thomas Sarkanen in ue5-main branch]
2020-09-09 08:32:25 -04:00
Marc Audy
7379fa99c5 Merging //UE5/Release-Engine-Staging to Main (//UE5/Main) @ 14229157
[CL 14233282 by Marc Audy in ue5-main branch]
2020-09-01 14:07:48 -04:00
ben hoffman
af13cd2b39 Make SearchForAutocastFunction take in Pin Types, not pin pointers.
#jira UE-94217
#rb none
#rnx

[CL 14167505 by ben hoffman in ue5-main branch]
2020-08-22 14:11:35 -04:00
Michal Valient
95d19f95b1 [REVERB] Merging //UE4/Private-Reverb-Development@13832732
#rb graham.wihlidal, rune.stubbe, brian.karis, andrew.lauritzen, jeff.farris

[CL 13834854 by Michal Valient in ue5-main branch]
2020-07-06 18:58:26 -04:00
Marc Audy
11f5b21210 Merging //UE5/Release-Engine-Staging @ 13752110 to Main (//UE5/Main)
#rnx

[CL 13753156 by Marc Audy in ue5-main branch]
2020-06-23 18:40:00 -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
chris caulfield
5ca6ab385e Chaos - hack in Poke force in PhAt
#rb none


#ROBOMERGE-SOURCE: CL 10837680 via CL 10841173 via CL 10843458 via CL 10843562
#ROBOMERGE-BOT: (v610-10636431)

[CL 10843725 by chris caulfield in Main branch]
2019-12-19 23:33:50 -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
braeden shosa
3ccce0de2c Inertialization error logging.
- Inertialization requests made without the context of an ancestor inertialization node now log an error identifying the source of the request.
- Added an editor only table to map runtime nodes back to their source. This enables runtime node errors to identify the source.
- The log messages are text only for now, as this is a limitation of the current message log handling in AnimInstanceProxy. However, having the reverse map gets us halfway to runtime node messages with clickable hyperlinks.
- Don't log errors if anim graph blend time is zero. Anim graph times are allowed to be zero to cancel inertialziation, but there's no need to complain about a missing inertialization node in that case.
- Improved inertialization documentation
#jira UE-80532
#rb thomas.sarkanen
[FYI] thomas.sarkanen, laurent.delayen, zack.letters

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

[CL 9827179 by braeden shosa in Main branch]
2019-10-24 21:21:22 -04:00
braeden shosa
57401f6259 Clamp transition crossfade durations to 0
#jira UE-81909
#fyi zack.letters, laurent.delayen
#rb none

[CL 9625571 by braeden shosa in 4.24 branch]
2019-10-16 18:28:21 -04:00
braeden shosa
19e2ec8e94 Merging 9412940, 9574419, and 9575864 from Dev-Anim
Inertial blending for Linked Anim Blueprints
#jira UEA-544
#rb thomas.sarkanen
#fyi thomas.sarkanen, laurent.delayen, aaron.cox, zack.letters

[CL 9620672 by braeden shosa in 4.24 branch]
2019-10-16 14:04:36 -04:00
Lina Halper
3fd7f76532 Copying //UE4/Dev-Anim to Dev-Main (//UE4/Dev-Main)
#fyi: Laurent.Delayn, Marc.Audy
#rb: none

[CL 9321182 by Lina Halper in Main branch]
2019-10-01 16:59:31 -04:00
thomas sarkanen
817414d35a Fix non-unity build
#rb none


#ROBOMERGE-SOURCE: CL 9148007 via CL 9148028
#ROBOMERGE-BOT: (v443-9013191)

[CL 9148040 by thomas sarkanen in Main branch]
2019-09-26 11:59:23 -04:00
thomas sarkanen
79185e6271 Correctly displaying current class on layer nodes
This change means that layer nodes can now display their (potentially dynamically-assigned) linked class when the debugger is inspecting a running instance.

#jira UE-78537 - UX: There is no clear indication what Instance Class is used on a layer node without selecting it
#rb Jurre.deBaare


#ROBOMERGE-SOURCE: CL 9133145 via CL 9133206
#ROBOMERGE-BOT: (v443-9013191)

[CL 9133270 by thomas sarkanen in Main branch]
2019-09-26 09:15:50 -04:00