UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
FCSPose< PoseType > Struct Template Reference

#include <BonePose.h>

Public Types

typedef PoseType::BoneIndexType BoneIndexType
 
typedef PoseType::Allocator AllocatorType
 

Public Member Functions

PRAGMA_DISABLE_DEPRECATION_WARNINGS FCSPose ()=default
 
 ~FCSPose ()=default
 
 FCSPose (const FCSPose &Other)=default
 
 FCSPose (FCSPose &&Other)=default
 
FCSPoseoperator= (const FCSPose &Other)=default
 
FCSPoseoperator= (FCSPose &&Other)=default
 
PRAGMA_ENABLE_DEPRECATION_WARNINGS void InitPose (const FBoneContainer *InBoneContainer)
 
void InitPose (const PoseType &SrcPose)
 
void InitPose (PoseType &&SrcPose)
 
template<typename OtherPoseType >
void CopyPose (const OtherPoseType &SrcPose)
 
void CopyAndAssignBoneContainer (FBoneContainer &NewBoneContainer)
 
void Empty ()
 
const PoseTypeGetPose () const
 
const TCustomBoneIndexArray< uint8, BoneIndexType, AllocatorType > & GetComponentSpaceFlags () const
 
FTransform GetLocalSpaceTransform (BoneIndexType BoneIndex)
 
const FTransformGetComponentSpaceTransform (BoneIndexType BoneIndex)
 
void SetComponentSpaceTransform (BoneIndexType BoneIndex, const FTransform &NewTransform)
 
void CalculateComponentSpaceTransform (BoneIndexType BoneIndex)
 
void ConvertBoneToLocalSpace (BoneIndexType BoneIndex)
 
void SafeSetCSBoneTransforms (TConstArrayView< FBoneTransform > BoneTransforms)
 
void LocalBlendCSBoneTransforms (TConstArrayView< FBoneTransform > BoneTransforms, float Alpha)
 

Static Public Member Functions

static void ConvertComponentPosesToLocalPoses (FCSPose< PoseType > &&InPose, PoseType &OutPose)
 
static void ConvertComponentPosesToLocalPoses (const FCSPose< PoseType > &InPose, PoseType &OutPose)
 
static void ConvertComponentPosesToLocalPosesSafe (FCSPose< PoseType > &InPose, PoseType &OutPose)
 

Protected Attributes

PoseType Pose
 
TCustomBoneIndexArray< uint8, BoneIndexType, AllocatorTypeComponentSpaceFlags
 
TCustomBoneIndexArray< uint8, BoneIndexType, AllocatorTypeBoneMask
 
TArray< FCompactPoseBoneIndex, AllocatorTypeBonesToConvert
 

Member Typedef Documentation

◆ AllocatorType

template<class PoseType >
typedef PoseType::Allocator FCSPose< PoseType >::AllocatorType

◆ BoneIndexType

template<class PoseType >
typedef PoseType::BoneIndexType FCSPose< PoseType >::BoneIndexType

Constructor & Destructor Documentation

◆ FCSPose() [1/3]

◆ ~FCSPose()

template<class PoseType >
FCSPose< PoseType >::~FCSPose ( )
default

◆ FCSPose() [2/3]

template<class PoseType >
FCSPose< PoseType >::FCSPose ( const FCSPose< PoseType > &  Other)
default

◆ FCSPose() [3/3]

template<class PoseType >
FCSPose< PoseType >::FCSPose ( FCSPose< PoseType > &&  Other)
default

Member Function Documentation

◆ CalculateComponentSpaceTransform()

template<class PoseType >
void FCSPose< PoseType >::CalculateComponentSpaceTransform ( BoneIndexType  BoneIndex)

◆ ConvertBoneToLocalSpace()

template<class PoseType >
void FCSPose< PoseType >::ConvertBoneToLocalSpace ( BoneIndexType  BoneIndex)

Convert Bone to Local Space.

◆ ConvertComponentPosesToLocalPoses() [1/2]

template<class PoseType >
void FCSPose< PoseType >::ConvertComponentPosesToLocalPoses ( const FCSPose< PoseType > &  InPose,
PoseType OutPose 
)
inlinestatic

This function convert component space to local space to OutPose

This has been optimized with an assumption of all parents are calculated in component space for those who have been converted to component space

If a part of chain hasn't been converted, it will trigger ensure.

◆ ConvertComponentPosesToLocalPoses() [2/2]

template<class PoseType >
void FCSPose< PoseType >::ConvertComponentPosesToLocalPoses ( FCSPose< PoseType > &&  InPose,
PoseType OutPose 
)
inlinestatic

This function convert component space to local space to OutPose

This has been optimized with an assumption of all parents are calculated in component space for those who have been converted to component space After this function, accessing InPose.Pose won't be valid anymore because of Move semantics

If a part of chain hasn't been converted, it will trigger ensure.

◆ ConvertComponentPosesToLocalPosesSafe()

template<class PoseType >
void FCSPose< PoseType >::ConvertComponentPosesToLocalPosesSafe ( FCSPose< PoseType > &  InPose,
PoseType OutPose 
)
inlinestatic

This function convert component space to local space to OutPose

Contrast to ConvertComponentPosesToLocalPoses, this allows some parts of chain to stay in local space before conversion And it will calculate back to component space correctly before converting back to new local space This is issue when child is in component space, but the parent is not. Then we have to convert parents to be in the component space before converting back to local

However it is more expensive as a result.

◆ CopyAndAssignBoneContainer()

template<class PoseType >
void FCSPose< PoseType >::CopyAndAssignBoneContainer ( FBoneContainer NewBoneContainer)
inline

◆ CopyPose()

template<class PoseType >
template<typename OtherPoseType >
void FCSPose< PoseType >::CopyPose ( const OtherPoseType SrcPose)
inline

◆ Empty()

template<class PoseType >
void FCSPose< PoseType >::Empty ( )
inline

◆ GetComponentSpaceFlags()

template<class PoseType >
const TCustomBoneIndexArray< uint8, BoneIndexType, AllocatorType > & FCSPose< PoseType >::GetComponentSpaceFlags ( ) const
inline

◆ GetComponentSpaceTransform()

template<class PoseType >
const FTransform & FCSPose< PoseType >::GetComponentSpaceTransform ( BoneIndexType  BoneIndex)

◆ GetLocalSpaceTransform()

template<class PoseType >
FTransform FCSPose< PoseType >::GetLocalSpaceTransform ( BoneIndexType  BoneIndex)

◆ GetPose()

template<class PoseType >
const PoseType & FCSPose< PoseType >::GetPose ( ) const
inline

◆ InitPose() [1/3]

template<class PoseType >
PRAGMA_ENABLE_DEPRECATION_WARNINGS void FCSPose< PoseType >::InitPose ( const FBoneContainer InBoneContainer)
inline

◆ InitPose() [2/3]

template<class PoseType >
void FCSPose< PoseType >::InitPose ( const PoseType SrcPose)
inline

◆ InitPose() [3/3]

template<class PoseType >
void FCSPose< PoseType >::InitPose ( PoseType &&  SrcPose)
inline

◆ LocalBlendCSBoneTransforms()

template<class PoseType >
void FCSPose< PoseType >::LocalBlendCSBoneTransforms ( TConstArrayView< FBoneTransform BoneTransforms,
float  Alpha 
)
inline

Blends Component Space transforms to MeshPose in Local Space. Used by SkelControls to apply their transforms.

The tricky bit is that SkelControls deliver their transforms in Component Space, But the blending is done in Local Space. Also we need to refresh any Children they have that has been previously converted to Component Space.

◆ operator=() [1/2]

template<class PoseType >
FCSPose & FCSPose< PoseType >::operator= ( const FCSPose< PoseType > &  Other)
default

◆ operator=() [2/2]

template<class PoseType >
FCSPose & FCSPose< PoseType >::operator= ( FCSPose< PoseType > &&  Other)
default

◆ SafeSetCSBoneTransforms()

template<class PoseType >
void FCSPose< PoseType >::SafeSetCSBoneTransforms ( TConstArrayView< FBoneTransform BoneTransforms)

Set a bunch of Component Space Bone Transforms. Do this safely by insuring that Parents are already in Component Space, and any Component Space children are converted back to Local Space before hand.

◆ SetComponentSpaceTransform()

template<class PoseType >
void FCSPose< PoseType >::SetComponentSpaceTransform ( BoneIndexType  BoneIndex,
const FTransform NewTransform 
)

Member Data Documentation

◆ BoneMask

template<class PoseType >
TCustomBoneIndexArray<uint8, BoneIndexType, AllocatorType> FCSPose< PoseType >::BoneMask
protected

◆ BonesToConvert

template<class PoseType >
TArray<FCompactPoseBoneIndex, AllocatorType> FCSPose< PoseType >::BonesToConvert
protected

◆ ComponentSpaceFlags

template<class PoseType >
TCustomBoneIndexArray<uint8, BoneIndexType, AllocatorType> FCSPose< PoseType >::ComponentSpaceFlags
protected

◆ Pose

template<class PoseType >
PoseType FCSPose< PoseType >::Pose
protected

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