#rb jordan.cristiano, chris.caulfield, thomas.sarkanen
[FYI] ben.woodhouse, chris.bunner
#ROBOMERGE-SOURCE: CL 9603884 via CL 9603950 via CL 9603954
#ROBOMERGE-BOT: (v526-9587114)
[CL 9604203 by andrew ladenberger in Main branch]
#rb none
#ROBOMERGE-OWNER: michael.lentine
#ROBOMERGE-AUTHOR: michael.lentine
#ROBOMERGE-SOURCE: CL 9374650 via CL 9374665
#ROBOMERGE-BOT: (v456-9359915)
[CL 9385990 by michael lentine in Main branch]
New Update* API now passes through context from a higher level. Old API calls deprecated & fixed up.
We were previously doing the right thing with regards weights on the way *out* of a linked graph (via a linked input pose). This addresses the way *into* a linked graph.
#rb Jurre.deBaare
#ROBOMERGE-OWNER: marc.audy
#ROBOMERGE-AUTHOR: thomas.sarkanen
#ROBOMERGE-SOURCE: CL 9036155 via CL 9043727 via CL 9043933
#ROBOMERGE-BOT: (v443-9013191)
Resolution in AnimInstanceProxy.cpp stomps Dev-Anim changes. Jira to be filed to revisit the consequences to inertial blending.
#codereview Thomas.Sarkanen, Braeden.Shosa
[CL 9046911 by marc audy in Main branch]
A collection of major and minor optimizations to anim instance initialization.
Major:
- Added defered root node init. When an anim instance is set to init to refpose, this defers the first call to initialize the blend tree until just before the first Update() call, on a worker thread.
- Skip ConditionallyCacheBonesForState in state machines in the case where we would call CacheBones_AnyThread during first Initialize_AnyThread. This avoids duplicate work being done, as graph traversal counters will let through sychronization calls if they have yet to be updated (ie. their count is INDEX_NONE).
- Cache access to nodes that need pre-update, dynamic reset, one-time initialization, as well as state machines in the generated class to avoid iterating all anim nodes on initialization.
Minor:
- Cache access to node properties when re-linking nodes to avoid duplicate memory round-trips.
- Cache access to LUT size in FBaseBlendedCurve::GetValidElementCount, avoiding duplicate memory round-trips.
- Prevent FName rehashing from string (intended to strip whitespace) when initializing FBoneReferences.
- Cache access to AnimCurveMapping smart name container on USkeleton, preventing a TMap lookup every time we access the smart name container.
- USkeleton::GetCurveMetaData now uses a 'fast path' when accessing using smart name UID. In this case we can avoid the TMap lookup as the UID is always a direct index to metadata at runtime (slow path still applies in editor builds).
- Avoid calling FAnimNode_LayeredBoneBlend::ReinitializeBoneBlendWeights in Initialize_AnyThread, as CacheBones_AnyThread will be called straight after anyways.
- Cache access to curve UID count and LinkedBones array in FAnimNode_LayeredBoneBlend::ReinitializeBoneBlendWeights, avoiding duplicate memory round-trips.
Upgrade notes:
- Breaking change! Custom anim nodes that implement OnInitializeAnimInstance now need to return true for the new accessor NeedsOnInitializeAnimInstance to be called at init time.
- The meaning of HasPreUpdate and NeedsDynamicReset has changed slightly. Previously these were called at init time, so if their results were mutable it was possible to re-init an anim instance with new settings. Now they are called at CDO load time this is no longer possible.
#rb Martin.Wilson
#ROBOMERGE-SOURCE: CL 8686415 via CL 8686419 via CL 8689513
#ROBOMERGE-BOT: (v422-8689730)
[CL 8695271 by thomas sarkanen in Main branch]
#jira UE-76569
#rb max.chen
#ROBOMERGE-SOURCE: CL 7280102 in //UE4/Release-4.23/...
#ROBOMERGE-BOT: RELEASE (Release-4.23 -> Main) (v369-7254125)
[CL 7280144 by mike zyracki in Main branch]
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-OWNER: lina.halper
#ROBOMERGE-AUTHOR: aaron.cox
#ROBOMERGE-SOURCE: CL 6938273 via CL 6938276 via CL 6938281 via CL 6938283 via CL 6943622 via CL 6946612
#ROBOMERGE-BOT: ANIM (Main -> Dev-Anim) (v367-6836689)
[CL 7083257 by aaron cox in Dev-Anim branch]
#rb Michael.Lentine
#ROBOMERGE-SOURCE: CL 7041340 via CL 7042232 via CL 7047490
#ROBOMERGE-BOT: (v367-6836689)
[CL 7048351 by satchit subramanian in Main branch]
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]
Useful for fixing scaling issues arising from "Layered blend per bone" node. For example, when blending lower body locomotion with upper body aiming and feathering the lower body weight up the spine, scaling on the spine can propogate through the skeleton to the hands causing them to drift from the weapon. This removes the need to manually fixup the spine's scale after blending the poses.
BlendMeshPosesPerBoneWeights and BlendLocalPosesPerBoneWeights are now folded into a single function: BlendPosesPerBoneFilter.
[CODEREVIEW] Lina.Halper, Laurent.Delayen, Aaron.Cox
#rns
#ROBOMERGE-OWNER: lina.halper
#ROBOMERGE-AUTHOR: braeden.shosa
#ROBOMERGE-SOURCE: CL 6661692 via CL 6661829 via CL 6661835
#ROBOMERGE-BOT: ANIM (Main -> Dev-Anim) (v365-6733468)
[CL 6761012 by braeden shosa in Dev-Anim branch]