Navigation
API > API/Runtime > API/Runtime/Engine > API/Runtime/Engine/Animation
Inheritance Hierarchy
- UObjectBase
- UObjectBaseUtility
- UObject
- USkeleton
References
| Module | Engine |
| Header | /Engine/Source/Runtime/Engine/Classes/Animation/Skeleton.h |
| Include | #include "Animation/Skeleton.h" |
Syntax
class USkeleton :
public UObject,
public IInterface_AssetUserData,
public IInterface_PreviewMeshProvider
Remarks
USkeleton : that links between mesh and animation
- Bone hierarchy for animations
- Bone/track linkup between mesh and animation
- Retargetting related
Variables
| Type | Name | Description | |
|---|---|---|---|
| TArray< FName > | AnimationNotifies | AnimNotifiers that has been created. | |
| TMap< FName, FReferencePose > | AnimRetargetSources | Serializable retarget sources for this skeleton | |
| TArray< TObjectPtr< UAssetUserData > > | AssetUserData | Array of user data stored with the asset | |
| TArray< TObjectPtr< UBlendProfile > > | BlendProfiles | List of blend profiles available in this skeleton | |
| TArray< struct FBoneNode > | BoneTree | Skeleton bone tree - each contains name and parent index | |
| TSoftObjectPtr< USkeleton > | CachedSoftObjectPtr | A cached soft object pointer of this skeleton. | |
| TArray< TSoftObjectPtr< USkeleton > > | CompatibleSkeletons | The list of compatible skeletons. | |
| TArray< FName > | ExistingMarkerNames | Cached marker sync marker names (stripped for non editor) | |
| FGuid | Guid | Guid for skeleton | |
| TArray< struct FSkeletonToMeshLinkup > | LinkupCache | Non-serialised cache of linkups between different skeletal meshes and this Skeleton. | |
| FCriticalSection | LinkupCacheLock | Use this Lock everytime you change or access LinkupCache and SkelMesh2LinkupCache member. | |
| FOnSkeletonHierarchyChangedMulticaster | OnSkeletonHierarchyChanged | ||
| FPreviewAssetAttachContainer | PreviewAttachedAssetContainer | Attached assets component for this skeleton | |
| FReferenceSkeleton | ReferenceSkeleton | Reference Skeleton | |
| TArray< TObjectPtr< class USkeletalMeshSocket > > | Sockets | Array of named socket locations, set up in editor and used as a shortcut instead of specifying everything explicitly to AttachComponent in the SkeletalMeshComponent. | |
| FGuid | VirtualBoneGuid | Guid for virtual bones. | |
| TArray< FVirtualBone > | VirtualBones | Array of this skeletons virtual bones. |
Constructors
| Type | Name | Description | |
|---|---|---|---|
USkeleton
(
const FObjectInitializer& ObjectInitializer |
Functions
| Type | Name | Description | |
|---|---|---|---|
| void | AccumulateCurveMetaData
(
FName CurveName, |
This is called when you know both flags - called by post serialize and import | |
| void | AddCompatibleSkeleton
(
const USkeleton* SourceSkeleton |
||
| void | AddCompatibleSkeletonSoft
(
const TSoftObjectPtr< USkeleton >& SourceSkeleton |
||
| bool | AddCurveMetaData
(
FName CurveName |
Adds a curve metadata entry with the specified name | |
| void | AddNewAnimationNotify
(
FName NewAnimNotifyName |
Adds a new anim notify to the cached AnimationNotifies array. | |
| bool | AddNewVirtualBone
(
const FName SourceBoneName, |
||
| bool | AddNewVirtualBone
(
const FName SourceBoneName, |
||
| bool | AddSlotGroupName
(
const FName& InNewGroupName |
Returns true if Group is added, false if it already exists | |
| int32 | BuildLinkup
(
const USkinnedAsset* InSkinnedAsset |
Build Look up between SkinnedAsset to BoneTree | |
| void | |||
| void | Clears all cache data | ||
| void | Collect animation notifies that are referenced in all animations that use this skeleton (uses the asset registry). | ||
| void | CollectAnimationNotifies
(
TArray< FName >& OutNotifies |
Collect animation notifies that are referenced in all animations that use this skeleton (uses the asset registry). | |
| bool | ContainsSlotName
(
const FName& InSlotName |
||
| void | Conversion function. | ||
| UBlendProfile * | CreateNewBlendProfile
(
const FName& InProfileName |
Create a new blend profile with the specified name | |
| bool | CreateReferenceSkeletonFromMesh
(
const USkinnedAsset* InSkinnedAsset, |
Create Reference Skeleton From the given Mesh | |
| bool | DoesParentChainMatch
(
int32 StartBoneTreeIndex, |
Check if Parent Chain Matches between BoneTree, and SkinnedAsset Meaning if BoneTree has A->B->C (top to bottom) and if SkinnedAsset has A->C It will fail since it's missing B We ensure this chain matches to play animation properly | |
| FAnimSlotGroup * | FindAnimSlotGroup
(
const FName& InGroupName |
||
| const FAnimSlotGroup * | FindAnimSlotGroup
(
const FName& InGroupName |
||
| USkeletalMesh * | Find the first compatible mesh for this skeleton | ||
| int32 | FindRigBoneMapping
(
const FName& NodeName |
||
| USkeletalMeshSocket * | FindSocket
(
FName InSocketName |
||
| USkeletalMeshSocket * | FindSocketAndIndex
(
FName InSocketName, |
||
| void | ForEachCurveMetaData
(
TFunctionRef< void(FName, const FCurveMetaData&)> InFunction |
Iterate over all curve metadata entries, calling InFunction on each | |
| UDataAsset * | Get the additional skeletal meshes we use when previewing this skeleton | ||
| uint16 | Return version of AnimCurveUidVersion | ||
| USkeletalMesh * | GetAssetPreviewMesh
(
UObject* InAsset |
||
| UBlendProfile * | GetBlendProfile
(
const FName& InProfileName |
Get the specified blend profile by name | |
| EBoneTranslationRetargetingMode::Type | GetBoneTranslationRetargetingMode
(
const int32 BoneTreeIdx, |
||
| int32 | GetChildBones
(
int32 ParentBoneIndex, |
Get List of Child Bones of the ParentBoneIndex | |
| void | GetCompatibleAssets
(
UClass* AssetClass, |
Get compatible assets given the asset's class and skeleton tag. | |
| void | GetCompatibleSkeletonAssets
(
TArray< FAssetData >& OutAssets |
Get all skeleton assets that are compatible with this skeleton (not just the internal list, but also reciprocally and implicitly compatible skeletons) | |
| const TArray< TSoftObjectPtr< USkeleton > > & | |||
| FCurveMetaData * | GetCurveMetaData
(
FName CurveName |
||
| const FCurveMetaData * | GetCurveMetaData
(
FName CurveName |
||
| void | GetCurveMetaDataNames
(
TArray< FName >& OutNames |
Get an array of all curve metadata names | |
| const TArray< FName > & | Get existing (seen) sync marker names for this Skeleton. | ||
| const FGuid | GetGuid () |
||
| int32 | GetMappedValidNodes
(
TArray< FName >& OutValidNodeNames |
This make sure it stays within the valid range | |
| int32 | GetMeshBoneIndexFromSkeletonBoneIndex
(
const USkinnedAsset* InSkinnedAsset, |
Get Reference Bone Index from Bone Tree Index | |
| int32 | GetMeshLinkupIndex
(
const USkinnedAsset* InSkinnedAsset |
Find a mesh linkup table (mapping of skeleton bone tree indices to refpose indices) for a particular SkinnedAsset If one does not already exist, create it now. | |
| int32 | |||
| const FReferenceSkeleton & | Accessor to Reference Skeleton to make data read only | ||
| const TArray< FTransform > & | GetRefLocalPoses
(
FName RetargetSource |
Get the local-space ref pose for the specified retarget source. | |
| FName | GetRetargetSourceForMesh
(
USkinnedAsset* InSkinnedAsset |
Find a retarget source for a particular mesh. | |
| void | GetRetargetSources
(
TArray< FName >& OutRetargetSources |
Get all the retarget source names for this skeleton. | |
| URig * | GetRig () |
||
| FName | GetRigBoneMapping
(
const FName& NodeName |
||
| FName | GetRigNodeNameFromBoneName
(
const FName& BoneName |
||
| int32 | GetSkeletonBoneIndexFromMeshBoneIndex
(
const USkinnedAsset* InSkinnedAsset, |
Get Bone Tree Index from Reference Bone Index | |
| FName | GetSlotGroupName
(
const FName& InSlotName |
||
| const TArray< FAnimSlotGroup > & | |||
| FGuid | |||
| const TArray< FVirtualBone > & | Accessor for the array of virtual bones on this skeleton | ||
| void | Call this when the skeleton has changed to fix dependent assets | ||
| void | |||
| bool | IsCompatibleForEditor
(
const FString& SkeletonAssetString |
Check if this skeleton is compatible with another skeleton asset that is identified by the string returned by AssetData(SkeletonPtr).GetExportTextName(). | |
| bool | IsCompatibleForEditor
(
const USkeleton* InSkeleton |
Check if animation content authored on the supplied skeleton may be played on this skeleton. | |
| bool | IsCompatibleForEditor
(
const FAssetData& AssetData, |
Check if this skeleton is compatible with a given other asset, if that is a skeleton. | |
| bool | IsCompatibleMesh
(
const USkinnedAsset* InSkinnedAsset, |
Indexing naming convention | |
| void | Load any additional meshes we may have | ||
| bool | MergeAllBonesToBoneTree
(
const USkinnedAsset* InSkinnedAsset |
Merge all Bones to BoneTrees if not exists | |
| bool | MergeBonesToBoneTree
(
const USkinnedAsset* InSkinnedAsset, |
Merge Bones (RequiredBones from InSkinnedAsset) to BoneTrees if not exists | |
| void | RebuildLinkup
(
const USkinnedAsset* InSkinnedAsset |
Rebuild Look up between SkelMesh to BoneTree - this should only get called when SkelMesh is re-imported or so, where the mapping may be no longer valid | |
| bool | RecreateBoneTree
(
USkinnedAsset* InSkinnedAsset |
Merge has failed, then Recreate BoneTree | |
| void | Refresh All Retarget Sources | ||
| void | Verify if it has all latest data | ||
| void | RegisterMarkerName
(
FName MarkerName |
Register a new sync marker name. | |
| FDelegateHandle | RegisterOnRetargetSourceChanged
(
const FOnRetargetSourceChanged& Delegate |
Registers a delegate to be called after the preview animation has been changed | |
| void | RegisterOnSkeletonHierarchyChanged
(
const FOnSkeletonHierarchyChanged& Delegate |
Registers a delegate to be called after notification has changed | |
| bool | RegisterSlotNode
(
const FName& InSlotName |
Register a slot name. Return true if a slot was registered, false if it was already registered. | |
| void | RemoveAnimationNotify
(
FName AnimNotifyName |
Removes an anim notify from the cached AnimationNotifies array. | |
| void | RemoveBonesFromSkeleton
(
const TArray< FName >& BonesToRemove, |
Removes the supplied bones from the skeleton | |
| void | RemoveCompatibleSkeleton
(
const USkeleton* SourceSkeleton |
||
| void | RemoveCompatibleSkeleton
(
const TSoftObjectPtr< USkeleton >& SourceSkeleton |
||
| bool | RemoveCurveMetaData
(
FName CurveName |
Removes a curve metadata entry for the specified name. | |
| bool | RemoveCurveMetaData
(
TArrayView< FName > CurveNames |
Removes a group of curve metadata entries for the specified names. | |
| void | RemoveLinkup
(
const USkinnedAsset* InSkinnedAsset |
Remove Link up cache for the SkelMesh | |
| bool | RemoveMarkerName
(
FName MarkerName |
Remove a sync marker name. | |
| void | RemoveSlotGroup
(
const FName& InSlotName |
||
| void | RemoveSlotName
(
const FName& InSlotName |
Edits/removes slot group data WARNING: Does not verify that the names aren't used anywhere - if it isn't checked by the caller the names will be recreated when referencing assets load again. | |
| void | RemoveVirtualBones
(
const TArray< FName >& BonesToRemove |
||
| void | RenameAnimationNotify
(
FName OldAnimNotifyName, |
Renames an anim notify. | |
| bool | RenameCurveMetaData
(
FName OldName, |
Renames a curve metadata entry. Metadata is preserved, but assigned to a different curve name. | |
| bool | RenameMarkerName
(
FName InOldName, |
Rename a sync marker name. | |
| void | RenameSlotName
(
const FName& OldName, |
||
| void | RenameVirtualBone
(
const FName OriginalBoneName, |
||
| void | SetAdditionalPreviewSkeletalMeshes
(
UDataAsset* InPreviewCollectionAsset |
Set the additional skeletal meshes we use when previewing this skeleton | |
| void | SetBoneTranslationRetargetingMode
(
const int32 BoneIndex, |
||
| bool | SetRigBoneMapping
(
const FName& NodeName, |
||
| void | SetRigConfig
(
URig* Rig |
||
| void | SetSlotGroupName
(
const FName& InSlotName, |
||
| bool | ShouldFilterAsset
(
const FAssetData& InAssetData, |
Wrapper for !IsCompatibleForEditor, used as a convenience function for binding to FOnShouldFilterAsset in asset pickers. | |
| void | UnregisterOnRetargetSourceChanged
(
FDelegateHandle Handle |
Unregisters a delegate to be called after the preview animation has been changed | |
| void | UnregisterOnSkeletonHierarchyChanged
(
void* Unregister |
||
| void | UpdateReferencePoseFromMesh
(
const USkinnedAsset* InSkinnedAsset |
Create RefLocalPoses from InSkinnedAsset. | |
| void | UpdateRetargetSource
(
const FName InName |
Update Retarget Source with given name | |
| int32 | Makes sure all attached objects are valid and removes any that aren't. |
Overridden from UObject
| Type | Name | Description | |
|---|---|---|---|
| void | BeginDestroy () |
Called before destroying the object. | |
| bool | Called during async load to determine if PostLoad can be called on the loading thread. | ||
| void | PostDuplicate
(
bool bDuplicateForPIE |
Called after duplication & serialization and before PostLoad. | |
| void | PostEditUndo () |
Called after applying a transaction to the object. | |
| void | Called after the C++ constructor and after the properties have been initialized, including those loaded from config. | ||
| void | PostLoad () |
Do any object-specific cleanup required immediately after loading an object. | |
| void | PreEditUndo () |
Called before applying a transaction to the object. | |
| void | Handles reading, writing, and reference collecting using FArchive. |
Overridden from IInterface_AssetUserData
| Type | Name | Description | |
|---|---|---|---|
| void | AddAssetUserData
(
UAssetUserData* InUserData |
||
| const TArray< UAssetUserData * > * | |||
| UAssetUserData * | GetAssetUserDataOfClass
(
TSubclassOf< UAssetUserData > InUserDataClass |
||
| void | RemoveUserDataOfClass
(
TSubclassOf< UAssetUserData > InUserDataClass |
Overridden from IInterface_PreviewMeshProvider
| Type | Name | Description | |
|---|---|---|---|
| USkeletalMesh * | Get the preview mesh for this asset | ||
| USkeletalMesh * | GetPreviewMesh
(
bool bFindIfNotSet |
IInterface_PreviewMeshProvider interface | |
| void | SetPreviewMesh
(
USkeletalMesh* PreviewMesh, |
Set the preview mesh for this asset |
Classes
| Type | Name | Description | |
|---|---|---|---|
| FSmartNamesChangedEvent |
Typedefs
| Name | Description |
|---|---|
| AnimCurveUID | DEPRECATED - no longer used. |
| FBoneTreeType | |
| FOnRetargetSourceChanged | |
| FOnRetargetSourceChangedMulticaster | |
| FOnSkeletonHierarchyChanged | |
| FOnSkeletonHierarchyChangedMulticaster |
Constants
| Name | Description |
|---|---|
| AnimCurveMapping | Cached ptr to the persistent AnimCurveMapping |
| AnimCurveMappingName | |
| AnimNotifyTag | Asset registry information for animation notifies. |
| AnimNotifyTagDelimiter | |
| AnimSyncMarkerTag | Asset registry information for animation sync markers. |
| AnimSyncMarkerTagDelimiter | |
| AnimTrackCurveMappingName | |
| AreAllSkeletonsCompatibleDelegate | Global compatibility delegate, used to override skeleton compatibility. |
| CompatibleSkeletonsNameTag | Asset registry information for compatible skeletons. |
| CompatibleSkeletonsTagDelimiter | |
| CurveNameTag | Asset registry information for animation curves. |
| CurveTagDelimiter | |
| DefaultCurveUIDList | |
| RigTag | Rig Configs |
Deprecated Variables
| Type | Name | Description | |
|---|---|---|---|
| FSmartNamesChangedEvent | OnSmartNamesChangedEvent | This member is no longer used. Delegate registration for skeleton metadata can be handled via UAnimCurveMetaData. | |
| TArray< FTransform > | RefLocalPoses_DEPRECATED | Reference skeleton poses in local space | |
| TMap< TWeakObjectPtr< USkeletalMesh >, int32 > | SkelMesh2LinkupCache | Public access to this member variable is deprecated. | |
| FSmartNameContainer | SmartNames_DEPRECATED | DEPRECATED - moved to CurveMetaData. |
Deprecated Functions
| Type | Name | Description | |
|---|---|---|---|
| bool | AddSmartNameAndModify
(
FName ContainerName, |
Please use AddCurveMetaData. | |
| FCurveMetaData * | GetCurveMetaData
(
const FSmartName& CurveName |
Please use GetCurveMetaData with an FName. | |
| const FCurveMetaData * | GetCurveMetaData
(
const SmartName::UID_Type CurveUID |
Please use GetCurveMetaData with an FName. | |
| const FCurveMetaData * | GetCurveMetaData
(
const FSmartName& CurveName |
Please use GetCurveMetaData with an FName. | |
| const TArray< uint16 > & | This function is no longer used | ||
| int32 | GetRawAnimationTrackIndex
(
const int32 InSkeletonBoneIndex, |
GetRawAnimationTrackIndex has been deprecated, use tracks are referenced by name instead | |
| const FSkeletonRemapping * | GetSkeletonRemapping
(
const USkeleton* SourceSkeleton |
Please use UE::Anim::FSkeletonRemappingRegistry::GetRemapping. | |
| bool | GetSmartNameByName
(
const FName& ContainerName, |
This function is no longer used | |
| bool | GetSmartNameByUID
(
const FName& ContainerName, |
This function is no longer used | |
| const FSmartNameMapping * | GetSmartNameContainer
(
const FName& ContainerName |
This function is no longer used | |
| SmartName::UID_Type | GetUIDByName
(
const FName& ContainerName, |
This function is no longer used | |
| bool | IsCompatible
(
const USkeleton* InSkeleton |
Compatibility is now an editor-only concern. Please use IsCompatibleForEditor. | |
| bool | IsCompatibleSkeletonByAssetData
(
const FAssetData& AssetData, |
Compatibility is now an editor-only concern. Please use IsCompatibleForEditor. | |
| bool | IsCompatibleSkeletonByAssetString
(
const FString& SkeletonAssetString |
Compatibility is now an editor-only concern. Please use IsCompatibleForEditor. | |
| void | RemoveSmartnameAndModify
(
FName ContainerName, |
Please use RemoveCurveMetaData. | |
| void | RemoveSmartnamesAndModify
(
FName ContainerName, |
Please use RemoveCurveMetaData. | |
| bool | RenameSmartnameAndModify
(
FName ContainerName, |
Please use RenameCurveMetaData. | |
| void | VerifySmartName
(
const FName& ContainerName, |
This function is no longer used | |
| void | VerifySmartNames
(
const FName& ContainerName, |
This function is no longer used |