Commit Graph

60 Commits

Author SHA1 Message Date
Helge Mathee
b9150e2620 Control Rig: Support for preferred euler angles
- Removed implicit casts between FEulerTransform and FTransform
- moved interrogator and tokens inside of sequencer to use FEulerTransform
- added the notion of a preferred rotator for Controls. transform takes precedence for runtime solves, but UI / sequencer relies on the preferred rotator

#rb mike.zyracki benoit.gadreau
#jira UE-150830
#preflight https://horde.devtools.epicgames.com/job/62875a58286cf1867a419989

[CL 20298666 by Helge Mathee in ue5-main branch]
2022-05-20 13:48:08 -04:00
benoit gadreau
77439b7338 Constraints in Sequencer experiments
#jira UE-140598
#rb mike.zyracki
#fyi chase.cooper
#preflight 62820966fa65e101e5ca23b9

This is a first prototype of a constraints manager system.

note: have a look at the jira description for the features leading this work

The current design is based on the idea of having a unique constraint manager that stores several constraints (UTickableConstraint).
Each constraint holds a tick function (FConstraintTickFunction) that can register one or several functions (represented by a basic TFunction) that are evaluated when calling
the FConstraintTickFunction::ExecuteTick function. This FConstraintTickFunction can basically represent anything.

[CL 20221291 by benoit gadreau in ue5-main branch]
2022-05-16 04:56:23 -04:00
helge mathee
3388f916c6 Control Rig: Improve performance of constraint nodes
* Guarded conditional branch code paths
* Replaced name / key based lookups with cached keys.

#rb jack.cai kiaran.ritchie
#preflight https://horde.devtools.epicgames.com/job/623af760bc1cf2803874b7aa

#ROBOMERGE-AUTHOR: helge.mathee
#ROBOMERGE-SOURCE: CL 19514518 via CL 19514529 via CL 19514532
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v937-19513599)

[CL 19516861 by helge mathee in ue5-main branch]
2022-03-25 14:25:34 -04:00
Helge Mathee
80cb75fa33 Control Rig: refactor details panel to show any node, support vector, rotator and transform widgets
#rb sara.schvartzman
#jira UE-139767 UE-121980
#preflight https://horde.devtools.epicgames.com/job/620cde9301253d2e1906c4eb

[CL 19012796 by Helge Mathee in ue5-main branch]
2022-02-16 07:27:08 -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
helge mathee
cc98485f5f AnimationCore: FEulerTransform scale to init to OneVector
#rb trivial
#jira UE-138131
#preflight https://horde.devtools.epicgames.com/job/61e6b6297f0c4b5aad5c4cec

#ROBOMERGE-AUTHOR: helge.mathee
#ROBOMERGE-SOURCE: CL 18638789 in //UE5/Release-5.0/... via CL 18638802 via CL 18638812
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v899-18417669)

[CL 18638831 by helge mathee in ue5-main branch]
2022-01-18 08:05:48 -05:00
helge mathee
c5f735dc4f Refactor Control Rig Element Detaills to use new transform widgets
#rb na
#jira na
#preflight https://horde.devtools.epicgames.com/job/61dd976d4e558a67d7c6fe3e

#ROBOMERGE-AUTHOR: helge.mathee
#ROBOMERGE-SOURCE: CL 18571931 in //UE5/Release-5.0/... via CL 18571958
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v899-18417669)

[CL 18571993 by helge mathee in ue5-release-engine-test branch]
2022-01-11 10:14:09 -05:00
helge mathee
3af5353c34 Input Widgets: Advanced Rotation and Transform widget
* Rotation to support multiple representations (quat, rotator, euler etc)
* Rotation widget to support mapping to single numeric channels or higher level attributes (Rotator, Quat)
* Transform widget relative / world
* Transform widget uniform scale lock
* Transform widget to map to single numeric channels or higher level attributes (FTransform, FEulerTransform)

#preflight https://horde.devtools.epicgames.com/job/61a641dac3287aab278e0fb7
#jira UE-134546
#rb lauren.barnes
[FYI] Louise.Rasmussen

#ROBOMERGE-AUTHOR: helge.mathee
#ROBOMERGE-SOURCE: CL 18325450 in //UE5/Release-5.0/... via CL 18325459
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v895-18170469)
#ROBOMERGE[STARSHIP]: UE5-Main

[CL 18325471 by helge mathee in ue5-release-engine-test branch]
2021-11-30 11:02:35 -05:00
helge mathee
efa54d2821 Control Rig: Move euler / rotation order conversion to AnimationCore
#rb jack.cai
#jira na
preflight https://horde.devtools.epicgames.com/job/6193dc759137c0a5bedd8645

#ROBOMERGE-AUTHOR: helge.mathee
#ROBOMERGE-SOURCE: CL 18208177 in //UE5/Release-5.0/... via CL 18208191
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v895-18170469)
#ROBOMERGE[STARSHIP]: UE5-Main

[CL 18208247 by helge mathee in ue5-release-engine-test branch]
2021-11-16 12:12:41 -05:00
braeden shosa
8fb6da6ea2 CustomBoneIndexArray improved to support construction, assignment, allocators, and ArrayView
#rb Thomas.Sarkanen,Jurre.deBaare
#preflight 618c48cfe90999fb89112309
[FYI] martin.wilson

#ROBOMERGE-AUTHOR: braeden.shosa
#ROBOMERGE-SOURCE: CL 18155893 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v889-18060218)

[CL 18155919 by braeden shosa in ue5-release-engine-test branch]
2021-11-11 14:21:07 -05:00
Andrew Davidson
3ddc3a4da3 Merge up from //UE5/Dev-LargeWorldCoordinates
#rb none

[CL 16211417 by Andrew Davidson in ue5-main branch]
2021-05-05 15:07:25 -04:00
halfdan ingvarsson
08e14a4f41 Fixed an edge case where if we're normalizing weights which are all equal, we end up in a situation where the error distribution makes the last entry have a slightly greater weight value than the previous, which invalidates the descending weight order invariant. If we detect this case, just reorder after normalization.
Fixed the Verify function so that we can see the current weight in the debugger.
Removed dead functions.

#jira none
#trivial
#rnx

[CL 16196332 by halfdan ingvarsson in ue5-main branch]
2021-05-04 13:48:59 -04:00
Marc Audy
0cbbc781ca Merge UE5/Release-Engine-Staging @ 15740152 to UE5/Main
This represents UE4/Main @ 15709114

[CL 15740605 by Marc Audy in ue5-main branch]
2021-03-18 15:20:03 -04:00
halfdan ingvarsson
70de324805 Templatized FBoneWeight into TBoneWeight that can sit on top of an arbitrary array-like container.
Register new SkinWeights mesh descriptor attribute that combines weights and influence in a single attribute, that proxies TBoneWeight to allow setting bone weights in one shot with normalization, culling, etc.
Deprecated and removed InfluenceBones and InfluenceWeights and updated the calling code to use the new attribute.

#jira UE-93689
#rb Alexis.Matte
#rnx

[CL 15516471 by halfdan ingvarsson in ue5-main branch]
2021-02-24 13:31:48 -04:00
Marc Audy
9753392e2b Merge UE5/RES CL# 15462083 to UE5/Main
This represents UE4/Main @ 15414221

[CL 15463811 by Marc Audy in ue5-main branch]
2021-02-18 18:13:28 -04:00
halfdan ingvarsson
7eda00912e Change FBoneWeight::MaxRawWeight to a constexpr function to satisfy Mac linkage issues.
#trivial
#rnx

[CL 15068830 by halfdan ingvarsson in ue5-main branch]
2021-01-13 13:14:44 -04:00
halfdan ingvarsson
ba7cf326cd Missing return value in the dummy TBoneWeights adapter.
#trivial
#rnx

[CL 15067904 by halfdan ingvarsson in ue5-main branch]
2021-01-13 12:24:44 -04:00
halfdan ingvarsson
940d1131b3 Templataize FBoneWeights so that it can be used on any dynamically sizeable container.
#rb none
#jira none
#rnx

[CL 15067624 by halfdan ingvarsson in ue5-main branch]
2021-01-13 11:54:11 -04:00
Lina Halper
963faf8b0d IKRig plugin first version
- you can add one type of solver - transform and then that will give you one goal and you can run it.
- 3 modules - IKRig, IKRigDeveloper, IKRigEditor
- IKRigDefinition is the main data for anim node.

#rb: Kiaran.Ritchie, Halfdan.Ingvarsson
#fyi: Kiaran.Ritchie

[CL 14814068 by Lina Halper in ue5-main branch]
2020-11-25 17:38:42 -04:00
halfdan ingvarsson
331db0f7b4 Fix duplicate check to be separate checks. Added a test for it.
#jira none
#rb none
#rnx

[CL 14145714 by halfdan ingvarsson in ue5-main branch]
2020-08-19 14:06:31 -04:00
halfdan ingvarsson
fc97705f40 Build fix for Linux -- lambda argument shadows member variable.
#jira none
#rb none
#rnx

[CL 14132771 by halfdan ingvarsson in ue5-main branch]
2020-08-18 11:44:42 -04:00
halfdan ingvarsson
f09be305a8 New container to store per-vertex bone weights. Takes care of normalization, blending, capping weight counts, etc. while being lightweight and fast.
#jira UE-93689
#rb Alexis.Matte

[CL 14132466 by halfdan ingvarsson in ue5-main branch]
2020-08-18 11:16:00 -04:00
halfdan ingvarsson
8da0b15ed9 Remove unused function and nix dependency on Engine.
#jira none
#rb Lina.Halper
#rnx

[CL 13800643 by halfdan ingvarsson in ue5-main branch]
2020-06-30 17:10:13 -04:00
braeden shosa
05f5f01853 Animation: Pose search experimental plugin
- This is a plugin that enables the animation runtime to search within a sequence for a given pose
- UPoseSearchSchema: specifies list of bones to sample, will include other info in the future like which properties to sample
- UPoseSearchIndexConfig: anim asset metadata object that specifies sample rate and range
- UPoseSearchIndex: anim asset metadata object containing data sampled from sequence offline, currently just translations per bone in the schema
- FPoseSearchPoseHistory: maintains a buffer of recorded poses over time for constructing search queries with past poses
- PoseSearchBuildIndex(): Constructs a search index for an anim sequence
- PoseSearchBuildQuery(): Constructs a search query given the current pose and a pose search schema
- PoseSearch(): Searches for the nearest matching pose in an indexed sequence given a query that was built for the same pose search schema
- FAnimNode_PoseMatchingSequencePlayer: Subclass of sequence player that adds the option to offset playback based on a pose search
- FAnimNode_PoseSearchHistoryCollector: a new pose history anim node for explicit control of pose search query context
  - Pose history is now updated during graph evaluation instead of always using the final pose result at the end of evaluation
  - Removed pose history from anim instance to decouple plugin from anim runtime
- Removed dependencies on USkeletalMeshComponent
- Promoted anim update shared context to base context so ancestor tracking can be used during node initialization
- Added FBoneIndexBase::IsValid()
- Exported UAnimationAsset API so plugins can use it
- Improved documentation
- Register asset type actions on module startup

#rb Andrew.Marre, Laurent.Delayen, Jaren.Peterson, Thomas.Sarkanen

[CL 13682386 by braeden shosa in ue5-main branch]
2020-06-16 02:32:29 -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