UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
FAnimationRuntime Class Reference

#include <AnimationRuntime.h>

Public Types

enum class  EBlendPosesPerBoneFilterFlags : uint32 { None = 0 , MeshSpaceRotation = (1 << 0) , MeshSpaceScale = (1 << 1) , RootSpaceRotation = (1 << 2) }
 

Static Public Member Functions

static ENGINE_API void NormalizeRotations (const FBoneContainer &RequiredBones, FTransformArrayA2 &Atoms)
 
static ENGINE_API void NormalizeRotations (FTransformArrayA2 &Atoms)
 
static ENGINE_API void InitializeTransform (const FBoneContainer &RequiredBones, FTransformArrayA2 &Atoms)
 
static ENGINE_API void BlendPosesTogether (TArrayView< const FCompactPose > SourcePoses, TArrayView< const FBlendedCurve > SourceCurves, TArrayView< const float > SourceWeights, FCompactPose &ResultPose, FBlendedCurve &ResultCurve)
 
static ENGINE_API void BlendPosesTogether (TArrayView< const FCompactPose > SourcePoses, TArrayView< const FBlendedCurve > SourceCurves, TArrayView< const UE::Anim::FStackAttributeContainer > SourceAttributes, TArrayView< const float > SourceWeights, FAnimationPoseData &OutAnimationPoseData)
 
static ENGINE_API void BlendPosesTogether (TArrayView< const FCompactPose > SourcePoses, TArrayView< const FBlendedCurve > SourceCurves, TArrayView< const float > SourceWeights, TArrayView< const int32 > SourceWeightsIndices, FCompactPose &ResultPose, FBlendedCurve &ResultCurve)
 
static ENGINE_API void BlendPosesTogether (TArrayView< const FCompactPose > SourcePoses, TArrayView< const FBlendedCurve > SourceCurves, TArrayView< const UE::Anim::FStackAttributeContainer > SourceAttributes, TArrayView< const float > SourceWeights, TArrayView< const int32 > SourceWeightsIndices, FAnimationPoseData &OutPoseData)
 
static ENGINE_API void BlendPosesTogetherIndirect (TArrayView< const FCompactPose *const > SourcePoses, TArrayView< const FBlendedCurve *const > SourceCurves, TArrayView< const float > SourceWeights, FCompactPose &ResultPose, FBlendedCurve &ResultCurve)
 
static ENGINE_API void BlendPosesTogetherIndirect (TArrayView< const FCompactPose *const > SourcePoses, TArrayView< const FBlendedCurve *const > SourceCurves, TArrayView< const UE::Anim::FStackAttributeContainer *const > SourceAttributes, TArrayView< const float > SourceWeights, FAnimationPoseData &OutPoseData)
 
static ENGINE_API void BlendTwoPosesTogether (const FCompactPose &SourcePose1, const FCompactPose &SourcePose2, const FBlendedCurve &SourceCurve1, const FBlendedCurve &SourceCurve2, const float WeightOfPose1, FCompactPose &ResultPose, FBlendedCurve &ResultCurve)
 
static ENGINE_API void BlendTwoPosesTogether (const FAnimationPoseData &SourcePoseOneData, const FAnimationPoseData &SourcePoseTwoData, const float WeightOfPoseOne, FAnimationPoseData &OutAnimationPoseData)
 
static ENGINE_API void BlendTwoPosesTogetherPerBone (const FCompactPose &SourcePose1, const FCompactPose &SourcePose2, const FBlendedCurve &SourceCurve1, const FBlendedCurve &SourceCurve2, const TArray< float > &WeightsOfSource2, FCompactPose &ResultPose, FBlendedCurve &ResultCurve)
 
static ENGINE_API void BlendTwoPosesTogetherPerBone (const FAnimationPoseData &SourcePoseOneData, const FAnimationPoseData &SourcePoseTwoData, const TArray< float > &WeightsOfSource2, FAnimationPoseData &OutAnimationPoseData)
 
static ENGINE_API void BlendTwoPosesTogetherPerBone (const FCompactPose &SourcePoseOneData, const FCompactPose &SourcePoseTwoData, const TArray< float > &WeightsOfSource2, FCompactPose &OutAnimationPoseData)
 
static ENGINE_API void BlendPosesTogetherPerBone (TArrayView< const FCompactPose > SourcePoses, TArrayView< const FBlendedCurve > SourceCurves, const IInterpolationIndexProvider *InterpolationIndexProvider, TArrayView< const FBlendSampleData > BlendSampleDataCache, FCompactPose &ResultPose, FBlendedCurve &ResultCurve)
 
static ENGINE_API void BlendPosesTogetherPerBone (TArrayView< const FCompactPose > SourcePoses, TArrayView< const FBlendedCurve > SourceCurves, TArrayView< const UE::Anim::FStackAttributeContainer > SourceAttributes, const IInterpolationIndexProvider *InterpolationIndexProvider, TArrayView< const FBlendSampleData > BlendSampleDataCache, FAnimationPoseData &OutAnimationPoseData)
 
static ENGINE_API void BlendPosesTogetherPerBoneRemapped (TArrayView< const FCompactPose > SourcePoses, TArrayView< const FBlendedCurve > SourceCurves, TArrayView< const UE::Anim::FStackAttributeContainer > SourceAttributes, const IInterpolationIndexProvider *InterpolationIndexProvider, TArrayView< const FBlendSampleData > BlendSampleDataCache, TArrayView< const int32 > BlendSampleDataCacheIndices, const FSkeletonRemapping &SkeletonRemapping, FAnimationPoseData &OutAnimationPoseData)
 
static ENGINE_API void BlendPosesTogetherPerBone (TArrayView< const FCompactPose > SourcePoses, TArrayView< const FBlendedCurve > SourceCurves, const IInterpolationIndexProvider *InterpolationIndexProvider, TArrayView< const FBlendSampleData > BlendSampleDataCache, TArrayView< const int32 > BlendSampleDataCacheIndices, FCompactPose &ResultPose, FBlendedCurve &ResultCurve)
 
static ENGINE_API void BlendPosesTogetherPerBone (TArrayView< const FCompactPose > SourcePoses, TArrayView< const FBlendedCurve > SourceCurves, TArrayView< const UE::Anim::FStackAttributeContainer > SourceAttributes, const IInterpolationIndexProvider *InterpolationIndexProvider, TArrayView< const FBlendSampleData > BlendSampleDataCache, TArrayView< const int32 > BlendSampleDataCacheIndices, FAnimationPoseData &OutAnimationPoseData)
 
static ENGINE_API void BlendPosesTogetherPerBoneInMeshSpace (TArrayView< FCompactPose > SourcePoses, TArrayView< const FBlendedCurve > SourceCurves, const UBlendSpace *BlendSpace, TArrayView< const FBlendSampleData > BlendSampleDataCache, FCompactPose &OutResultPose, FBlendedCurve &OutResultCurve)
 
static ENGINE_API void BlendPosesTogetherPerBoneInMeshSpace (TArrayView< FCompactPose > SourcePoses, TArrayView< const FBlendedCurve > SourceCurves, TArrayView< const UE::Anim::FStackAttributeContainer > SourceAttributes, const UBlendSpace *BlendSpace, TArrayView< const FBlendSampleData > BlendSampleDataCache, FAnimationPoseData &OutAnimationPoseData)
 
static ENGINE_API void BlendPosesPerBoneFilter (FCompactPose &BasePose, const TConstArrayView< FCompactPose > BlendPoses, FBlendedCurve &BaseCurve, const TConstArrayView< FBlendedCurve > BlendedCurves, UE::Anim::FStackAttributeContainer &BaseAttributes, const TArrayView< UE::Anim::FStackAttributeContainer > BlendAttributes, FAnimationPoseData &OutAnimationPoseData, const TArrayView< FPerBoneBlendWeight > BoneBlendWeights, EBlendPosesPerBoneFilterFlags BlendFlags, enum ECurveBlendOption::Type CurveBlendOption)
 
static ENGINE_API void UpdateDesiredBoneWeight (const TArrayView< FPerBoneBlendWeight > SrcBoneBlendWeights, TArrayView< FPerBoneBlendWeight > TargetBoneBlendWeights, const TArrayView< float > BlendWeights)
 
static ENGINE_API void CreateMaskWeights (TArray< FPerBoneBlendWeight > &BoneBlendWeights, const TArray< FInputBlendPose > &BlendFilters, const USkeleton *Skeleton)
 
static ENGINE_API void CreateMaskWeights (TArray< FPerBoneBlendWeight > &BoneBlendWeights, const TArray< class UBlendProfile * > &BlendMasks, const USkeleton *Skeleton)
 
static ENGINE_API void CombineWithAdditiveAnimations (int32 NumAdditivePoses, const FTransformArrayA2 **SourceAdditivePoses, const float *SourceAdditiveWeights, const FBoneContainer &RequiredBones, FTransformArrayA2 &Atoms)
 
static ENGINE_API FTransform GetComponentSpaceRefPose (const FCompactPoseBoneIndex &CompactPoseBoneIndex, const FBoneContainer &BoneContainer)
 
static ENGINE_API void FillWithRefPose (TArray< FTransform > &OutAtoms, const FBoneContainer &RequiredBones)
 
static ENGINE_API void ConvertPoseToMeshSpace (const TArray< FTransform > &LocalTransforms, TArray< FTransform > &MeshSpaceTransforms, const FBoneContainer &RequiredBones)
 
static ENGINE_API void ConvertPoseToAdditive (FCompactPose &TargetPose, const FCompactPose &BasePose)
 
static ENGINE_API void ConvertTransformToAdditive (FTransform &TargetTrasnform, const FTransform &BaseTransform)
 
static ENGINE_API void ConvertPoseToMeshRotation (FCompactPose &LocalPose)
 
static ENGINE_API void ConvertMeshRotationPoseToLocalSpace (FCompactPose &Pose)
 
static ENGINE_API void AccumulateAdditivePose (FCompactPose &BasePose, const FCompactPose &AdditivePose, FBlendedCurve &BaseCurve, const FBlendedCurve &AdditiveCurve, float Weight, enum EAdditiveAnimationType AdditiveType)
 
static ENGINE_API void AccumulateAdditivePose (FAnimationPoseData &BaseAnimationPoseData, const FAnimationPoseData &AdditiveAnimationPoseData, float Weight, enum EAdditiveAnimationType AdditiveType)
 
static ENGINE_API void AccumulateLocalSpaceAdditivePose (FCompactPose &BasePose, const FCompactPose &AdditivePose, FBlendedCurve &BaseCurve, const FBlendedCurve &AdditiveCurve, float Weight)
 
static ENGINE_API void AccumulateLocalSpaceAdditivePose (FAnimationPoseData &BaseAnimationPoseData, const FAnimationPoseData &AdditiveAnimationPoseData, float Weight)
 
static ENGINE_API void AccumulateMeshSpaceRotationAdditiveToLocalPose (FCompactPose &BasePose, const FCompactPose &MeshSpaceRotationAdditive, FBlendedCurve &BaseCurve, const FBlendedCurve &AdditiveCurve, float Weight)
 
static ENGINE_API void AccumulateMeshSpaceRotationAdditiveToLocalPose (FAnimationPoseData &BaseAnimationPoseData, const FAnimationPoseData &MeshSpaceRotationAdditiveAnimationPoseData, float Weight)
 
static ENGINE_API void AccumulateRootSpaceRotationAdditiveToLocalPose (FAnimationPoseData &BaseAnimationPoseData, const FAnimationPoseData &MeshSpaceRotationAdditiveAnimationPoseData, float Weight)
 
static ENGINE_API void LerpPoses (FCompactPose &PoseA, const FCompactPose &PoseB, FBlendedCurve &CurveA, const FBlendedCurve &CurveB, float Alpha)
 
static ENGINE_API void LerpPosesPerBone (FCompactPose &PoseA, const FCompactPose &PoseB, FBlendedCurve &CurveA, const FBlendedCurve &CurveB, float Alpha, const TArray< float > &PerBoneWeights)
 
static ENGINE_API void LerpPosesWithBoneIndexList (FCompactPose &PoseA, const FCompactPose &PoseB, FBlendedCurve &CurveA, const FBlendedCurve &CurveB, float Alpha, const TArray< FCompactPoseBoneIndex > &BoneIndices)
 
static ENGINE_API void LerpBoneTransforms (TArray< FTransform > &A, const TArray< FTransform > &B, float Alpha, const TArray< FBoneIndexType > &RequiredBonesArray)
 
static ENGINE_API void BlendTransformsByWeight (FTransform &OutTransform, const TArray< FTransform > &Transforms, const TArray< float > &Weights)
 
static ENGINE_API void MirrorCurves (FBlendedCurve &Curves, const UMirrorDataTable &MirrorDataTable)
 
static ENGINE_API FVector MirrorVector (const FVector &V, EAxis::Type MirrorAxis)
 
static ENGINE_API FQuat MirrorQuat (const FQuat &Q, EAxis::Type MirrorAxis)
 
static ENGINE_API void MirrorPose (FCompactPose &Pose, const UMirrorDataTable &MirrorDataTable)
 
static ENGINE_API void MirrorPose (FCompactPose &Pose, EAxis::Type MirrorAxis, const TArray< FCompactPoseBoneIndex > &CompactPoseMirrorBones, const TCustomBoneIndexArray< FQuat, FCompactPoseBoneIndex > &ComponentSpaceRefRotations)
 
static ENGINE_API ETypeAdvanceAnim AdvanceTime (const bool bAllowLooping, const float MoveDelta, float &InOutTime, const float EndTime)
 
static ENGINE_API void TickBlendWeight (float DeltaTime, float DesiredWeight, float &Weight, float &BlendTime)
 
static ENGINE_API void ApplyWeightToTransform (const FBoneContainer &RequiredBones, FTransformArrayA2 &Atoms, float Weight)
 
static ENGINE_API void GetKeyIndicesFromTime (int32 &OutKeyIndex1, int32 &OutKeyIndex2, float &OutAlpha, const double Time, const int32 NumKeys, const double SequenceLength, double FramesPerSecond=-1.0)
 
static ENGINE_API void GetKeyIndicesFromTime (int32 &OutKeyIndex1, int32 &OutKeyIndex2, float &OutAlpha, const double Time, const FFrameRate &FrameRate, const int32 NumberOfKeys)
 
static ENGINE_API void EnsureParentsPresent (TArray< FBoneIndexType > &BoneIndices, const FReferenceSkeleton &RefSkeleton)
 
static ENGINE_API void ExcludeBonesWithNoParents (const TArray< int32 > &BoneIndices, const FReferenceSkeleton &RefSkeleton, TArray< int32 > &FilteredRequiredBones)
 
static ENGINE_API void ConvertCSTransformToBoneSpace (const FTransform &ComponentTransform, FCSPose< FCompactPose > &MeshBases, FTransform &InOutCSBoneTM, FCompactPoseBoneIndex BoneIndex, EBoneControlSpace Space)
 
static ENGINE_API void ConvertBoneSpaceTransformToCS (const FTransform &ComponentTransform, FCSPose< FCompactPose > &MeshBases, FTransform &InOutBoneSpaceTM, FCompactPoseBoneIndex BoneIndex, EBoneControlSpace Space)
 
static ENGINE_API FTransform GetSpaceTransform (FA2Pose &Pose, int32 Index)
 Pose conversion functions.
 
static ENGINE_API FTransform GetSpaceTransform (FA2CSPose &Pose, int32 Index)
 
static ENGINE_API void SetSpaceTransform (FA2Pose &Pose, int32 Index, FTransform &NewTransform)
 
static ENGINE_API void SetSpaceTransform (FA2CSPose &Pose, int32 Index, FTransform &NewTransform)
 
static ENGINE_API FTransform GetComponentSpaceTransformRefPose (const FReferenceSkeleton &RefSkeleton, int32 BoneIndex)
 
static ENGINE_API FTransform GetComponentSpaceTransform (const FReferenceSkeleton &RefSkeleton, const TArrayView< const FTransform > &BoneSpaceTransforms, int32 BoneIndex)
 
static ENGINE_API void FillUpComponentSpaceTransforms (const FReferenceSkeleton &RefSkeleton, const TArrayView< const FTransform > &BoneSpaceTransforms, TArray< FTransform > &ComponentSpaceTransforms)
 
static ENGINE_API void MakeSkeletonRefPoseFromMesh (const USkeletalMesh *InMesh, const USkeleton *InSkeleton, TArray< FTransform > &OutBoneBuffer)
 
static ENGINE_API EBoneTranslationRetargetingMode::Type GetBoneTranslationRetargetingMode (const bool bUseSourceRetargetModes, const int32 SourceSkeletonBoneIndex, const int32 TargetSkeletonBoneIndex, const USkeleton *SourceSkeleton, const USkeleton *TargetSkeleton, const bool bDisableRetargeting)
 
static ENGINE_API const FTransformGetComponentSpaceTransformWithCache (const FReferenceSkeleton &InRefSkeleton, const TArray< FTransform > &InBoneSpaceTransforms, int32 BoneIndex, TArray< FTransform > &CachedTransforms, TArray< bool > &CachedTransformReady)
 
static bool IsFullWeight (float Weight)
 
static bool HasWeight (float Weight)
 
static ENGINE_API void AppendActiveMorphTargets (const USkeletalMesh *InSkeletalMesh, const TMap< FName, float > &InMorphCurveAnims, FMorphTargetWeightMap &InOutActiveMorphTargets, TArray< float > &InOutMorphTargetWeights)
 
static ENGINE_API void RetargetBoneTransform (const USkeleton *SourceSkeleton, const FName &RetargetSource, FTransform &BoneTransform, const int32 SkeletonBoneIndex, const FCompactPoseBoneIndex &BoneIndex, const FBoneContainer &RequiredBones, const bool bIsBakedAdditive)
 
static ENGINE_API void RetargetBoneTransform (const USkeleton *MySkeleton, const FName &SourceName, const TArray< FTransform > &RetargetTransforms, FTransform &BoneTransform, const int32 SkeletonBoneIndex, const FCompactPoseBoneIndex &BoneIndex, const FBoneContainer &RequiredBones, const bool bIsBakedAdditive)
 
static ENGINE_API int32 GetStringDistance (const FString &First, const FString &Second)
 

Detailed Description

In AnimationRunTime Library, we extract animation data based on Skeleton hierarchy, not ref pose hierarchy. Ref pose will need to be re-mapped later

Member Enumeration Documentation

◆ EBlendPosesPerBoneFilterFlags

Blending flags for BlendPosesPerBoneFilter

Enumerator
None 
MeshSpaceRotation 
MeshSpaceScale 

Blend bone rotations in mesh space instead of local space.

RootSpaceRotation 

Blend bone scales in mesh space instead of local space.

Member Function Documentation

◆ AccumulateAdditivePose() [1/2]

void FAnimationRuntime::AccumulateAdditivePose ( FAnimationPoseData BaseAnimationPoseData,
const FAnimationPoseData AdditiveAnimationPoseData,
float  Weight,
enum EAdditiveAnimationType  AdditiveType 
)
static

◆ AccumulateAdditivePose() [2/2]

void FAnimationRuntime::AccumulateAdditivePose ( FCompactPose BasePose,
const FCompactPose AdditivePose,
FBlendedCurve BaseCurve,
const FBlendedCurve AdditiveCurve,
float  Weight,
enum EAdditiveAnimationType  AdditiveType 
)
static

Accumulate Additive Pose based on AdditiveType

◆ AccumulateLocalSpaceAdditivePose() [1/2]

void FAnimationRuntime::AccumulateLocalSpaceAdditivePose ( FAnimationPoseData BaseAnimationPoseData,
const FAnimationPoseData AdditiveAnimationPoseData,
float  Weight 
)
static

◆ AccumulateLocalSpaceAdditivePose() [2/2]

void FAnimationRuntime::AccumulateLocalSpaceAdditivePose ( FCompactPose BasePose,
const FCompactPose AdditivePose,
FBlendedCurve BaseCurve,
const FBlendedCurve AdditiveCurve,
float  Weight 
)
static

Accumulates weighted AdditivePose to BasePose. Rotations are NOT normalized.

◆ AccumulateMeshSpaceRotationAdditiveToLocalPose() [1/2]

void FAnimationRuntime::AccumulateMeshSpaceRotationAdditiveToLocalPose ( FAnimationPoseData BaseAnimationPoseData,
const FAnimationPoseData MeshSpaceRotationAdditiveAnimationPoseData,
float  Weight 
)
static

◆ AccumulateMeshSpaceRotationAdditiveToLocalPose() [2/2]

void FAnimationRuntime::AccumulateMeshSpaceRotationAdditiveToLocalPose ( FCompactPose BasePose,
const FCompactPose MeshSpaceRotationAdditive,
FBlendedCurve BaseCurve,
const FBlendedCurve AdditiveCurve,
float  Weight 
)
static

Accumulate a MeshSpaceRotation Additive pose to a local pose. Rotations are NOT normalized

◆ AccumulateRootSpaceRotationAdditiveToLocalPose()

void FAnimationRuntime::AccumulateRootSpaceRotationAdditiveToLocalPose ( FAnimationPoseData BaseAnimationPoseData,
const FAnimationPoseData MeshSpaceRotationAdditiveAnimationPoseData,
float  Weight 
)
static

◆ AdvanceTime()

ETypeAdvanceAnim FAnimationRuntime::AdvanceTime ( const bool  bAllowLooping,
const float  MoveDelta,
float InOutTime,
const float  EndTime 
)
static

Advance CurrentTime to CurrentTime + MoveDelta. It will handle wrapping if bAllowLooping is true

return ETypeAdvanceAnim type

return ETypeAdvanceAnim type

◆ AppendActiveMorphTargets()

void FAnimationRuntime::AppendActiveMorphTargets ( const USkeletalMesh InSkeletalMesh,
const TMap< FName, float > &  InMorphCurveAnims,
FMorphTargetWeightMap InOutActiveMorphTargets,
TArray< float > &  InOutMorphTargetWeights 
)
static

Combine CurveKeys (that reference morph targets by name) and ActiveAnims (that reference morphs by reference) into the ActiveMorphTargets array.

◆ ApplyWeightToTransform()

void FAnimationRuntime::ApplyWeightToTransform ( const FBoneContainer RequiredBones,
FTransformArrayA2 Atoms,
float  Weight 
)
static

Apply Weight to the Transform Atoms = Weight * Atoms at the end

Scale transforms by Weight. Result is obviously NOT normalized.

◆ BlendPosesPerBoneFilter()

void FAnimationRuntime::BlendPosesPerBoneFilter ( FCompactPose BasePose,
const TConstArrayView< FCompactPose BlendPoses,
FBlendedCurve BaseCurve,
const TConstArrayView< FBlendedCurve BlendedCurves,
UE::Anim::FStackAttributeContainer BaseAttributes,
const TArrayView< UE::Anim::FStackAttributeContainer BlendAttributes,
FAnimationPoseData OutAnimationPoseData,
const TArrayView< FPerBoneBlendWeight BoneBlendWeights,
EBlendPosesPerBoneFilterFlags  BlendFlags,
enum ECurveBlendOption::Type  CurveBlendOption 
)
static

Blend Poses per bone weights : The BasePoses + BlendPoses(SourceIndex) * Blend Weights(BoneIndex) Please note BlendWeights are array, so you can define per bone base This supports multi per bone blending, but only one pose as blend at a time per track PerBoneBlendWeights.Num() == Atoms.Num()

Note
: This optionally blends rotation and/or scale in mesh space. Translation is always in local space.

I had multiple debates about having PerBoneBlendWeights array(for memory reasons), but it so much simplifies multiple purpose for this function instead of searching bonenames or having multiple bone names with multiple weights, and filtering through which one is correct one I assume all those things should be determined before coming here and this only cares about weights

◆ BlendPosesTogether() [1/4]

void FAnimationRuntime::BlendPosesTogether ( TArrayView< const FCompactPose SourcePoses,
TArrayView< const FBlendedCurve SourceCurves,
TArrayView< const float SourceWeights,
FCompactPose ResultPose,
FBlendedCurve ResultCurve 
)
static

Blends together a set of poses, each with a given weight. This function is lightweight, it does not cull out nearly zero weights or check to make sure weights sum to 1.0, the caller should take care of that if needed.

The blend is done by taking a weighted sum of each atom, and re-normalizing the quaternion part at the end, not using SLERP. This allows n-way blends, and makes the code much faster, though the angular velocity will not be constant across the blend.

Parameters
ResultPoseOutput pose of relative bone transforms.

◆ BlendPosesTogether() [2/4]

void FAnimationRuntime::BlendPosesTogether ( TArrayView< const FCompactPose SourcePoses,
TArrayView< const FBlendedCurve SourceCurves,
TArrayView< const float SourceWeights,
TArrayView< const int32 SourceWeightsIndices,
FCompactPose ResultPose,
FBlendedCurve ResultCurve 
)
static

Blends together a set of poses, each with a given weight. This function is lightweight, it does not cull out nearly zero weights or check to make sure weights sum to 1.0, the caller should take care of that if needed.

The blend is done by taking a weighted sum of each atom, and re-normalizing the quaternion part at the end, not using SLERP. This allows n-way blends, and makes the code much faster, though the angular velocity will not be constant across the blend.

SourceWeightsIndices is used to index SourceWeights, to prevent caller having to supply an ordered weights array

Parameters
ResultPoseOutput pose of relative bone transforms.

◆ BlendPosesTogether() [3/4]

void FAnimationRuntime::BlendPosesTogether ( TArrayView< const FCompactPose SourcePoses,
TArrayView< const FBlendedCurve SourceCurves,
TArrayView< const UE::Anim::FStackAttributeContainer SourceAttributes,
TArrayView< const float SourceWeights,
FAnimationPoseData OutAnimationPoseData 
)
static

◆ BlendPosesTogether() [4/4]

void FAnimationRuntime::BlendPosesTogether ( TArrayView< const FCompactPose SourcePoses,
TArrayView< const FBlendedCurve SourceCurves,
TArrayView< const UE::Anim::FStackAttributeContainer SourceAttributes,
TArrayView< const float SourceWeights,
TArrayView< const int32 SourceWeightsIndices,
FAnimationPoseData OutPoseData 
)
static

◆ BlendPosesTogetherIndirect() [1/2]

static ENGINE_API void FAnimationRuntime::BlendPosesTogetherIndirect ( TArrayView< const FCompactPose *const >  SourcePoses,
TArrayView< const FBlendedCurve *const >  SourceCurves,
TArrayView< const float SourceWeights,
FCompactPose ResultPose,
FBlendedCurve ResultCurve 
)
static

Blends together a set of poses, each with a given weight. This function is lightweight, it does not cull out nearly zero weights or check to make sure weights sum to 1.0, the caller should take care of that if needed.

The blend is done by taking a weighted sum of each atom, and re-normalizing the quaternion part at the end, not using SLERP. This allows n-way blends, and makes the code much faster, though the angular velocity will not be constant across the blend.

Parameters
ResultPoseOutput pose of relative bone transforms.

◆ BlendPosesTogetherIndirect() [2/2]

void FAnimationRuntime::BlendPosesTogetherIndirect ( TArrayView< const FCompactPose *const >  SourcePoses,
TArrayView< const FBlendedCurve *const >  SourceCurves,
TArrayView< const UE::Anim::FStackAttributeContainer *const >  SourceAttributes,
TArrayView< const float SourceWeights,
FAnimationPoseData OutPoseData 
)
static

◆ BlendPosesTogetherPerBone() [1/4]

void FAnimationRuntime::BlendPosesTogetherPerBone ( TArrayView< const FCompactPose SourcePoses,
TArrayView< const FBlendedCurve SourceCurves,
const IInterpolationIndexProvider InterpolationIndexProvider,
TArrayView< const FBlendSampleData BlendSampleDataCache,
FCompactPose ResultPose,
FBlendedCurve ResultCurve 
)
static

Blends together a set of poses, each with a given weight. This function is for BlendSpace per bone blending. BlendSampleDataCache contains the weight information

This blends in local space

Parameters
ResultPoseOutput pose of relative bone transforms.

◆ BlendPosesTogetherPerBone() [2/4]

void FAnimationRuntime::BlendPosesTogetherPerBone ( TArrayView< const FCompactPose SourcePoses,
TArrayView< const FBlendedCurve SourceCurves,
const IInterpolationIndexProvider InterpolationIndexProvider,
TArrayView< const FBlendSampleData BlendSampleDataCache,
TArrayView< const int32 BlendSampleDataCacheIndices,
FCompactPose ResultPose,
FBlendedCurve ResultCurve 
)
static

Blends together a set of poses, each with a given weight. This function is for BlendSpace per bone blending. BlendSampleDataCache contains the weight information and is indexed using BlendSampleDataCacheIndices, to prevent caller having to supply an ordered array

This blends in local space

Parameters
ResultPoseOutput pose of relative bone transforms.

◆ BlendPosesTogetherPerBone() [3/4]

void FAnimationRuntime::BlendPosesTogetherPerBone ( TArrayView< const FCompactPose SourcePoses,
TArrayView< const FBlendedCurve SourceCurves,
TArrayView< const UE::Anim::FStackAttributeContainer SourceAttributes,
const IInterpolationIndexProvider InterpolationIndexProvider,
TArrayView< const FBlendSampleData BlendSampleDataCache,
FAnimationPoseData OutAnimationPoseData 
)
static

◆ BlendPosesTogetherPerBone() [4/4]

void FAnimationRuntime::BlendPosesTogetherPerBone ( TArrayView< const FCompactPose SourcePoses,
TArrayView< const FBlendedCurve SourceCurves,
TArrayView< const UE::Anim::FStackAttributeContainer SourceAttributes,
const IInterpolationIndexProvider InterpolationIndexProvider,
TArrayView< const FBlendSampleData BlendSampleDataCache,
TArrayView< const int32 BlendSampleDataCacheIndices,
FAnimationPoseData OutAnimationPoseData 
)
static

◆ BlendPosesTogetherPerBoneInMeshSpace() [1/2]

void FAnimationRuntime::BlendPosesTogetherPerBoneInMeshSpace ( TArrayView< FCompactPose SourcePoses,
TArrayView< const FBlendedCurve SourceCurves,
const UBlendSpace BlendSpace,
TArrayView< const FBlendSampleData BlendSampleDataCache,
FCompactPose OutResultPose,
FBlendedCurve OutResultCurve 
)
static

Blends together a set of local space (not mesh space) poses, each with a given weight. This function is for BlendSpace per bone blending. BlendSampleDataCache contains the weight information

This blends the rotations in mesh space, so is performance intensive as it requires a conversion from joint rotations into mesh space, then the blend, then a conversion back.

Parameters
OutResultPoseOutput blended pose of relative bone transforms.
OutResultCurveOutput blended curves

◆ BlendPosesTogetherPerBoneInMeshSpace() [2/2]

void FAnimationRuntime::BlendPosesTogetherPerBoneInMeshSpace ( TArrayView< FCompactPose SourcePoses,
TArrayView< const FBlendedCurve SourceCurves,
TArrayView< const UE::Anim::FStackAttributeContainer SourceAttributes,
const UBlendSpace BlendSpace,
TArrayView< const FBlendSampleData BlendSampleDataCache,
FAnimationPoseData OutAnimationPoseData 
)
static

Blends together a set of local space (not mesh space) poses, each with a given weight. This function is for BlendSpace per bone blending. BlendSampleDataCache contains the weight information

This blends the rotations in mesh space, so is performance intensive as it requires a conversion from joint rotations into mesh space, then the blend, then a conversion back.

Parameters
OutAnimationPoseDataOutput pose, curves and attributes.

◆ BlendPosesTogetherPerBoneRemapped()

void FAnimationRuntime::BlendPosesTogetherPerBoneRemapped ( TArrayView< const FCompactPose SourcePoses,
TArrayView< const FBlendedCurve SourceCurves,
TArrayView< const UE::Anim::FStackAttributeContainer SourceAttributes,
const IInterpolationIndexProvider InterpolationIndexProvider,
TArrayView< const FBlendSampleData BlendSampleDataCache,
TArrayView< const int32 BlendSampleDataCacheIndices,
const FSkeletonRemapping SkeletonRemapping,
FAnimationPoseData OutAnimationPoseData 
)
static

◆ BlendTransformsByWeight()

void FAnimationRuntime::BlendTransformsByWeight ( FTransform OutTransform,
const TArray< FTransform > &  Transforms,
const TArray< float > &  Weights 
)
static

Blend Array of Transforms by weight

Parameters
OutTransform: result

◆ BlendTwoPosesTogether() [1/2]

void FAnimationRuntime::BlendTwoPosesTogether ( const FAnimationPoseData SourcePoseOneData,
const FAnimationPoseData SourcePoseTwoData,
const float  WeightOfPoseOne,
FAnimationPoseData OutAnimationPoseData 
)
static

◆ BlendTwoPosesTogether() [2/2]

void FAnimationRuntime::BlendTwoPosesTogether ( const FCompactPose SourcePose1,
const FCompactPose SourcePose2,
const FBlendedCurve SourceCurve1,
const FBlendedCurve SourceCurve2,
const float  WeightOfPose1,
FCompactPose ResultPose,
FBlendedCurve ResultCurve 
)
static

Blends together two poses. This function is lightweight

The blend is done by taking a weighted sum of each atom, and re-normalizing the quaternion part at the end, not using SLERP.

Parameters
ResultPoseOutput pose of relative bone transforms.

◆ BlendTwoPosesTogetherPerBone() [1/3]

void FAnimationRuntime::BlendTwoPosesTogetherPerBone ( const FAnimationPoseData SourcePoseOneData,
const FAnimationPoseData SourcePoseTwoData,
const TArray< float > &  WeightsOfSource2,
FAnimationPoseData OutAnimationPoseData 
)
static

◆ BlendTwoPosesTogetherPerBone() [2/3]

void FAnimationRuntime::BlendTwoPosesTogetherPerBone ( const FCompactPose SourcePose1,
const FCompactPose SourcePose2,
const FBlendedCurve SourceCurve1,
const FBlendedCurve SourceCurve2,
const TArray< float > &  WeightsOfSource2,
FCompactPose ResultPose,
FBlendedCurve ResultCurve 
)
static

Blends together a set of poses, each with a given weight. This function is for BlendSpace per bone blending. BlendSampleDataCache contains the weight information

This blends in local space

Parameters
ResultPoseOutput pose of relative bone transforms.

◆ BlendTwoPosesTogetherPerBone() [3/3]

void FAnimationRuntime::BlendTwoPosesTogetherPerBone ( const FCompactPose SourcePoseOneData,
const FCompactPose SourcePoseTwoData,
const TArray< float > &  WeightsOfSource2,
FCompactPose OutAnimationPoseData 
)
static

◆ CombineWithAdditiveAnimations()

void FAnimationRuntime::CombineWithAdditiveAnimations ( int32  NumAdditivePoses,
const FTransformArrayA2 **  SourceAdditivePoses,
const float SourceAdditiveWeights,
const FBoneContainer RequiredBones,
FTransformArrayA2 Atoms 
)
static

◆ ConvertBoneSpaceTransformToCS()

void FAnimationRuntime::ConvertBoneSpaceTransformToCS ( const FTransform ComponentTransform,
FCSPose< FCompactPose > &  MeshBases,
FTransform InOutBoneSpaceTM,
FCompactPoseBoneIndex  BoneIndex,
EBoneControlSpace  Space 
)
static

Convert a FTransform in a specified bone space to ComponentSpace.

Parameters
ComponentTransformThe transform of the component. Only used if Space == BCS_WorldSpace
MeshBasesThe pose to use when transforming
InOutBoneSpaceTMThe bone transform to convert
BoneIndexThe bone index of the transform
SpaceThe space that the transform is in.

◆ ConvertCSTransformToBoneSpace()

void FAnimationRuntime::ConvertCSTransformToBoneSpace ( const FTransform ComponentTransform,
FCSPose< FCompactPose > &  MeshBases,
FTransform InOutCSBoneTM,
FCompactPoseBoneIndex  BoneIndex,
EBoneControlSpace  Space 
)
static

Convert a ComponentSpace FTransform to specified bone space.

Parameters
ComponentTransformThe transform of the component. Only used if Space == BCS_WorldSpace
MeshBasesThe pose to use when transforming
InOutCSBoneTMThe component space transform to convert
BoneIndexThe bone index of the transform
SpaceThe space to convert the input transform into.

◆ ConvertMeshRotationPoseToLocalSpace()

void FAnimationRuntime::ConvertMeshRotationPoseToLocalSpace ( FCompactPose Pose)
static

Convert a MeshSpaceRotation pose to Local Space. Rotations are NOT normalized.

◆ ConvertPoseToAdditive()

void FAnimationRuntime::ConvertPoseToAdditive ( FCompactPose TargetPose,
const FCompactPose BasePose 
)
static

Convert TargetPose into an AdditivePose, by doing TargetPose = TargetPose - BasePose

◆ ConvertPoseToMeshRotation()

void FAnimationRuntime::ConvertPoseToMeshRotation ( FCompactPose LocalPose)
static

Convert LocalPose into MeshSpaceRotations. Rotations are NOT normalized.

◆ ConvertPoseToMeshSpace()

void FAnimationRuntime::ConvertPoseToMeshSpace ( const TArray< FTransform > &  LocalTransforms,
TArray< FTransform > &  MeshSpaceTransforms,
const FBoneContainer RequiredBones 
)
static

Convert LocalTransforms into MeshSpaceTransforms over RequiredBones.

◆ ConvertTransformToAdditive()

void FAnimationRuntime::ConvertTransformToAdditive ( FTransform TargetTrasnform,
const FTransform BaseTransform 
)
static

convert transform to additive

◆ CreateMaskWeights() [1/2]

void FAnimationRuntime::CreateMaskWeights ( TArray< FPerBoneBlendWeight > &  BoneBlendWeights,
const TArray< class UBlendProfile * > &  BlendMasks,
const USkeleton Skeleton 
)
static

Create Mask Weight for skeleton joints, not per mesh or per required bones Individual alphas are read from a BlendProfile using a BlendMask mode

◆ CreateMaskWeights() [2/2]

void FAnimationRuntime::CreateMaskWeights ( TArray< FPerBoneBlendWeight > &  BoneBlendWeights,
const TArray< FInputBlendPose > &  BlendFilters,
const USkeleton Skeleton 
)
static

Create Mask Weight for skeleton joints, not per mesh or per required bones You'll have to filter properly with correct mesh joint or required bones The depth should not change based on LOD or mesh or skeleton They still should contain same depth

◆ EnsureParentsPresent()

void FAnimationRuntime::EnsureParentsPresent ( TArray< FBoneIndexType > &  BoneIndices,
const FReferenceSkeleton RefSkeleton 
)
static

Utility for taking an array of bone indices and ensuring that all parents are present (ie. all bones between those in the array and the root are present). Note that this must ensure the invariant that parent occur before children in BoneIndices.

◆ ExcludeBonesWithNoParents()

void FAnimationRuntime::ExcludeBonesWithNoParents ( const TArray< int32 > &  BoneIndices,
const FReferenceSkeleton RefSkeleton,
TArray< int32 > &  FilteredRequiredBones 
)
static

◆ FillUpComponentSpaceTransforms()

void FAnimationRuntime::FillUpComponentSpaceTransforms ( const FReferenceSkeleton RefSkeleton,
const TArrayView< const FTransform > &  BoneSpaceTransforms,
TArray< FTransform > &  ComponentSpaceTransforms 
)
static

◆ FillWithRefPose()

void FAnimationRuntime::FillWithRefPose ( TArray< FTransform > &  OutAtoms,
const FBoneContainer RequiredBones 
)
static

Fill ref pose

◆ GetBoneTranslationRetargetingMode()

EBoneTranslationRetargetingMode::Type FAnimationRuntime::GetBoneTranslationRetargetingMode ( const bool  bUseSourceRetargetModes,
const int32  SourceSkeletonBoneIndex,
const int32  TargetSkeletonBoneIndex,
const USkeleton SourceSkeleton,
const USkeleton TargetSkeleton,
const bool  bDisableRetargeting 
)
static

Get the translational retargeting mode for a given bone on the target skeleton when sampling a given source animation. If bUseSourceRetargetModes is set to true, and SourceSkeletonBoneIndex is INDEX_NONE, then the target bone and target skeleton are used instead. If bUseSourceRetargetModes is set to false, the SourceSkeleton and SourceSkeletonBoneIndex values are ignored and we get the retarget mode directly from the target skeleton using the target bone index.

Parameters
bUseSourceRetargetModesSet to true when you wish to extract the retarget mode from the source skeleton instead of the target skeleton.
SourceSkeletonBoneIndexThe skeleton bone index of the bone on the source skeleton to get the retarget mode from.
TargetSkeletonBoneIndexThe target bone index of the bone on the target skeleton to get the retarget mode from.
SourceSkeletonA pointer to the skeleton of the source (the animation's skeleton for example).
TargetSkeletonA pointer to the target skeleton, which is the skeleton to apply transforms to.
bDisableRetargetingIs translational retargeting disabled?
Returns
The retargeting mode for the specific bone.

◆ GetComponentSpaceRefPose()

FTransform FAnimationRuntime::GetComponentSpaceRefPose ( const FCompactPoseBoneIndex CompactPoseBoneIndex,
const FBoneContainer BoneContainer 
)
static

Get Reference Component Space Transform

◆ GetComponentSpaceTransform()

FTransform FAnimationRuntime::GetComponentSpaceTransform ( const FReferenceSkeleton RefSkeleton,
const TArrayView< const FTransform > &  BoneSpaceTransforms,
int32  BoneIndex 
)
static

◆ GetComponentSpaceTransformRefPose()

FTransform FAnimationRuntime::GetComponentSpaceTransformRefPose ( const FReferenceSkeleton RefSkeleton,
int32  BoneIndex 
)
static

◆ GetComponentSpaceTransformWithCache()

const FTransform & FAnimationRuntime::GetComponentSpaceTransformWithCache ( const FReferenceSkeleton InRefSkeleton,
const TArray< FTransform > &  InBoneSpaceTransforms,
int32  BoneIndex,
TArray< FTransform > &  CachedTransforms,
TArray< bool > &  CachedTransformReady 
)
static

Calculate the component-space bone transform for the specified bone. This is similar to GetComponentSpaceTransform(), but uses a cached array of transforms to prevent re-calculations when requesting transforms for multiple bones with shared parents. This is only likely to be more efficient than FillUpComponentSpaceTransforms if you only need a relatively small number of bone transforms.

Parameters
InRefSkeletonThe bone hierarchy
InBoneSpaceTransformsBone-space transforms for all bones in the hierarchy
BoneIndexWe calculate the component-space transform of this bone
CachedTransformsAn array of transforms which holds the transforms of any bones whose transforms have been previously calculated. Should be initialized with CachedTransforms.SetNumUninitialized(BoneSpaceTransforms.Num()) before first use.
CachedTransformReadyAn array of flags indicating which bone transforms have been cached. Should be initialized with CachedTransformReady.SetNumZeroed(BoneSpaceTransforms.Num()) before first use.

◆ GetKeyIndicesFromTime() [1/2]

void FAnimationRuntime::GetKeyIndicesFromTime ( int32 OutKeyIndex1,
int32 OutKeyIndex2,
float OutAlpha,
const double  Time,
const FFrameRate FrameRate,
const int32  NumberOfKeys 
)
static

Get KeyIndices using FFrameRate::AsFrameTime to calculate the keys and alpha value

◆ GetKeyIndicesFromTime() [2/2]

void FAnimationRuntime::GetKeyIndicesFromTime ( int32 OutKeyIndex1,
int32 OutKeyIndex2,
float OutAlpha,
const double  Time,
const int32  NumKeys,
const double  SequenceLength,
double  FramesPerSecond = -1.0 
)
static

Get Key Indices (start/end with alpha from start) with input parameter Time, NumKeys from % from StartKeyIndex, meaning (CurrentKeyIndex(float)-StartKeyIndex)/(EndKeyIndex-StartKeyIndex) by this Start-End, it will be between 0-(NumKeys-1), not number of Pos/Rot key tracks The FramesPerSecond parameter must be the sample rate of the animation data, for example 30. If the FramesPerSecond parameter is set to 0 or negative, it will automatically calculate the FramesPerSecond based on the sequence length and number of frames. The reason why you can provide a FramesPerSecond value is because this can be slightly more accurate than calculating it, in case super high precision is needed.

◆ GetSpaceTransform() [1/2]

FTransform FAnimationRuntime::GetSpaceTransform ( FA2CSPose Pose,
int32  Index 
)
static

◆ GetSpaceTransform() [2/2]

FTransform FAnimationRuntime::GetSpaceTransform ( FA2Pose Pose,
int32  Index 
)
static

Pose conversion functions.

◆ GetStringDistance()

int32 FAnimationRuntime::GetStringDistance ( const FString &  First,
const FString &  Second 
)
static

Calculate distance how close two strings are. By close, it calculates how many operations to transform First to Second The return value is [0-MaxLengthString(First, Second)] 0 means it's identical, Max means it's completely different

◆ HasWeight()

static bool FAnimationRuntime::HasWeight ( float  Weight)
inlinestatic

◆ InitializeTransform()

void FAnimationRuntime::InitializeTransform ( const FBoneContainer RequiredBones,
FTransformArrayA2 Atoms 
)
static

◆ IsFullWeight()

static bool FAnimationRuntime::IsFullWeight ( float  Weight)
inlinestatic

◆ LerpBoneTransforms()

void FAnimationRuntime::LerpBoneTransforms ( TArray< FTransform > &  A,
const TArray< FTransform > &  B,
float  Alpha,
const TArray< FBoneIndexType > &  RequiredBonesArray 
)
static

Lerp for BoneTransforms. Stores results in A. Performs A = Lerp(A, B, Alpha);

Parameters
A: In/Out transform array.
B: B In transform array.
Alpha: Alpha.
RequiredBonesArray: Array of bone indices.

◆ LerpPoses()

void FAnimationRuntime::LerpPoses ( FCompactPose PoseA,
const FCompactPose PoseB,
FBlendedCurve CurveA,
const FBlendedCurve CurveB,
float  Alpha 
)
static

Lerp for FCompactPose. Stores results in PoseA. Performs PoseA = Lerp(PoseA, PoseB, Alpha);

◆ LerpPosesPerBone()

void FAnimationRuntime::LerpPosesPerBone ( FCompactPose PoseA,
const FCompactPose PoseB,
FBlendedCurve CurveA,
const FBlendedCurve CurveB,
float  Alpha,
const TArray< float > &  PerBoneWeights 
)
static

Lerp for FCompactPose. Stores results in PoseA. For each bone performs BoneA[i] = Lerp(BoneA[i], BoneB[i], Alpha * PerBoneWeights[i]);

◆ LerpPosesWithBoneIndexList()

void FAnimationRuntime::LerpPosesWithBoneIndexList ( FCompactPose PoseA,
const FCompactPose PoseB,
FBlendedCurve CurveA,
const FBlendedCurve CurveB,
float  Alpha,
const TArray< FCompactPoseBoneIndex > &  BoneIndices 
)
static

Lerp for FCompactPose. Stores results in PoseA. Performs PoseA = Lerp(PoseA, PoseB, Alpha); on reduced set of bones defined in BoneIndices list.

◆ MakeSkeletonRefPoseFromMesh()

void FAnimationRuntime::MakeSkeletonRefPoseFromMesh ( const USkeletalMesh InMesh,
const USkeleton InSkeleton,
TArray< FTransform > &  OutBoneBuffer 
)
static

◆ MirrorCurves()

void FAnimationRuntime::MirrorCurves ( FBlendedCurve Curves,
const UMirrorDataTable MirrorDataTable 
)
static

Mirror (swap) curves with the specified MirrorDataTable. Partial mirroring is supported, and curves with two entries (Right->Left and Left->Right) will be swapped while curves with a single entry will be overwritten

Parameters
CurvesThe Curves which are swapped
MirrorDataTableA UMirrorDataTable specifying which curves to swap

◆ MirrorPose() [1/2]

void FAnimationRuntime::MirrorPose ( FCompactPose Pose,
const UMirrorDataTable MirrorDataTable 
)
static

Mirror a pose with the specified MirrorDataTable.
This method computes the required compact mirror pose and component space reference rotations each call and should not be used for repeated calculations

Parameters
PoseThe pose which is mirrored in place
MirrorDataTableA UMirrorDataTable for the same Skeleton as the Pose

◆ MirrorPose() [2/2]

void FAnimationRuntime::MirrorPose ( FCompactPose Pose,
EAxis::Type  MirrorAxis,
const TArray< FCompactPoseBoneIndex > &  CompactPoseMirrorBones,
const TCustomBoneIndexArray< FQuat, FCompactPoseBoneIndex > &  ComponentSpaceRefRotations 
)
static

Mirror Pose using cached mirror bones and components space arrays.

Parameters
PoseThe pose which is mirrored in place
MirrorAxisThe axis that all bones are mirrored across
CompactPoseMirrorBonesCompact array of bone indices. Each index contains the bone to mirror or -1 to indicate mirroring should not apply to that bone.
ComponentSpaceRefRotationsCompoenent space rotations of the reference pose for each bone.

◆ MirrorQuat()

FQuat FAnimationRuntime::MirrorQuat ( const FQuat Q,
EAxis::Type  MirrorAxis 
)
static

Mirror a quaternion across the specified mirror axis

Parameters
QThe quaternion to mirror
MirrorAxisThe axis to mirror across
Returns
The quaternion mirrored across the specified axis

◆ MirrorVector()

FVector FAnimationRuntime::MirrorVector ( const FVector V,
EAxis::Type  MirrorAxis 
)
static

Mirror a vector across the specified mirror axis

Parameters
VThe vector to mirror
MirrorAxisThe axis to mirror across
Returns
The vector mirrored across the specified axis

◆ NormalizeRotations() [1/2]

void FAnimationRuntime::NormalizeRotations ( const FBoneContainer RequiredBones,
FTransformArrayA2 Atoms 
)
static

◆ NormalizeRotations() [2/2]

void FAnimationRuntime::NormalizeRotations ( FTransformArrayA2 Atoms)
static

◆ RetargetBoneTransform() [1/2]

void FAnimationRuntime::RetargetBoneTransform ( const USkeleton MySkeleton,
const FName SourceName,
const TArray< FTransform > &  RetargetTransforms,
FTransform BoneTransform,
const int32  SkeletonBoneIndex,
const FCompactPoseBoneIndex BoneIndex,
const FBoneContainer RequiredBones,
const bool  bIsBakedAdditive 
)
static

◆ RetargetBoneTransform() [2/2]

void FAnimationRuntime::RetargetBoneTransform ( const USkeleton SourceSkeleton,
const FName RetargetSource,
FTransform BoneTransform,
const int32  SkeletonBoneIndex,
const FCompactPoseBoneIndex BoneIndex,
const FBoneContainer RequiredBones,
const bool  bIsBakedAdditive 
)
static

Retarget a single bone transform, to apply right after extraction.

Parameters
SourceSkeletonSkeleton from which this is retargeting
RetargetSourceRetarget Source for the retargeting
BoneTransformBoneTransform to read/write from
SkeletonBoneIndexSource Bone Index in SourceSkeleton
BoneIndexTarget Bone Index in Bone Transform array
RequiredBonesBoneContainer to which this is retargeting

◆ SetSpaceTransform() [1/2]

void FAnimationRuntime::SetSpaceTransform ( FA2CSPose Pose,
int32  Index,
FTransform NewTransform 
)
static

◆ SetSpaceTransform() [2/2]

void FAnimationRuntime::SetSpaceTransform ( FA2Pose Pose,
int32  Index,
FTransform NewTransform 
)
static

◆ TickBlendWeight()

void FAnimationRuntime::TickBlendWeight ( float  DeltaTime,
float  DesiredWeight,
float Weight,
float BlendTime 
)
static

◆ UpdateDesiredBoneWeight()

void FAnimationRuntime::UpdateDesiredBoneWeight ( const TArrayView< FPerBoneBlendWeight SrcBoneBlendWeights,
TArrayView< FPerBoneBlendWeight TargetBoneBlendWeights,
const TArrayView< float BlendWeights 
)
static

The documentation for this class was generated from the following files: