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

#include <SkinnedMeshComponent.h>

+ Inheritance diagram for USkinnedMeshComponent:

Classes

struct  FMissingLeaderBoneCacheEntry
 
class  FRenderStateLockScope
 

Public Member Functions

ENGINE_API USkinnedMeshComponent (FVTableHelper &Helper)
 
ENGINE_API ~USkinnedMeshComponent ()
 
const FMeshDeformerInstanceSetGetMeshDeformerInstances () const
 
TObjectPtr< UMeshDeformerGetComponentMeshDeformer () const
 
ENGINE_API UMeshDeformerInstanceGetMeshDeformerInstance () const
 
ENGINE_API UMeshDeformerInstanceGetMeshDeformerInstanceForLOD (int32 LODIndex) const
 
virtual ENGINE_API int32 GetMeshDeformerMaxLOD () const
 
const TArray< uint8 > & GetPreviousBoneVisibilityStates () const
 
const TArray< FTransform > & GetPreviousComponentTransformsArray () const
 
uint32 GetBoneTransformRevisionNumber () const
 
uint32 GetPreviousBoneTransformRevisionNumber () const
 
uint32 GetCurrentBoneTransformFrame () const
 
ENGINE_API void ClearMotionVector ()
 
ENGINE_API void ForceMotionVector ()
 
const TArray< int32 > & GetLeaderBoneMap () const
 
const TArray< int32 > & GetMasterBoneMap () const
 
ENGINE_API const FExternalMorphWeightDataGetExternalMorphWeights (int32 LOD) const
 
ENGINE_API FExternalMorphWeightDataGetExternalMorphWeights (int32 LOD)
 
ENGINE_API void AddExternalMorphSet (int32 LOD, int32 ID, TSharedPtr< FExternalMorphSet > MorphSet)
 
ENGINE_API void RemoveExternalMorphSet (int32 LOD, int32 ID)
 
ENGINE_API void ClearExternalMorphSets (int32 LOD)
 
ENGINE_API bool HasExternalMorphSet (int32 LOD, int32 ID) const
 
ENGINE_API bool IsValidExternalMorphSetLODIndex (int32 LOD) const
 
const FExternalMorphSetsGetExternalMorphSets (int32 LOD) const
 
FExternalMorphSetsGetExternalMorphSets (int32 LOD)
 
const TArray< FExternalMorphSets > & GetExternalMorphSetsArray () const
 
ENGINE_API void GetCPUSkinnedVertices (TArray< struct FFinalSkinVertex > &OutVertices, int32 InLODIndex) const
 
ENGINE_API void GetCPUSkinnedCachedFinalVertices (TArray< FFinalSkinVertex > &OutVertices) const
 
virtual ENGINE_API const Nanite::FResourcesGetNaniteResources () const
 
virtual ENGINE_API bool HasValidNaniteData () const
 
void EnableExternalTickRateControl (bool bInEnable)
 
bool IsUsingExternalTickRateControl () const
 
void SetExternalTickRate (uint8 InTickRate)
 
uint8 GetExternalTickRate () const
 
void EnableExternalInterpolation (bool bInEnable)
 
bool IsUsingExternalInterpolation () const
 
void EnableExternalUpdate (bool bInEnable)
 
void SetExternalInterpolationAlpha (float InAlpha)
 
void SetExternalDeltaTime (float InDeltaTime)
 
void EnableExternalEvaluationRateLimiting (bool bInEnable)
 
const FSkeletalMeshObjectGetMeshObject () const
 
ENGINE_API FSkeletalMeshRenderDataGetSkeletalMeshRenderData () const
 
virtual ENGINE_API void GetUpdateClothSimulationData_AnyThread (TMap< int32, FClothSimulData > &OutClothSimulData, FMatrix &OutLocalToWorld, float &OutClothBlendWeight) const override
 
virtual ENGINE_API void SetPhysicsAsset (class UPhysicsAsset *NewPhysicsAsset, bool bForceReInit=false)
 
ENGINE_API int32 GetNumLODs () const
 
 UFUNCTION (BlueprintCallable, Category="Components|SkinnedMesh", meta=(DeprecatedFunction, DeprecationMessage="Use USkinnedMeshComponent::OverrideMinLOD() instead.")) ENGINE_API void SetMinLOD(int32 InNewMinLOD)
 
ENGINE_API void OverrideMinLOD (int32 InNewMinLOD)
 
ENGINE_API void SetForcedLOD (int32 InNewForcedLOD)
 
ENGINE_API int32 GetForcedLOD () const
 
ENGINE_API void SetCastCapsuleDirectShadow (bool bNewValue)
 
ENGINE_API void SetCastCapsuleIndirectShadow (bool bNewValue)
 
ENGINE_API void SetCapsuleIndirectShadowMinVisibility (float NewValue)
 
ENGINE_API int32 GetNumBones () const
 
ENGINE_API int32 GetBoneIndex (FName BoneName) const
 
ENGINE_API FName GetBoneName (int32 BoneIndex) const
 
ENGINE_API FName GetSocketBoneName (FName InSocketName) const
 
 UE_DEPRECATED (5.1, "Use USkeletalMeshComponent::SetSkeletalMesh() or SetSkinnedAssetAndUpdate() instead.") ENGINE_API virtual void SetSkeletalMesh(class USkeletalMesh *NewMesh
 
 UE_DEPRECATED (5.1, "Use USkeletalMeshComponent::GetSkeletalMeshAsset() or GetSkinnedAsset() instead.") UFUNCTION(BlueprintPure
 
ENGINE_API void SetSkeletalMesh_DEPRECATED (USkeletalMesh *NewMesh)
 
virtual ENGINE_API void SetSkinnedAssetAndUpdate (class USkinnedAsset *NewMesh, bool bReinitPose=true)
 
ENGINE_API void SetSkinnedAsset (class USkinnedAsset *InSkinnedAsset)
 
ENGINE_API USkinnedAssetGetSkinnedAsset () const
 
ENGINE_API void SetMeshDeformer (UMeshDeformer *InMeshDeformer)
 
ENGINE_API void UnsetMeshDeformer ()
 
ENGINE_API void SetAlwaysUseMeshDeformer (bool bShouldAlwaysUseMeshDeformer)
 
ENGINE_API bool GetAlwaysUseMeshDeformer () const
 
ENGINE_API FName GetParentBone (FName BoneName) const
 
ENGINE_API FTransform GetDeltaTransformFromRefPose (FName BoneName, FName BaseName=NAME_None) const
 
ENGINE_API bool GetTwistAndSwingAngleOfDeltaRotationFromRefPose (FName BoneName, float &OutTwistAngle, float &OutSwingAngle) const
 
ENGINE_API bool IsSkinCacheAllowed (int32 LodIdx) const
 
ENGINE_API bool HasMeshDeformer () const
 
ENGINE_API bool HasMeshDeformer (int32 LodIdx) const
 
bool GetForceUpdateDynamicDataImmediately () const
 
void SetForceUpdateDynamicDataImmediately (bool bForceUpdateImmediately)
 
ENGINE_API int32 ComputeMinLOD () const
 
int32 GetValidMinLOD (const int32 InMinLODIndex) const
 
virtual ENGINE_API void BeginDestroy () override
 
virtual ENGINE_API void Serialize (FArchive &Ar) override
 
virtual ENGINE_API void PostLoad () override
 
virtual ENGINE_API void GetResourceSizeEx (FResourceSizeEx &CumulativeResourceSize) override
 
virtual ENGINE_API FString GetDetailedInfoInternal () const override
 
virtual ENGINE_API FBoxSphereBounds CalcBounds (const FTransform &LocalToWorld) const override
 
virtual ENGINE_API void UpdateBounds () override
 
virtual ENGINE_API FTransform GetSocketTransform (FName InSocketName, ERelativeTransformSpace TransformSpace=RTS_World) const override
 
virtual ENGINE_API bool DoesSocketExist (FName InSocketName) const override
 
virtual ENGINE_API bool HasAnySockets () const override
 
virtual ENGINE_API void QuerySupportedSockets (TArray< FComponentSocketDescription > &OutSockets) const override
 
virtual ENGINE_API bool UpdateOverlapsImpl (const TOverlapArrayView *PendingOverlaps=nullptr, bool bDoNotifies=true, const TOverlapArrayView *OverlapsAtEndLocation=nullptr) override
 
virtual ENGINE_API void OnChildAttached (USceneComponent *ChildComponent) override
 
virtual ENGINE_API void OnChildDetached (USceneComponent *ChildComponent) override
 
virtual ENGINE_API UMaterialInterfaceGetMaterial (int32 MaterialIndex) const override
 
virtual ENGINE_API int32 GetMaterialIndex (FName MaterialSlotName) const override
 
virtual ENGINE_API TArray< FNameGetMaterialSlotNames () const override
 
virtual ENGINE_API bool IsMaterialSlotNameValid (FName MaterialSlotName) const override
 
virtual ENGINE_API FPrimitiveSceneProxyCreateSceneProxy () override
 
virtual ENGINE_API void GetUsedMaterials (TArray< UMaterialInterface * > &OutMaterials, bool bGetDebugMaterials=false) const override
 
virtual ENGINE_API bool GetMaterialStreamingData (int32 MaterialIndex, FPrimitiveMaterialInfo &MaterialData) const override
 
virtual ENGINE_API void GetStreamingRenderAssetInfo (FStreamingTextureLevelContext &LevelContext, TArray< FStreamingRenderAssetPrimitiveInfo > &OutStreamingRenderAssets) const override
 
virtual ENGINE_API int32 GetNumMaterials () const override
 
virtual float GetStreamingScale () const override
 
virtual ENGINE_API void GetPrimitiveStats (FPrimitiveStats &PrimitiveStats) const override
 
virtual ENGINE_API void RegisterLODStreamingCallback (FLODStreamingCallback &&Callback, int32 LODIdx, float TimeoutSecs, bool bOnStreamIn) override
 
virtual ENGINE_API void RegisterLODStreamingCallback (FLODStreamingCallback &&CallbackStreamingStart, FLODStreamingCallback &&CallbackStreamingDone, float TimeoutStartSecs, float TimeoutDoneSecs) override
 
virtual ENGINE_API bool PrestreamMeshLODs (float Seconds) override
 
ENGINE_API void GetPreSkinnedLocalBounds (FBoxSphereBounds &OutBounds) const
 
ENGINE_API void ResizeExternalMorphTargetSets ()
 
ENGINE_API void RefreshExternalMorphTargetWeights (bool bZeroOldWeights=true)
 
ENGINE_API void SetForceWireframe (bool InForceWireframe)
 
virtual ENGINE_API void CollectPSOPrecacheData (const FPSOPrecacheParams &BasePrecachePSOParams, FMaterialInterfacePSOPrecacheParamsList &OutParams) override
 
virtual ENGINE_API bool ShouldNaniteSkin ()
 
virtual ENGINE_API bool ShouldCPUSkin () const
 
ENGINE_API bool GetCPUSkinningEnabled () const
 
ENGINE_API void SetCPUSkinningEnabled (bool bEnable, bool bRecreateRenderStateImmediately=false)
 
virtual void PostInitMeshObject (FSkeletalMeshObject *)
 
ENGINE_API void CacheRefToLocalMatrices (TArray< FMatrix44f > &OutRefToLocal) const
 
ENGINE_API void GetCurrentRefToLocalMatrices (TArray< FMatrix44f > &OutRefToLocals, int32 InLodIdx, const TArray< FBoneIndexType > *ExtraRequiredBoneIndices=nullptr) const
 
const USkinnedMeshComponentGetBaseComponent () const
 
FTransform GetBoneTransform (FName InBoneName, ERelativeTransformSpace TransformSpace=RTS_World) const
 
ENGINE_API FColor GetVertexColor (int32 VertexIndex) const
 
ENGINE_API void SetVertexColorOverride (int32 LODIndex, const TArray< FColor > &VertexColors)
 
ENGINE_API void SetVertexColorOverride_LinearColor (int32 LODIndex, const TArray< FLinearColor > &VertexColors)
 
ENGINE_API void ClearVertexColorOverride (int32 LODIndex)
 
ENGINE_API FVector2D GetVertexUV (int32 VertexIndex, uint32 UVChannel) const
 
ENGINE_API void SetSkinWeightOverride (int32 LODIndex, const TArray< FSkelMeshSkinWeightInfo > &SkinWeights)
 
ENGINE_API void ClearSkinWeightOverride (int32 LODIndex)
 
ENGINE_API bool SetSkinWeightProfile (FName InProfileName, ESkinWeightProfileLayer InLayer=ESkinWeightProfileLayer::Primary)
 
ENGINE_API void ClearSkinWeightProfile (ESkinWeightProfileLayer InLayer=ESkinWeightProfileLayer::Primary)
 
ENGINE_API void ClearAllSkinWeightProfiles ()
 
ENGINE_API void UnloadSkinWeightProfile (FName InProfileName)
 
ENGINE_API FName GetCurrentSkinWeightProfileName (ESkinWeightProfileLayer InLayer=ESkinWeightProfileLayer::Primary) const
 
ENGINE_API TArray< FNameGetCurrentSkinWeightProfileLayerNames () const
 
ENGINE_API bool IsUsingSkinWeightProfile () const
 
bool IsSkinWeightProfilePending () const
 
ENGINE_API void UpdateSkinWeightOverrideBuffer ()
 
ENGINE_API FSkinWeightVertexBufferGetSkinWeightBuffer (int32 LODIndex) const
 
virtual ENGINE_API void SetRefPoseOverride (const TArray< FTransform > &NewRefPoseTransforms)
 
virtual const TSharedPtr< FSkelMeshRefPoseOverride > & GetRefPoseOverride () const
 
virtual ENGINE_API void ClearRefPoseOverride ()
 
virtual ENGINE_API void TickPose (float DeltaTime, bool bNeedsValidRootMotion)
 
virtual ENGINE_API void UpdateFollowerComponent ()
 
virtual void UpdateSlaveComponent ()
 
virtual ENGINE_API bool UpdateLODStatus ()
 
int32 GetPredictedLODLevel () const
 
virtual void UpdateVisualizeLODString (FString &DebugString)
 
virtual ENGINE_API void FinalizeBoneTransform ()
 
ENGINE_API void InitLODInfos ()
 
ENGINE_API void RebuildVisibilityArray ()
 
ENGINE_API void UpdateMorphMaterialUsageOnProxy ()
 
ENGINE_API void AllowDuplicateTransformUpdates (bool bAllow)
 
const TArray< FTransform > & GetComponentSpaceTransforms () const
 
TArray< FTransform > & GetEditableComponentSpaceTransforms ()
 
const TArray< FTransform > & GetEditableComponentSpaceTransforms () const
 
int32 GetNumComponentSpaceTransforms () const
 
const TArray< uint8 > & GetBoneVisibilityStates () const
 
TArray< uint8 > & GetEditableBoneVisibilityStates ()
 
const TArray< uint8 > & GetEditableBoneVisibilityStates () const
 
ENGINE_API void SetComponentSpaceTransformsDoubleBuffering (bool bInDoubleBufferedComponentSpaceTransforms)
 
FBoxSphereBounds GetCachedLocalBounds () const
 
virtual ENGINE_API bool ShouldUpdateTransform (bool bLODHasChanged) const
 
virtual ENGINE_API bool ShouldTickPose () const
 
ENGINE_API void InvalidateCachedBounds ()
 
ENGINE_API void SetLeaderPoseComponent (USkinnedMeshComponent *NewLeaderBoneComponent, bool bForceUpdate=false, bool bInFollowerShouldTickPose=false)
 
void SetMasterPoseComponent (USkinnedMeshComponent *NewMasterBoneComponent, bool bForceUpdate=false)
 
ENGINE_API const TArray< TWeakObjectPtr< USkinnedMeshComponent > > & GetFollowerPoseComponents () const
 
const TArray< TWeakObjectPtr< USkinnedMeshComponent > > & GetSlavePoseComponents () const
 
ENGINE_API void RefreshFollowerComponents ()
 
void RefreshSlaveComponents ()
 
ENGINE_API void UpdateLeaderBoneMap ()
 
void UpdateMasterBoneMap ()
 
ENGINE_API class USkeletalMeshSocket const * GetSocketInfoByName (FName InSocketName, FTransform &OutTransform, int32 &OutBoneIndex) const
 
ENGINE_API class USkeletalMeshSocket const * GetSocketByName (FName InSocketName) const
 
ENGINE_API void AddSocketOverride (FName SourceSocketName, FName OverrideSocketName, bool bWarnHasOverrided=true)
 
ENGINE_API void RemoveSocketOverrides (FName SourceSocketName)
 
ENGINE_API void RemoveAllSocketOverrides ()
 
ENGINE_API bool HasAnyAttachedSockets () const
 
ENGINE_API FMatrix GetBoneMatrix (int32 BoneIndex) const
 
ENGINE_API FTransform GetBoneTransform (int32 BoneIndex, const FTransform &LocalToWorld) const
 
ENGINE_API FTransform GetBoneTransform (int32 BoneIndex) const
 
ENGINE_API FQuat GetBoneQuaternion (FName BoneName, EBoneSpaces::Type Space=EBoneSpaces::WorldSpace) const
 
ENGINE_API FVector GetBoneLocation (FName BoneName, EBoneSpaces::Type Space=EBoneSpaces::WorldSpace) const
 
ENGINE_API void GetBoneNames (TArray< FName > &BoneNames)
 
ENGINE_API bool BoneIsChildOf (FName BoneName, FName ParentBoneName) const
 
ENGINE_API FVector GetRefPosePosition (int32 BoneIndex) const
 
ENGINE_API FTransform GetRefPoseTransform (int32 BoneIndex) const
 
ENGINE_API FVector GetBoneAxis (FName BoneName, EAxis::Type Axis) const
 
ENGINE_API void TransformToBoneSpace (FName BoneName, FVector InPosition, FRotator InRotation, FVector &OutPosition, FRotator &OutRotation) const
 
ENGINE_API void TransformFromBoneSpace (FName BoneName, FVector InPosition, FRotator InRotation, FVector &OutPosition, FRotator &OutRotation)
 
ENGINE_API FName FindClosestBone (FVector TestLocation, FVector *BoneLocation=nullptr, float IgnoreScale=0.f, bool bRequirePhysicsAsset=false) const
 
ENGINE_API FName FindClosestBone_K2 (FVector TestLocation, FVector &BoneLocation, float IgnoreScale=0.f, bool bRequirePhysicsAsset=false) const
 
virtual ENGINE_API class UMorphTargetFindMorphTarget (FName MorphTargetName) const
 
virtual ENGINE_API void HideBone (int32 BoneIndex, EPhysBodyOp PhysBodyOption)
 
virtual ENGINE_API void UnHideBone (int32 BoneIndex)
 
ENGINE_API bool IsBoneHidden (int32 BoneIndex) const
 
ENGINE_API void HideBoneByName (FName BoneName, EPhysBodyOp PhysBodyOption)
 
ENGINE_API void UnHideBoneByName (FName BoneName)
 
ENGINE_API bool IsBoneHiddenByName (FName BoneName)
 
ENGINE_API void ShowMaterialSection (int32 MaterialID, int32 SectionIndex, bool bShow, int32 LODIndex)
 
ENGINE_API void ShowAllMaterialSections (int32 LODIndex)
 
ENGINE_API bool IsMaterialSectionShown (int32 MaterialID, int32 LODIndex)
 
ENGINE_API void SetRenderStatic (bool bNewValue)
 
ENGINE_API class UPhysicsAssetGetPhysicsAsset () const
 
virtual bool IsPlayingRootMotion () const
 
virtual bool IsPlayingNetworkedRootMotionMontage () const
 
virtual bool IsPlayingRootMotionFromEverything () const
 
ENGINE_API bool ShouldUseUpdateRateOptimizations () const
 
ENGINE_API void ReleaseResources ()
 
virtual void GetAdditionalRequiredBonesForLeader (int32 LODIndex, TArray< FBoneIndexType > &InOutRequiredBones) const
 
virtual FDelegateHandle RegisterOnBoneTransformsFinalizedDelegate (const FOnBoneTransformsFinalizedMultiCast::FDelegate &)
 
virtual void UnregisterOnBoneTransformsFinalizedDelegate (const FDelegateHandle &)
 
- Public Member Functions inherited from UMeshComponent
virtual ENGINE_API TArray< class UMaterialInterface * > GetMaterials () const
 
virtual bool UseNaniteOverrideMaterials () const
 
virtual ENGINE_API int32 GetNumOverrideMaterials () const
 
ENGINE_API class UMaterialInterfaceGetOverlayMaterial () const
 
ENGINE_API void SetOverlayMaterial (class UMaterialInterface *NewOverlayMaterial)
 
ENGINE_API float GetOverlayMaterialMaxDrawDistance () const
 
ENGINE_API void SetOverlayMaterialMaxDrawDistance (float InMaxDrawDistance)
 
ENGINE_API void GetMaterialSlotsOverlayMaterial (TArray< TObjectPtr< class UMaterialInterface > > &OutMaterialSlotOverlayMaterials) const
 
ENGINE_API void EmptyOverrideMaterials ()
 
ENGINE_API bool HasOverrideMaterials ()
 
virtual ENGINE_API UMaterialInterfaceGetMaterialByName (FName MaterialSlotName) const override
 
virtual ENGINE_API void SetMaterial (int32 ElementIndex, UMaterialInterface *Material) override
 
virtual ENGINE_API void SetMaterialByName (FName MaterialSlotName, class UMaterialInterface *Material) override
 
virtual ENGINE_API FMaterialRelevance GetMaterialRelevance (ERHIFeatureLevel::Type InFeatureLevel) const
 
virtual ENGINE_API FMaterialRelevance GetMaterialRelevance (EShaderPlatform InShaderPlatform) const
 
virtual ENGINE_API void SetTextureForceResidentFlag (bool bForceMiplevelsToBeResident)
 
virtual ENGINE_API void PrestreamTextures (float Seconds, bool bPrioritizeCharacterTextures, int32 CinematicTextureGroups=0)
 
ENGINE_API void GetStreamingTextureInfoInner (FStreamingTextureLevelContext &LevelContext, const TArray< FStreamingTextureBuildInfo > *PreBuiltData, float ComponentScaling, TArray< FStreamingRenderAssetPrimitiveInfo > &OutStreamingTextures) const
 
ENGINE_API FColor GetWireframeColorForSceneProxy () const
 
virtual ENGINE_API void LogMaterialsAndTextures (FOutputDevice &Ar, int32 Indent) const
 
virtual UTextureGetMeshPaintTexture () const
 
virtual void SetMeshPaintTexture (UTexture *Texture)
 
virtual void SetMeshPaintTextureOverride (UTexture *OverrideTexture)
 
virtual int32 GetMeshPaintTextureCoordinateIndex () const
 
ENGINE_API void SetScalarParameterValueOnMaterials (const FName ParameterName, const float ParameterValue)
 
ENGINE_API void SetVectorParameterValueOnMaterials (const FName ParameterName, const FVector ParameterValue)
 
ENGINE_API void SetColorParameterValueOnMaterials (const FName ParameterName, const FLinearColor ParameterValue)
 
float GetScalarParameterDefaultValue (const FName ParameterName)
 
ENGINE_API const TArray< TObjectPtr< UMaterialInterface > > & GetComponentMaterialSlotsOverlayMaterial () const
 

Static Public Member Functions

static ENGINE_API bool ShouldRenderNaniteSkinnedMeshes ()
 
static ENGINE_API FVector3f GetSkinnedVertexPosition (USkinnedMeshComponent *Component, int32 VertexIndex, const FSkeletalMeshLODRenderData &LODDatal, FSkinWeightVertexBuffer &SkinWeightBuffer)
 
static ENGINE_API FVector3f GetSkinnedVertexPosition (USkinnedMeshComponent *Component, int32 VertexIndex, const FSkeletalMeshLODRenderData &LODData, FSkinWeightVertexBuffer &SkinWeightBuffer, TArray< FMatrix44f > &CachedRefToLocals)
 
static ENGINE_API void ComputeSkinnedPositions (USkinnedMeshComponent *Component, TArray< FVector3f > &OutPositions, TArray< FMatrix44f > &CachedRefToLocals, const FSkeletalMeshLODRenderData &LODData, const FSkinWeightVertexBuffer &SkinWeightBuffer)
 
static ENGINE_API void GetPhysicsRequiredBones (const USkinnedAsset *SkinnedAsset, const UPhysicsAsset *PhysicsAsset, TArray< FBoneIndexType > &OutRequiredBones)
 
static ENGINE_API void GetSocketRequiredBones (const USkinnedAsset *SkinnedAsset, TArray< FBoneIndexType > &OutRequiredBones, TArray< FBoneIndexType > &NeededBonesForFillComponentSpaceTransforms)
 
static ENGINE_API void MergeInBoneIndexArrays (TArray< FBoneIndexType > &BaseArray, const TArray< FBoneIndexType > &InsertArray)
 

Public Attributes

TWeakObjectPtr< USkinnedMeshComponentLeaderPoseComponent
 
TArray< ESkinCacheUsageSkinCacheUsage
 
FMorphTargetWeightMap ActiveMorphTargets
 
TArray< floatMorphTargetWeights
 
TArray< FExternalMorphWeightDataExternalMorphWeightData
 
TArray< FExternalMorphSetsExternalMorphSets
 
TObjectPtr< class UPhysicsAssetPhysicsAssetOverride
 
int32 ForcedLodModel
 
int32 MinLodModel
 
int32 PredictedLODLevel
 
float MaxDistanceFactor
 
float StreamingDistanceMultiplier
 
float NanitePixelProgrammableDistance
 
TArray< struct FSkelMeshComponentLODInfoLODInfo
 
EVisibilityBasedAnimTickOption VisibilityBasedAnimTickOption
 
uint8 bOverrideMinLod:1
 
uint8 bUseBoundsFromLeaderPoseComponent: 1
 
uint8 bIncludeComponentLocationIntoBounds: 1
 
uint8 bForceWireframe:1
 
uint8 bDisableMorphTarget:1
 
uint8 bHideSkin:1
 
uint8 bPerBoneMotionBlur:1
 
uint8 bComponentUseFixedSkelBounds:1
 
uint8 bConsiderAllBodiesForBounds:1
 
uint8 bSyncAttachParentLOD: 1
 
uint8 bCanHighlightSelectedSections:1
 
uint8 bRecentlyRendered:1
 
UPROPERTY(EditAnywhere, AdvancedDisplay, BlueprintReadOnly, Category=Lighting, meta=(EditCondition="CastShadow && (FirstPersonPrimitiveType != EFirstPersonPrimitiveType::FirstPerson)", DisplayName="Capsule Direct Shadow")) uint8 bCastCapsuleDirectShadow UPROPERTY(EditAnywhere, AdvancedDisplay, BlueprintReadOnly, Category=Lighting, meta=(EditCondition="CastShadow && (FirstPersonPrimitiveType != EFirstPersonPrimitiveType::FirstPerson)", DisplayName="Capsule Indirect Shadow")) uint8 bCastCapsuleIndirectShadow uint8 bCPUSkinning: 1
 
uint8 bUseScreenRenderStateForUpdate:1
 
uint8 bEnableUpdateRateOptimizations:1
 
uint8 bDisplayDebugUpdateRateOptimizations:1
 
uint8 bRenderStatic:1
 
uint8 bIgnoreLeaderPoseComponentLOD: 1
 
uint8 bSortTriangles: 1
 
float CapsuleIndirectShadowMinVisibility
 
FSkeletalMeshObjectMeshObject
 
FSkeletalMeshObject *(* MeshObjectFactory )(void *UserData, USkinnedMeshComponent *InMeshComponent, FSkeletalMeshRenderData *InSkelMeshRenderData, ERHIFeatureLevel::Type InFeatureLevel)
 
voidMeshObjectFactoryUserData
 
FSkeletalMeshObjectPreviousMeshObject
 
bool bReinitPose = true)
 
 DisplayName = "Get Skeletal Mesh"
 
FOnTickPose OnTickPose
 
FOnAnimUpdateRateParamsCreated OnAnimUpdateRateParamsCreated
 
struct FAnimUpdateRateParametersAnimUpdateRateParams
 
- Public Attributes inherited from UMeshComponent
TArray< TObjectPtr< class UMaterialInterface > > OverrideMaterials
 
TObjectPtr< class UMaterialInterfaceOverlayMaterial
 
float OverlayMaterialMaxDrawDistance
 
TArray< TObjectPtr< class UMaterialInterface > > MaterialSlotsOverlayMaterial
 
uint8 bEnableMaterialParameterCaching: 1
 

Protected Member Functions

ENGINE_API void SetMeshDeformer (bool bInSetMeshDeformer, UMeshDeformer *InMeshDeformer)
 
ENGINE_API FMeshDeformerSet GetActiveMeshDeformers () const
 
virtual ENGINE_API void OnRegister () override
 
virtual ENGINE_API void OnUnregister () override
 
virtual ENGINE_API void BeginPlay () override
 
virtual ENGINE_API void CreateRenderState_Concurrent (FRegisterComponentContext *Context) override
 
virtual ENGINE_API void SendRenderDynamicData_Concurrent () override
 
virtual ENGINE_API void DestroyRenderState_Concurrent () override
 
virtual ENGINE_API bool RequiresGameThreadEndOfFrameRecreate () const override
 
virtual ENGINE_API void TickComponent (float DeltaTime, enum ELevelTick TickType, FActorComponentTickFunction *ThisTickFunction) override
 
virtual ENGINE_API UObject const * AdditionalStatObject () const override
 
bool SetSkinWeightProfileStack (const FSkinWeightProfileStack &InProfileStack)
 
virtual void DispatchParallelTickPose (FActorComponentTickFunction *TickFunction)
 
ENGINE_API bool UpdateLODStatus_Internal (int32 InLeaderPoseComponentPredictedLODLevel, bool bRequestedByLeaderPoseComponent=false)
 
uint8 ComputeMaxFirstLODIdxInAttachmentTree () const
 
virtual void SetPredictedLODLevel (int32 InPredictedLODLevel)
 
ENGINE_API void FlipEditableSpaceBases ()
 
virtual ENGINE_API bool AllocateTransformData ()
 
virtual ENGINE_API void DeallocateTransformData ()
 
ENGINE_API FBoxSphereBounds CalcMeshBound (const FVector3f &RootOffset, bool UsePhysicsAsset, const FTransform &Transform) const
 
ENGINE_API bool ShouldUpdateBoneVisibility () const
 
ENGINE_API void ReleaseUpdateRateParams ()
 
ENGINE_API void RefreshUpdateRateParams ()
 
virtual ENGINE_API void AddFollowerPoseComponent (USkinnedMeshComponent *SkinnedMeshComponent)
 
virtual void AddSlavePoseComponent (USkinnedMeshComponent *SkinnedMeshComponent)
 
virtual ENGINE_API void RemoveFollowerPoseComponent (USkinnedMeshComponent *SkinnedMeshComponent)
 
virtual void RemoveSlavePoseComponent (USkinnedMeshComponent *SkinnedMeshComponent)
 
virtual ENGINE_API UMaterialInterfaceGetDefaultOverlayMaterial () const override
 
virtual ENGINE_API float GetDefaultOverlayMaterialMaxDrawDistance () const override
 
virtual ENGINE_API void GetDefaultMaterialSlotsOverlayMaterial (TArray< TObjectPtr< UMaterialInterface > > &OutMaterialSlotOverlayMaterials) const override
 
void UpdateCachedSocketAttachmentFlag ()
 
- Protected Member Functions inherited from UMeshComponent
ENGINE_API void CacheMaterialParameterNameIndices ()
 
ENGINE_API void MarkCachedMaterialParameterNameIndicesDirty ()
 

Protected Attributes

bool bSetMeshDeformer = false
 
TObjectPtr< UMeshDeformerMeshDeformer
 
bool bAlwaysUseMeshDeformer = false
 
TObjectPtr< UMeshDeformerInstanceSettingsMeshDeformerInstanceSettings
 
FMeshDeformerInstanceSet MeshDeformerInstances
 
TArray< uint8PreviousBoneVisibilityStates
 
TArray< FTransformPreviousComponentSpaceTransformsArray
 
float LastStreamerUpdateBoundsRadius
 
int32 CurrentEditableComponentTransforms
 
int32 CurrentReadComponentTransforms
 
uint32 PreviousBoneTransformRevisionNumber
 
uint32 CurrentBoneTransformRevisionNumber
 
uint32 CurrentBoneTransformFrame
 
int32 LeaderBoneMapCacheCount
 
TArray< TWeakObjectPtr< USkinnedMeshComponent > > FollowerPoseComponents
 
TArray< int32LeaderBoneMap
 
TMap< int32, FMissingLeaderBoneCacheEntryMissingLeaderBoneMap
 
TSortedMap< FName, FName, FDefaultAllocator, FNameFastLessSocketOverrideLookup
 
TSharedPtr< FSkelMeshRefPoseOverrideRefPoseOverride
 
float ExternalInterpolationAlpha
 
float ExternalDeltaTime
 
TArray< uint8BoneVisibilityStates [2]
 
ERHIFeatureLevel::Type CachedSceneFeatureLevel
 
uint8 ExternalTickRate
 
uint8 MaxFirstLODIdxInAttachmentTree
 
uint8 bHasValidBoneTransform:1
 
uint8 bSkinWeightProfileSet:1
 
uint8 bSkinWeightProfilePending:1
 
uint8 bDoubleBufferedComponentSpaceTransforms: 1
 
uint8 bNeedToFlipSpaceBaseBuffers: 1
 
uint8 bCachedLocalBoundsUpToDate:1
 
uint8 bCachedWorldSpaceBoundsUpToDate:1
 
uint8 bBoneVisibilityDirty:1
 
uint8 bExternalTickRateControlled:1
 
uint8 bExternalInterpolate:1
 
uint8 bExternalUpdate:1
 
uint8 bExternalEvaluationRateLimited:1
 
uint8 bMipLevelCallbackRegistered:1
 
uint8 bFollowerShouldTickPose: 1
 
uint8 bHasSocketAttachments: 1
 
FName CurrentSkinWeightProfileLayers [2] = {NAME_None}
 
UE::FRecursiveMutex RenderStateLock
 
FBoxSphereBounds CachedWorldOrLocalSpaceBounds
 
FMatrix CachedWorldToLocalTransform
 
- Protected Attributes inherited from UMeshComponent
uint8 bCachedMaterialParameterIndicesAreDirty: 1
 
TSortedMap< FName, FMaterialParameterCache, FDefaultAllocator, FNameFastLessMaterialParameterCache
 

Friends

class FSkinnedMeshComponentRecreateRenderStateContext
 
class FSkeletalMeshStreamOut
 
class FRenderStateLockScope
 
class FSkinnedMeshComponentHelper
 
class FRenderStateRecreator
 
struct UE::Anim::FSkinnedMeshComponentExtensions
 

Detailed Description

Skinned mesh component that supports bone skinned mesh rendering. This class does not support animation.

See also
USkeletalMeshComponent

Constructor & Destructor Documentation

◆ USkinnedMeshComponent()

USkinnedMeshComponent::USkinnedMeshComponent ( FVTableHelper Helper)

◆ ~USkinnedMeshComponent()

USkinnedMeshComponent::~USkinnedMeshComponent ( )
default

Member Function Documentation

◆ AddExternalMorphSet()

void USkinnedMeshComponent::AddExternalMorphSet ( int32  LOD,
int32  ID,
TSharedPtr< FExternalMorphSet MorphSet 
)

Register an external set of GPU compressed morph targets. These compressed morph targets are GPU only morph targets that will not appear inside the UI and are owned by external systems. Every set of these morph targets has some unique ID.

Parameters
LODThe LOD index.
IDThe unique ID for this set of morph targets.
MorphSetA shared pointer to a morph set, which basically contains a GPU friendly morph buffer. This buffer should be owned by an external system that calls this method.

◆ AddFollowerPoseComponent()

void USkinnedMeshComponent::AddFollowerPoseComponent ( USkinnedMeshComponent SkinnedMeshComponent)
protectedvirtual

Add a follower component to the FollowerPoseComponents array

◆ AdditionalStatObject()

UObject const * USkinnedMeshComponent::AdditionalStatObject ( ) const
overrideprotectedvirtual

◆ AddSlavePoseComponent()

virtual void USkinnedMeshComponent::AddSlavePoseComponent ( USkinnedMeshComponent SkinnedMeshComponent)
inlineprotectedvirtual

◆ AddSocketOverride()

void USkinnedMeshComponent::AddSocketOverride ( FName  SourceSocketName,
FName  OverrideSocketName,
bool  bWarnHasOverrided = true 
)

◆ AllocateTransformData()

bool USkinnedMeshComponent::AllocateTransformData ( )
protectedvirtual

Allocate Transform Data array including SpaceBases, BoneVisibilityStates

◆ AllowDuplicateTransformUpdates()

void USkinnedMeshComponent::AllowDuplicateTransformUpdates ( bool  bAllow)

Toggles whether this skinned mesh component can issue duplicate transform updates

◆ BeginDestroy()

void USkinnedMeshComponent::BeginDestroy ( )
overridevirtual

Reimplemented from UMeshComponent.

◆ BeginPlay()

void USkinnedMeshComponent::BeginPlay ( )
overrideprotectedvirtual

◆ BoneIsChildOf()

bool USkinnedMeshComponent::BoneIsChildOf ( FName  BoneName,
FName  ParentBoneName 
) const

Tests if BoneName is child of (or equal to) ParentBoneName.

Parameters
BoneNameName of the bone
ParentBoneName to check
Returns
true if child (strictly, not same). false otherwise Note - will return false if ChildBoneIndex is the same as ParentBoneIndex ie. must be strictly a child.

◆ CacheRefToLocalMatrices()

void USkinnedMeshComponent::CacheRefToLocalMatrices ( TArray< FMatrix44f > &  OutRefToLocal) const

Caches the RefToLocal matrices.

◆ CalcBounds()

FBoxSphereBounds USkinnedMeshComponent::CalcBounds ( const FTransform LocalToWorld) const
overridevirtual

◆ CalcMeshBound()

FBoxSphereBounds USkinnedMeshComponent::CalcMeshBound ( const FVector3f RootOffset,
bool  UsePhysicsAsset,
const FTransform Transform 
) const
protected

Update Mesh Bound information based on input

Parameters
RootOffset: Root Bone offset from mesh location If LeaderPoseComponent exists, it will applied to LeaderPoseComponent's bound
UsePhysicsAsset: Whether or not to use PhysicsAsset for calculating bound of mesh

◆ ClearAllSkinWeightProfiles()

void USkinnedMeshComponent::ClearAllSkinWeightProfiles ( )

Clear the skin Weight Profile from all layers on this component. If no profiles are set for any layer, then this call does nothing.

◆ ClearExternalMorphSets()

void USkinnedMeshComponent::ClearExternalMorphSets ( int32  LOD)

Clear all externally registered morph target buffers.

◆ ClearMotionVector()

void USkinnedMeshComponent::ClearMotionVector ( )

◆ ClearRefPoseOverride()

void USkinnedMeshComponent::ClearRefPoseOverride ( )
virtual

Clear any applied ref pose override

◆ ClearSkinWeightOverride()

void USkinnedMeshComponent::ClearSkinWeightOverride ( int32  LODIndex)

Clear any applied skin weight override

◆ ClearSkinWeightProfile()

void USkinnedMeshComponent::ClearSkinWeightProfile ( ESkinWeightProfileLayer  InLayer = ESkinWeightProfileLayer::Primary)

Clear the skin weight profile from the given layer on this component, in case it is set. If no profile is set for the layer, then this call does nothing.

◆ ClearVertexColorOverride()

void USkinnedMeshComponent::ClearVertexColorOverride ( int32  LODIndex)

Clear any applied vertex color override

◆ CollectPSOPrecacheData()

void USkinnedMeshComponent::CollectPSOPrecacheData ( const FPSOPrecacheParams BasePrecachePSOParams,
FMaterialInterfacePSOPrecacheParamsList OutParams 
)
overridevirtual

Precache all PSOs which can be used by the component

◆ ComputeMaxFirstLODIdxInAttachmentTree()

uint8 USkinnedMeshComponent::ComputeMaxFirstLODIdxInAttachmentTree ( ) const
protected

Traverse the attachment tree and compute the highest streaming LOD index clamp among components with SyncAttachParentLOD enabled

◆ ComputeMinLOD()

int32 USkinnedMeshComponent::ComputeMinLOD ( ) const

Compute SkeletalMesh MinLOD that will be used by this component

◆ ComputeSkinnedPositions()

void USkinnedMeshComponent::ComputeSkinnedPositions ( USkinnedMeshComponent Component,
TArray< FVector3f > &  OutPositions,
TArray< FMatrix44f > &  CachedRefToLocals,
const FSkeletalMeshLODRenderData LODData,
const FSkinWeightVertexBuffer SkinWeightBuffer 
)
static

CPU evaluation of the positions of all vertices (returned in component space)

Parameters
OutPositionsbuffer to place positions into
CachedRefToLocalsCached RefToLocal matrices.
ModelThe Model to use.
SkinWeightBufferThe SkinWeightBuffer to use.

◆ CreateRenderState_Concurrent()

void USkinnedMeshComponent::CreateRenderState_Concurrent ( FRegisterComponentContext Context)
overrideprotectedvirtual

◆ CreateSceneProxy()

FPrimitiveSceneProxy * USkinnedMeshComponent::CreateSceneProxy ( )
overridevirtual

◆ DeallocateTransformData()

void USkinnedMeshComponent::DeallocateTransformData ( )
protectedvirtual

◆ DestroyRenderState_Concurrent()

void USkinnedMeshComponent::DestroyRenderState_Concurrent ( )
overrideprotectedvirtual

◆ DispatchParallelTickPose()

virtual void USkinnedMeshComponent::DispatchParallelTickPose ( FActorComponentTickFunction TickFunction)
inlineprotectedvirtual

Update functions Refresh Bone Transforms Each class will need to implement this function Ideally this function should be atomic (not relying on Tick or any other update.)

Parameters
TickFunctionSupplied as non null if we are running in a tick, allows us to create graph tasks for parallelism Parallel Tick Pose In the case where we do not want to refresh bone transforms (and would therefore not normally kick off a parallel eval task) we perform this 'mini tick' that kicks off the task.
TickFunctionAllows us to create graph tasks for parallelism

◆ DoesSocketExist()

bool USkinnedMeshComponent::DoesSocketExist ( FName  InSocketName) const
overridevirtual

◆ EnableExternalEvaluationRateLimiting()

void USkinnedMeshComponent::EnableExternalEvaluationRateLimiting ( bool  bInEnable)
inline

Manually enable/disable animation evaluation rate limiting

◆ EnableExternalInterpolation()

void USkinnedMeshComponent::EnableExternalInterpolation ( bool  bInEnable)
inline

Enable non-URO-based interpolation

◆ EnableExternalTickRateControl()

void USkinnedMeshComponent::EnableExternalTickRateControl ( bool  bInEnable)
inline

Set whether we have our tick rate externally controlled non-URO-based interpolation

◆ EnableExternalUpdate()

void USkinnedMeshComponent::EnableExternalUpdate ( bool  bInEnable)
inline

Set us to tick this frame for non-URO-based interpolation

◆ FinalizeBoneTransform()

void USkinnedMeshComponent::FinalizeBoneTransform ( )
virtual

Finalize bone transform of this current tick After this function, any query to bone transform should be latest of the data

◆ FindClosestBone()

FName USkinnedMeshComponent::FindClosestBone ( FVector  TestLocation,
FVector BoneLocation = nullptr,
float  IgnoreScale = 0.f,
bool  bRequirePhysicsAsset = false 
) const

finds the closest bone to the given location

Parameters
TestLocationthe location to test against
BoneLocation(optional, out) if specified, set to the world space location of the bone that was found, or (0,0,0) if no bone was found
IgnoreScale(optional) if specified, only bones with scaling larger than the specified factor are considered
bRequirePhysicsAsset(optional) if true, only bones with physics will be considered
Returns
the name of the bone that was found, or 'None' if no bone was found

◆ FindClosestBone_K2()

FName USkinnedMeshComponent::FindClosestBone_K2 ( FVector  TestLocation,
FVector BoneLocation,
float  IgnoreScale = 0.f,
bool  bRequirePhysicsAsset = false 
) const

finds the closest bone to the given location

Parameters
TestLocationthe location to test against
BoneLocation(optional, out) if specified, set to the world space location of the bone that was found, or (0,0,0) if no bone was found
IgnoreScale(optional) if specified, only bones with scaling larger than the specified factor are considered
bRequirePhysicsAsset(optional) if true, only bones with physics will be considered
Returns
the name of the bone that was found, or 'None' if no bone was found

◆ FindMorphTarget()

UMorphTarget * USkinnedMeshComponent::FindMorphTarget ( FName  MorphTargetName) const
virtual

Find a named MorphTarget from the current SkeletalMesh

Parameters
MorphTargetNameName of MorphTarget to look for.
Returns
Pointer to found MorphTarget. Returns nullptr if could not find target with that name.

◆ FlipEditableSpaceBases()

void USkinnedMeshComponent::FlipEditableSpaceBases ( )
protected

Flip the editable space base buffer

◆ ForceMotionVector()

void USkinnedMeshComponent::ForceMotionVector ( )

◆ GetActiveMeshDeformers()

FMeshDeformerSet USkinnedMeshComponent::GetActiveMeshDeformers ( ) const
protected

Get the currently active MeshDeformer. This may come from the SkeletalMesh default or the Component override.

◆ GetAdditionalRequiredBonesForLeader()

virtual void USkinnedMeshComponent::GetAdditionalRequiredBonesForLeader ( int32  LODIndex,
TArray< FBoneIndexType > &  InOutRequiredBones 
) const
inlinevirtual

Override this function to add any additional required bones from followers to functions such as USkeletalMeshComponent::ComputeRequiredBones(). The additional bones will need to be passed using the Leader's bone index mapping, sorted in hierarchical order, and merged into the InOutRequiredBones array.

Parameters
LODIndex- the LOD to get the required bones for.
InOutRequiredBones- the array in which to merge the additional required bones.

◆ GetAlwaysUseMeshDeformer()

bool USkinnedMeshComponent::GetAlwaysUseMeshDeformer ( ) const

Returns whether the component is set to always use a mesh deformer if one can be found in the project settings

◆ GetBaseComponent()

const USkinnedMeshComponent * USkinnedMeshComponent::GetBaseComponent ( ) const
inline

◆ GetBoneAxis()

FVector USkinnedMeshComponent::GetBoneAxis ( FName  BoneName,
EAxis::Type  Axis 
) const

finds a vector pointing along the given axis of the given bone

Parameters
BoneNamethe name of the bone to find
Axisthe axis of that bone to return
Returns
the direction of the specified axis, or (0,0,0) if the specified bone was not found

◆ GetBoneIndex()

int32 USkinnedMeshComponent::GetBoneIndex ( FName  BoneName) const

Find the index of bone by name. Looks in the current SkeletalMesh being used by this SkeletalMeshComponent.

Parameters
BoneNameName of bone to look up
Returns
Index of the named bone in the current SkeletalMesh. Will return INDEX_NONE if bone not found.
See also
USkeletalMesh::GetBoneIndex.

◆ GetBoneLocation()

FVector USkinnedMeshComponent::GetBoneLocation ( FName  BoneName,
EBoneSpaces::Type  Space = EBoneSpaces::WorldSpace 
) const

Get Bone Location

Parameters
BoneNameName of the bone
Space0 == World, 1 == Local (Component)
Returns
Vector of the bone

◆ GetBoneMatrix()

FMatrix USkinnedMeshComponent::GetBoneMatrix ( int32  BoneIndex) const

Get Bone Matrix from index

Parameters
BoneIndexIndex of the bone
Returns
the matrix of the bone at the specified index

◆ GetBoneName()

FName USkinnedMeshComponent::GetBoneName ( int32  BoneIndex) const

Get Bone Name from index

Parameters
BoneIndexIndex of the bone
Returns
the name of the bone at the specified index

◆ GetBoneNames()

void USkinnedMeshComponent::GetBoneNames ( TArray< FName > &  BoneNames)

Fills the given array with the names of all the bones in this component's current SkeletalMesh

Parameters
(out)Array to fill the names of the bones

◆ GetBoneQuaternion()

FQuat USkinnedMeshComponent::GetBoneQuaternion ( FName  BoneName,
EBoneSpaces::Type  Space = EBoneSpaces::WorldSpace 
) const

Get Bone Rotation in Quaternion

Parameters
BoneNameName of the bone
Space0 == World, 1 == Local (Component)
Returns
Quaternion of the bone

◆ GetBoneTransform() [1/3]

FTransform USkinnedMeshComponent::GetBoneTransform ( FName  InBoneName,
ERelativeTransformSpace  TransformSpace = RTS_World 
) const
inline

Get world-space bone transform.

Parameters
InBoneNameName of the the bone to get the transform
Returns
Bone transform in world space if bone is found. Otherwise it will return component's transform in world space.

◆ GetBoneTransform() [2/3]

FTransform USkinnedMeshComponent::GetBoneTransform ( int32  BoneIndex) const

Get Bone Transform from index

Parameters
BoneIndexIndex of the bone
Returns
the transform of the bone at the specified index

◆ GetBoneTransform() [3/3]

FTransform USkinnedMeshComponent::GetBoneTransform ( int32  BoneIndex,
const FTransform LocalToWorld 
) const

Get world space bone transform from bone index, also specifying the component transform to use

Parameters
BoneIndexIndex of the bone
Returns
the transform of the bone at the specified index

◆ GetBoneTransformRevisionNumber()

uint32 USkinnedMeshComponent::GetBoneTransformRevisionNumber ( ) const
inline

◆ GetBoneVisibilityStates()

const TArray< uint8 > & USkinnedMeshComponent::GetBoneVisibilityStates ( ) const
inline

Access BoneVisibilityStates for reading

◆ GetCachedLocalBounds()

FBoxSphereBounds USkinnedMeshComponent::GetCachedLocalBounds ( ) const
inline

◆ GetComponentMeshDeformer()

TObjectPtr< UMeshDeformer > USkinnedMeshComponent::GetComponentMeshDeformer ( ) const
inline

◆ GetComponentSpaceTransforms()

const TArray< FTransform > & USkinnedMeshComponent::GetComponentSpaceTransforms ( ) const
inline

Access ComponentSpaceTransforms for reading

◆ GetCPUSkinnedCachedFinalVertices()

void USkinnedMeshComponent::GetCPUSkinnedCachedFinalVertices ( TArray< FFinalSkinVertex > &  OutVertices) const

◆ GetCPUSkinnedVertices()

void USkinnedMeshComponent::GetCPUSkinnedVertices ( TArray< struct FFinalSkinVertex > &  OutVertices,
int32  InLODIndex 
) const

Get CPU skinned vertices for the specified LOD level. Includes morph targets if they are enabled. Note: This function is very SLOW as it needs to flush the render thread.

Parameters
OutVerticesThe skinned vertices
InLODIndexThe LOD we want to export

◆ GetCPUSkinningEnabled()

bool USkinnedMeshComponent::GetCPUSkinningEnabled ( ) const

Getter for bCPUSkinning member variable May return a different value from ShouldCPUSkin()

◆ GetCurrentBoneTransformFrame()

uint32 USkinnedMeshComponent::GetCurrentBoneTransformFrame ( ) const
inline

◆ GetCurrentRefToLocalMatrices()

void USkinnedMeshComponent::GetCurrentRefToLocalMatrices ( TArray< FMatrix44f > &  OutRefToLocals,
int32  InLodIdx,
const TArray< FBoneIndexType > *  ExtraRequiredBoneIndices = nullptr 
) const

Return the skinning matrices used for rendering.

◆ GetCurrentSkinWeightProfileLayerNames()

TArray< FName > USkinnedMeshComponent::GetCurrentSkinWeightProfileLayerNames ( ) const

Return the names of the skin weight profiles for all the layers

◆ GetCurrentSkinWeightProfileName()

FName USkinnedMeshComponent::GetCurrentSkinWeightProfileName ( ESkinWeightProfileLayer  InLayer = ESkinWeightProfileLayer::Primary) const

Return the name of the skin weight profile that is currently set on the given layer, otherwise returns 'None'

◆ GetDefaultMaterialSlotsOverlayMaterial()

void USkinnedMeshComponent::GetDefaultMaterialSlotsOverlayMaterial ( TArray< TObjectPtr< UMaterialInterface > > &  OutMaterialSlotOverlayMaterials) const
overrideprotectedvirtual

Get all default material slots overlay materials from the mesh.

Reimplemented from UMeshComponent.

◆ GetDefaultOverlayMaterial()

UMaterialInterface * USkinnedMeshComponent::GetDefaultOverlayMaterial ( ) const
overrideprotectedvirtual

Get the default overlay material used by a mesh

Reimplemented from UMeshComponent.

◆ GetDefaultOverlayMaterialMaxDrawDistance()

float USkinnedMeshComponent::GetDefaultOverlayMaterialMaxDrawDistance ( ) const
overrideprotectedvirtual

Get the default overlay material max draw distance

Reimplemented from UMeshComponent.

◆ GetDeltaTransformFromRefPose()

FTransform USkinnedMeshComponent::GetDeltaTransformFromRefPose ( FName  BoneName,
FName  BaseName = NAME_None 
) const

Get delta transform from reference pose based on BaseNode. This uses last frame up-to-date transform, so it will have a frame delay if you use this info in the AnimGraph

Parameters
BoneNameName of the bone
BaseNameName of the base bone - if none, it will use parent as a base
Returns
the delta transform from refpose in that given space (BaseName)

◆ GetDetailedInfoInternal()

FString USkinnedMeshComponent::GetDetailedInfoInternal ( ) const
overridevirtual

◆ GetEditableBoneVisibilityStates() [1/2]

TArray< uint8 > & USkinnedMeshComponent::GetEditableBoneVisibilityStates ( )
inline

Get Access to the current editable bone visibility states

◆ GetEditableBoneVisibilityStates() [2/2]

const TArray< uint8 > & USkinnedMeshComponent::GetEditableBoneVisibilityStates ( ) const
inline

◆ GetEditableComponentSpaceTransforms() [1/2]

TArray< FTransform > & USkinnedMeshComponent::GetEditableComponentSpaceTransforms ( )
inline

Get Access to the current editable space bases

◆ GetEditableComponentSpaceTransforms() [2/2]

const TArray< FTransform > & USkinnedMeshComponent::GetEditableComponentSpaceTransforms ( ) const
inline

◆ GetExternalMorphSets() [1/2]

FExternalMorphSets & USkinnedMeshComponent::GetExternalMorphSets ( int32  LOD)
inline

◆ GetExternalMorphSets() [2/2]

const FExternalMorphSets & USkinnedMeshComponent::GetExternalMorphSets ( int32  LOD) const
inline

Get the external morph sets for a given LOD.

◆ GetExternalMorphSetsArray()

const TArray< FExternalMorphSets > & USkinnedMeshComponent::GetExternalMorphSetsArray ( ) const
inline

Get the array of external morph target sets. It is an array, one entry for each LOD.

◆ GetExternalMorphWeights() [1/2]

FExternalMorphWeightData & USkinnedMeshComponent::GetExternalMorphWeights ( int32  LOD)

Get the weights for a given external morph target set at a specific LOD.

◆ GetExternalMorphWeights() [2/2]

const FExternalMorphWeightData & USkinnedMeshComponent::GetExternalMorphWeights ( int32  LOD) const

Get the weights in read-only mode for a given external morph target set at a specific LOD.

◆ GetExternalTickRate()

uint8 USkinnedMeshComponent::GetExternalTickRate ( ) const
inline

Get the external tick rate

◆ GetFollowerPoseComponents()

const TArray< TWeakObjectPtr< USkinnedMeshComponent > > & USkinnedMeshComponent::GetFollowerPoseComponents ( ) const

Return current active list of follower components

◆ GetForcedLOD()

int32 USkinnedMeshComponent::GetForcedLOD ( ) const

Get ForcedLodModel of the mesh component. Note that the actual forced LOD level is the return value minus one and zero means no forced LOD

◆ GetForceUpdateDynamicDataImmediately()

bool USkinnedMeshComponent::GetForceUpdateDynamicDataImmediately ( ) const
inline

◆ GetLeaderBoneMap()

const TArray< int32 > & USkinnedMeshComponent::GetLeaderBoneMap ( ) const
inline

◆ GetMasterBoneMap()

const TArray< int32 > & USkinnedMeshComponent::GetMasterBoneMap ( ) const
inline

◆ GetMaterial()

UMaterialInterface * USkinnedMeshComponent::GetMaterial ( int32  MaterialIndex) const
overridevirtual

Reimplemented from UMeshComponent.

◆ GetMaterialIndex()

int32 USkinnedMeshComponent::GetMaterialIndex ( FName  MaterialSlotName) const
overridevirtual

◆ GetMaterialSlotNames()

TArray< FName > USkinnedMeshComponent::GetMaterialSlotNames ( ) const
overridevirtual

◆ GetMaterialStreamingData()

bool USkinnedMeshComponent::GetMaterialStreamingData ( int32  MaterialIndex,
FPrimitiveMaterialInfo MaterialData 
) const
overridevirtual

Get the material info for texture streaming. Return whether the data is valid or not.

Reimplemented from UMeshComponent.

◆ GetMeshDeformerInstance()

UMeshDeformerInstance * USkinnedMeshComponent::GetMeshDeformerInstance ( ) const

◆ GetMeshDeformerInstanceForLOD()

UMeshDeformerInstance * USkinnedMeshComponent::GetMeshDeformerInstanceForLOD ( int32  LODIndex) const

Gets the MeshDeformer for the given LOD.

Returns null if the LOD doesn't use a deformer or if the index is out of range.

This function takes GetMeshDeformerMaxLOD() into account, so there's no need to call both.

◆ GetMeshDeformerInstances()

const FMeshDeformerInstanceSet & USkinnedMeshComponent::GetMeshDeformerInstances ( ) const
inline

◆ GetMeshDeformerMaxLOD()

int32 USkinnedMeshComponent::GetMeshDeformerMaxLOD ( ) const
virtual

Max LOD at which to update or apply the MeshDeformer.

◆ GetMeshObject()

const FSkeletalMeshObject * USkinnedMeshComponent::GetMeshObject ( ) const
inline

Retrieve the mesh object currently assigned to this component

◆ GetNaniteResources()

const Nanite::FResources * USkinnedMeshComponent::GetNaniteResources ( ) const
virtual

◆ GetNumBones()

int32 USkinnedMeshComponent::GetNumBones ( ) const

Returns the number of bones in the skeleton.

◆ GetNumComponentSpaceTransforms()

int32 USkinnedMeshComponent::GetNumComponentSpaceTransforms ( ) const
inline

Get current number of component space transorms

◆ GetNumLODs()

int32 USkinnedMeshComponent::GetNumLODs ( ) const

Get the number of LODs on this component

◆ GetNumMaterials()

int32 USkinnedMeshComponent::GetNumMaterials ( ) const
overridevirtual

Reimplemented from UMeshComponent.

◆ GetParentBone()

FName USkinnedMeshComponent::GetParentBone ( FName  BoneName) const

Get Parent Bone of the input bone

Parameters
BoneNameName of the bone
Returns
the name of the parent bone for the specified bone. Returns 'None' if the bone does not exist or it is the root bone

◆ GetPhysicsAsset()

class UPhysicsAsset * USkinnedMeshComponent::GetPhysicsAsset ( ) const

Return PhysicsAsset for this SkeletalMeshComponent It will return SkeletalMesh's PhysicsAsset unless PhysicsAssetOverride is set for this component

Returns
: PhysicsAsset that's used by this component

◆ GetPhysicsRequiredBones()

void USkinnedMeshComponent::GetPhysicsRequiredBones ( const USkinnedAsset SkinnedAsset,
const UPhysicsAsset PhysicsAsset,
TArray< FBoneIndexType > &  OutRequiredBones 
)
static

Get the bones used by the physics asset (if any), as these have to be updated even if LODed out.

◆ GetPredictedLODLevel()

int32 USkinnedMeshComponent::GetPredictedLODLevel ( ) const
inline

Get predicted LOD level. This value is usually calculated in UpdateLODStatus, but can be modified by skeletal mesh streaming.

◆ GetPreSkinnedLocalBounds()

void USkinnedMeshComponent::GetPreSkinnedLocalBounds ( FBoxSphereBounds OutBounds) const

Get the pre-skinning local space bounds for this component.

◆ GetPreviousBoneTransformRevisionNumber()

uint32 USkinnedMeshComponent::GetPreviousBoneTransformRevisionNumber ( ) const
inline

◆ GetPreviousBoneVisibilityStates()

const TArray< uint8 > & USkinnedMeshComponent::GetPreviousBoneVisibilityStates ( ) const
inline

const getters for previous transform idea

◆ GetPreviousComponentTransformsArray()

const TArray< FTransform > & USkinnedMeshComponent::GetPreviousComponentTransformsArray ( ) const
inline

◆ GetPrimitiveStats()

void USkinnedMeshComponent::GetPrimitiveStats ( FPrimitiveStats PrimitiveStats) const
overridevirtual

◆ GetRefPoseOverride()

virtual const TSharedPtr< FSkelMeshRefPoseOverride > & USkinnedMeshComponent::GetRefPoseOverride ( ) const
inlinevirtual

Accessor for RefPoseOverride

◆ GetRefPosePosition()

FVector USkinnedMeshComponent::GetRefPosePosition ( int32  BoneIndex) const

Gets the local-space position of a bone in the reference pose.

Parameters
BoneIndexIndex of the bone
Returns
Local space reference position

◆ GetRefPoseTransform()

FTransform USkinnedMeshComponent::GetRefPoseTransform ( int32  BoneIndex) const

Gets the local-space transform of a bone in the reference pose.

Parameters
BoneIndexIndex of the bone
Returns
Local space reference transform

◆ GetResourceSizeEx()

void USkinnedMeshComponent::GetResourceSizeEx ( FResourceSizeEx CumulativeResourceSize)
overridevirtual

◆ GetSkeletalMeshRenderData()

FSkeletalMeshRenderData * USkinnedMeshComponent::GetSkeletalMeshRenderData ( ) const

Gets the skeletal mesh resource used for rendering the component.

◆ GetSkinnedAsset()

USkinnedAsset * USkinnedMeshComponent::GetSkinnedAsset ( ) const

Get the SkinnedAsset rendered for this mesh.

Returns
the SkinnedAsset set to this mesh.

◆ GetSkinnedVertexPosition() [1/2]

FVector3f USkinnedMeshComponent::GetSkinnedVertexPosition ( USkinnedMeshComponent Component,
int32  VertexIndex,
const FSkeletalMeshLODRenderData LODData,
FSkinWeightVertexBuffer SkinWeightBuffer,
TArray< FMatrix44f > &  CachedRefToLocals 
)
static

Simple, CPU evaluation of a vertex's skinned position (returned in component space)

Parameters
VertexIndexVertex Index. If compressed, this will be slow.
ModelThe Model to use.
SkinWeightBufferThe SkinWeightBuffer to use.
CachedRefToLocalsCached RefToLocal matrices.

◆ GetSkinnedVertexPosition() [2/2]

FVector3f USkinnedMeshComponent::GetSkinnedVertexPosition ( USkinnedMeshComponent Component,
int32  VertexIndex,
const FSkeletalMeshLODRenderData LODDatal,
FSkinWeightVertexBuffer SkinWeightBuffer 
)
static

Simple, CPU evaluation of a vertex's skinned position (returned in component space)

Parameters
VertexIndexVertex Index. If compressed, this will be slow.
ModelThe Model to use.
SkinWeightBufferThe SkinWeightBuffer to use.
CachedRefToLocalsCached RefToLocal matrices.

◆ GetSkinWeightBuffer()

FSkinWeightVertexBuffer * USkinnedMeshComponent::GetSkinWeightBuffer ( int32  LODIndex) const

Returns skin weight vertex buffer to use for specific LOD (will look at override)

◆ GetSlavePoseComponents()

const TArray< TWeakObjectPtr< USkinnedMeshComponent > > & USkinnedMeshComponent::GetSlavePoseComponents ( ) const
inline

◆ GetSocketBoneName()

FName USkinnedMeshComponent::GetSocketBoneName ( FName  InSocketName) const

Returns bone name linked to a given named socket on the skeletal mesh component. If you're unsure to deal with sockets or bones names, you can use this function to filter through, and always return the bone name.

Parameters
bonename or socket name
Returns
bone name

◆ GetSocketByName()

class USkeletalMeshSocket const * USkinnedMeshComponent::GetSocketByName ( FName  InSocketName) const
Parameters
InSocketNameThe name of the socket to find
Returns
SkeletalMeshSocket of named socket on the skeletal mesh component, or nullptr if not found.

◆ GetSocketInfoByName()

class USkeletalMeshSocket const * USkinnedMeshComponent::GetSocketInfoByName ( FName  InSocketName,
FTransform OutTransform,
int32 OutBoneIndex 
) const
Parameters
InSocketNameThe name of the socket to find
OutBoneIndexThe socket bone index in this skeletal mesh, or INDEX_NONE if the socket is not found or not a bone-relative socket
OutTransformThe socket local transform, or identity if the socket is not found.
Returns
SkeletalMeshSocket of named socket on the skeletal mesh component, or nullptr if not found.

◆ GetSocketRequiredBones()

void USkinnedMeshComponent::GetSocketRequiredBones ( const USkinnedAsset SkinnedAsset,
TArray< FBoneIndexType > &  OutRequiredBones,
TArray< FBoneIndexType > &  NeededBonesForFillComponentSpaceTransforms 
)
static

Get the bones that are used by sockets.

Parameters
OutRequiredBones- the bones used by sockets that are set as always animate
NeededBonesForFillComponentSpaceTransforms- the rest of bones used by sockets (that are not set to always animate)

◆ GetSocketTransform()

FTransform USkinnedMeshComponent::GetSocketTransform ( FName  InSocketName,
ERelativeTransformSpace  TransformSpace = RTS_World 
) const
overridevirtual

◆ GetStreamingRenderAssetInfo()

void USkinnedMeshComponent::GetStreamingRenderAssetInfo ( FStreamingTextureLevelContext LevelContext,
TArray< FStreamingRenderAssetPrimitiveInfo > &  OutStreamingRenderAssets 
) const
overridevirtual

◆ GetStreamingScale()

virtual float USkinnedMeshComponent::GetStreamingScale ( ) const
inlineoverridevirtual

◆ GetTwistAndSwingAngleOfDeltaRotationFromRefPose()

bool USkinnedMeshComponent::GetTwistAndSwingAngleOfDeltaRotationFromRefPose ( FName  BoneName,
float OutTwistAngle,
float OutSwingAngle 
) const

Get Twist and Swing Angle in Degree of Delta Rotation from Reference Pose in Local space

First this function gets rotation of current, and rotation of ref pose in local space, and And gets twist/swing angle value from refpose aligned.

Parameters
BoneNameName of the bone
OutTwistAngleTwistAngle in degree
OutSwingAngleSwingAngle in degree
Returns
true if succeed. False otherwise. Often due to incorrect bone name.

◆ GetUpdateClothSimulationData_AnyThread()

void USkinnedMeshComponent::GetUpdateClothSimulationData_AnyThread ( TMap< int32, FClothSimulData > &  OutClothSimulData,
FMatrix OutLocalToWorld,
float OutClothBlendWeight 
) const
overridevirtual

Override this function to pass on cloth simulation data (or any deformable using the cloth pipeline) to the skeletal renderer.

Implements IClothSimulationDataProvider.

◆ GetUsedMaterials()

void USkinnedMeshComponent::GetUsedMaterials ( TArray< UMaterialInterface * > &  OutMaterials,
bool  bGetDebugMaterials = false 
) const
overridevirtual

Reimplemented from UMeshComponent.

◆ GetValidMinLOD()

int32 USkinnedMeshComponent::GetValidMinLOD ( const int32  InMinLODIndex) const

Validate the min LOD value of the mesh component by iterating over render data to make sure we get something usable.

Parameters
InMinLODThe starting LOD index to iterate from to make sure the render data is valid. Range from [0, Max Number of LOD - 1].

◆ GetVertexColor()

FColor USkinnedMeshComponent::GetVertexColor ( int32  VertexIndex) const

Returns color of the vertex.

Parameters
VertexIndexVertex Index. If compressed, this will be slow.

◆ GetVertexUV()

FVector2D USkinnedMeshComponent::GetVertexUV ( int32  VertexIndex,
uint32  UVChannel 
) const

Returns texture coordinates of the vertex.

Parameters
VertexIndexVertex Index. If compressed, this will be slow.
TexCoordChannelTexture coordinate channel Index.

◆ HasAnyAttachedSockets()

bool USkinnedMeshComponent::HasAnyAttachedSockets ( ) const
Returns
true if this component has any attach children that are attached via sockets

◆ HasAnySockets()

bool USkinnedMeshComponent::HasAnySockets ( ) const
overridevirtual

◆ HasExternalMorphSet()

bool USkinnedMeshComponent::HasExternalMorphSet ( int32  LOD,
int32  ID 
) const

Do we have a given set of external morph targets?

◆ HasMeshDeformer() [1/2]

bool USkinnedMeshComponent::HasMeshDeformer ( ) const

◆ HasMeshDeformer() [2/2]

bool USkinnedMeshComponent::HasMeshDeformer ( int32  LodIdx) const

◆ HasValidNaniteData()

bool USkinnedMeshComponent::HasValidNaniteData ( ) const
virtual

Returns true if the component has valid Nanite render data.

◆ HideBone()

void USkinnedMeshComponent::HideBone ( int32  BoneIndex,
EPhysBodyOp  PhysBodyOption 
)
virtual

Hides the specified bone. You can also set option for physics body.

Parameters
BoneIndexIndex of the bone
PhysBodyOptionOption for physics bodies that attach to the bones to be hidden

◆ HideBoneByName()

void USkinnedMeshComponent::HideBoneByName ( FName  BoneName,
EPhysBodyOp  PhysBodyOption 
)

Hides the specified bone with name. Currently this just enforces a scale of 0 for the hidden bones. Compared to HideBone By Index - This keeps track of list of bones and update when LOD changes

Parameters
BoneNameName of bone to hide
PhysBodyOptionOption for physics bodies that attach to the bones to be hidden

◆ InitLODInfos()

void USkinnedMeshComponent::InitLODInfos ( )

Initialize the LOD entries for the component

◆ InvalidateCachedBounds()

void USkinnedMeshComponent::InvalidateCachedBounds ( )

Invalidate Cached Bounds, when Mesh Component has been updated.

◆ IsBoneHidden()

bool USkinnedMeshComponent::IsBoneHidden ( int32  BoneIndex) const

Determines if the specified bone is hidden.

Parameters
BoneIndexIndex of the bone
Returns
true if hidden

◆ IsBoneHiddenByName()

bool USkinnedMeshComponent::IsBoneHiddenByName ( FName  BoneName)

Determines if the specified bone is hidden.

Parameters
BoneNameName of bone to check
Returns
true if hidden

◆ IsMaterialSectionShown()

bool USkinnedMeshComponent::IsMaterialSectionShown ( int32  MaterialID,
int32  LODIndex 
)

Returns whether a specific material section is currently hidden on this component (by using ShowMaterialSection)

◆ IsMaterialSlotNameValid()

bool USkinnedMeshComponent::IsMaterialSlotNameValid ( FName  MaterialSlotName) const
overridevirtual

◆ IsPlayingNetworkedRootMotionMontage()

virtual bool USkinnedMeshComponent::IsPlayingNetworkedRootMotionMontage ( ) const
inlinevirtual

◆ IsPlayingRootMotion()

virtual bool USkinnedMeshComponent::IsPlayingRootMotion ( ) const
inlinevirtual

◆ IsPlayingRootMotionFromEverything()

virtual bool USkinnedMeshComponent::IsPlayingRootMotionFromEverything ( ) const
inlinevirtual

◆ IsSkinCacheAllowed()

bool USkinnedMeshComponent::IsSkinCacheAllowed ( int32  LodIdx) const

◆ IsSkinWeightProfilePending()

bool USkinnedMeshComponent::IsSkinWeightProfilePending ( ) const
inline

Check whether a skin weight profile is currently pending load / create

◆ IsUsingExternalInterpolation()

bool USkinnedMeshComponent::IsUsingExternalInterpolation ( ) const
inline

Check whether we should be interpolating due to external settings

◆ IsUsingExternalTickRateControl()

bool USkinnedMeshComponent::IsUsingExternalTickRateControl ( ) const
inline

Check whether we we have our tick rate externally controlled

◆ IsUsingSkinWeightProfile()

bool USkinnedMeshComponent::IsUsingSkinWeightProfile ( ) const

Check whether a skin weight profile is currently set on any layer.

◆ IsValidExternalMorphSetLODIndex()

bool USkinnedMeshComponent::IsValidExternalMorphSetLODIndex ( int32  LOD) const

Check whether a given LOD index is valid for the external morph sets.

◆ MergeInBoneIndexArrays()

void USkinnedMeshComponent::MergeInBoneIndexArrays ( TArray< FBoneIndexType > &  BaseArray,
const TArray< FBoneIndexType > &  InsertArray 
)
static

Takes sorted array Base and then adds any elements from sorted array Insert which is missing from it, preserving order. This assumes both arrays are sorted and contain unique bone indices.

Takes sorted array Base and then adds any elements from sorted array Insert which is missing from it, preserving order. this assumes both arrays are sorted and contain unique bone indices.

◆ OnChildAttached()

void USkinnedMeshComponent::OnChildAttached ( USceneComponent *  ChildComponent)
overridevirtual

◆ OnChildDetached()

void USkinnedMeshComponent::OnChildDetached ( USceneComponent *  ChildComponent)
overridevirtual

◆ OnRegister()

void USkinnedMeshComponent::OnRegister ( )
overrideprotectedvirtual

◆ OnUnregister()

void USkinnedMeshComponent::OnUnregister ( )
overrideprotectedvirtual

◆ OverrideMinLOD()

void USkinnedMeshComponent::OverrideMinLOD ( int32  InNewMinLOD)

Override the Min LOD of the mesh component

Parameters
InNewMinLODOverride new MinLodModel that make sure the LOD does not go below of this value. Range from [0, Max Number of LOD - 1]. This will affect in the next tick update.

◆ PostInitMeshObject()

virtual void USkinnedMeshComponent::PostInitMeshObject ( FSkeletalMeshObject )
inlinevirtual

Function to operate on mesh object after its created, but before it's attached.

Parameters
MeshObject- Mesh Object owned by this component

◆ PostLoad()

void USkinnedMeshComponent::PostLoad ( )
overridevirtual

◆ PrestreamMeshLODs()

bool USkinnedMeshComponent::PrestreamMeshLODs ( float  Seconds)
overridevirtual

Tell the streaming system to start streaming in all LODs for the mesh. Note: this function may set bIgnoreStreamingMipBias on this component enable the FastForceResident system.

Returns
bool True if streaming was successfully requested
Parameters
SecondsNumber of seconds to force all LODs to be resident

Reimplemented from UMeshComponent.

◆ QuerySupportedSockets()

void USkinnedMeshComponent::QuerySupportedSockets ( TArray< FComponentSocketDescription > &  OutSockets) const
overridevirtual

◆ RebuildVisibilityArray()

void USkinnedMeshComponent::RebuildVisibilityArray ( )

Rebuild BoneVisibilityStates array. Mostly refresh information of bones for BVS_HiddenByParent

◆ RefreshExternalMorphTargetWeights()

void USkinnedMeshComponent::RefreshExternalMorphTargetWeights ( bool  bZeroOldWeights = true)

Refresh the external morph target weight buffers. This makes sure the amount of morph sets and number of weights are valid.

◆ RefreshFollowerComponents()

void USkinnedMeshComponent::RefreshFollowerComponents ( )

Refresh Follower Components if exists

This isn't necessary in any other case except in editor where you need to mark them as dirty for rendering

◆ RefreshSlaveComponents()

void USkinnedMeshComponent::RefreshSlaveComponents ( )
inline

◆ RefreshUpdateRateParams()

void USkinnedMeshComponent::RefreshUpdateRateParams ( )
protected

Recreates update rate params and internal tracker data

◆ RegisterLODStreamingCallback() [1/2]

void USkinnedMeshComponent::RegisterLODStreamingCallback ( FLODStreamingCallback &&  Callback,
int32  LODIdx,
float  TimeoutSecs,
bool  bOnStreamIn 
)
overridevirtual

Register a one-time callback that will be called when criteria met

Parameters
Callback
LODIdxThe LOD index expected. Specify -1 for the MinLOD.
TimeoutSecsTimeout in seconds
bOnStreamInTo get notified when the expected LOD is streamed in or out

Reimplemented from UMeshComponent.

◆ RegisterLODStreamingCallback() [2/2]

void USkinnedMeshComponent::RegisterLODStreamingCallback ( FLODStreamingCallback &&  CallbackStreamingStart,
FLODStreamingCallback &&  CallbackStreamingDone,
float  TimeoutStartSecs,
float  TimeoutDoneSecs 
)
overridevirtual

Register a one-time callback that will be called when streaming starts or ends.

Parameters
CallbackStreamingStartThe callback to notify when streaming new LODs in begins. The callback will not always be called if the asset is not streamable, or the asset or component is unloaded.
CallbackStreamingDoneThe callback to notify when streaming is done. The callback will not be called if the start timeout expired.
TimeoutStartSecsTimeout for streaming to start, in seconds
TimeoutDoneSecsTimeout for streaming to end, in seconds

Reimplemented from UMeshComponent.

◆ RegisterOnBoneTransformsFinalizedDelegate()

virtual FDelegateHandle USkinnedMeshComponent::RegisterOnBoneTransformsFinalizedDelegate ( const FOnBoneTransformsFinalizedMultiCast::FDelegate &  )
inlinevirtual

Register an OnBoneTransformsFinalized callback which can be called in FinalizeBoneTransform(). Note the inherited class has to implement the Broadcast call in FinalizeBoneTransform() if it wants to mimic the same behavior as in USkeletalMeshComponent.

Parameters
Delegate- the delegate to be broadcasted in FinalizeBoneTransform by the inherited class.

◆ ReleaseResources()

void USkinnedMeshComponent::ReleaseResources ( )

Release any rendering resources owned by this component

◆ ReleaseUpdateRateParams()

void USkinnedMeshComponent::ReleaseUpdateRateParams ( )
protected

Removes update rate params and internal tracker data

◆ RemoveAllSocketOverrides()

void USkinnedMeshComponent::RemoveAllSocketOverrides ( )

◆ RemoveExternalMorphSet()

void USkinnedMeshComponent::RemoveExternalMorphSet ( int32  LOD,
int32  ID 
)

Remove a given set of external GPU based morph targets.

◆ RemoveFollowerPoseComponent()

void USkinnedMeshComponent::RemoveFollowerPoseComponent ( USkinnedMeshComponent SkinnedMeshComponent)
protectedvirtual

Remove a follower component from the FollowerPoseComponents array

◆ RemoveSlavePoseComponent()

virtual void USkinnedMeshComponent::RemoveSlavePoseComponent ( USkinnedMeshComponent SkinnedMeshComponent)
inlineprotectedvirtual

◆ RemoveSocketOverrides()

void USkinnedMeshComponent::RemoveSocketOverrides ( FName  SourceSocketName)

◆ RequiresGameThreadEndOfFrameRecreate()

bool USkinnedMeshComponent::RequiresGameThreadEndOfFrameRecreate ( ) const
overrideprotectedvirtual

◆ ResizeExternalMorphTargetSets()

void USkinnedMeshComponent::ResizeExternalMorphTargetSets ( )

Resize the morph target sets array to the number of LODs.

◆ SendRenderDynamicData_Concurrent()

void USkinnedMeshComponent::SendRenderDynamicData_Concurrent ( )
overrideprotectedvirtual

◆ Serialize()

void USkinnedMeshComponent::Serialize ( FArchive Ar)
overridevirtual

◆ SetAlwaysUseMeshDeformer()

void USkinnedMeshComponent::SetAlwaysUseMeshDeformer ( bool  bShouldAlwaysUseMeshDeformer)

Always use a MeshDeformer as long as one can be found in the project settings

Parameters
bShouldAlwaysUseMeshDeformerAlways use mesh deformer for this component

◆ SetCapsuleIndirectShadowMinVisibility()

void USkinnedMeshComponent::SetCapsuleIndirectShadowMinVisibility ( float  NewValue)

◆ SetCastCapsuleDirectShadow()

void USkinnedMeshComponent::SetCastCapsuleDirectShadow ( bool  bNewValue)

◆ SetCastCapsuleIndirectShadow()

void USkinnedMeshComponent::SetCastCapsuleIndirectShadow ( bool  bNewValue)

◆ SetComponentSpaceTransformsDoubleBuffering()

void USkinnedMeshComponent::SetComponentSpaceTransformsDoubleBuffering ( bool  bInDoubleBufferedComponentSpaceTransforms)

◆ SetCPUSkinningEnabled()

void USkinnedMeshComponent::SetCPUSkinningEnabled ( bool  bEnable,
bool  bRecreateRenderStateImmediately = false 
)

Set whether this component uses CPU skinning Notes:

  • If enabled, skeletal mesh referenced by this component will be removed from streaming manager
  • Streaming cannot be (re)enabled as long as any component uses CPU skinning
  • This function is expensive

◆ SetExternalDeltaTime()

void USkinnedMeshComponent::SetExternalDeltaTime ( float  InDeltaTime)
inline

Set non-URO-based delta time

◆ SetExternalInterpolationAlpha()

void USkinnedMeshComponent::SetExternalInterpolationAlpha ( float  InAlpha)
inline

Set non-URO-based interpolation alpha

◆ SetExternalTickRate()

void USkinnedMeshComponent::SetExternalTickRate ( uint8  InTickRate)
inline

Set the external tick rate

◆ SetForcedLOD()

void USkinnedMeshComponent::SetForcedLOD ( int32  InNewForcedLOD)

Set ForcedLodModel of the mesh component

Parameters
InNewForcedLODSet new ForcedLODModel that forces to set the incoming LOD. Range from [1, Max Number of LOD]. This will affect in the next tick update.

◆ SetForceUpdateDynamicDataImmediately()

void USkinnedMeshComponent::SetForceUpdateDynamicDataImmediately ( bool  bForceUpdateImmediately)
inline

◆ SetForceWireframe()

void USkinnedMeshComponent::SetForceWireframe ( bool  InForceWireframe)

Sets the value of the bForceWireframe flag and reattaches the component as necessary.

Parameters
InForceWireframeNew value of bForceWireframe.

◆ SetLeaderPoseComponent()

void USkinnedMeshComponent::SetLeaderPoseComponent ( USkinnedMeshComponent NewLeaderBoneComponent,
bool  bForceUpdate = false,
bool  bInFollowerShouldTickPose = false 
)

Set LeaderPoseComponent for this component

Parameters
NewLeaderBoneComponentNew LeaderPoseComponent
bForceUpdateIf false, the function will be skipped if NewLeaderBoneComponent is the same as currently setup (default)
bInFollowerShouldTickPoseIf false, Follower components will not execute TickPose (default)

◆ SetMasterPoseComponent()

void USkinnedMeshComponent::SetMasterPoseComponent ( USkinnedMeshComponent NewMasterBoneComponent,
bool  bForceUpdate = false 
)
inline

◆ SetMeshDeformer() [1/2]

void USkinnedMeshComponent::SetMeshDeformer ( bool  bInSetMeshDeformer,
UMeshDeformer InMeshDeformer 
)
protected

Set the MeshDeformer and update the internal MeshDeformerInstance.

◆ SetMeshDeformer() [2/2]

void USkinnedMeshComponent::SetMeshDeformer ( UMeshDeformer InMeshDeformer)

Change the MeshDeformer that is used for this Component.

Parameters
InMeshDeformerNew mesh deformer to set for this component

◆ SetPhysicsAsset()

void USkinnedMeshComponent::SetPhysicsAsset ( class UPhysicsAsset NewPhysicsAsset,
bool  bForceReInit = false 
)
virtual

Override the Physics Asset of the mesh. It uses SkeletalMesh.PhysicsAsset, but if you'd like to override use this function

Parameters
NewPhysicsAssetNew PhysicsAsset
bForceReInitForce reinitialize

◆ SetPredictedLODLevel()

virtual void USkinnedMeshComponent::SetPredictedLODLevel ( int32  InPredictedLODLevel)
inlineprotectedvirtual

Set predicted LOD level.

◆ SetRefPoseOverride()

void USkinnedMeshComponent::SetRefPoseOverride ( const TArray< FTransform > &  NewRefPoseTransforms)
virtual

Apply an override for the current mesh ref pose

◆ SetRenderStatic()

void USkinnedMeshComponent::SetRenderStatic ( bool  bNewValue)

Set whether this skinned mesh should be rendered as static mesh in a reference pose

Parameters
whetherthis skinned mesh should be rendered as static

◆ SetSkeletalMesh_DEPRECATED()

void USkinnedMeshComponent::SetSkeletalMesh_DEPRECATED ( USkeletalMesh NewMesh)

◆ SetSkinnedAsset()

void USkinnedMeshComponent::SetSkinnedAsset ( class USkinnedAsset InSkinnedAsset)

Change the SkinnedAsset that is rendered without reinitializing this Component.

Parameters
InSkinnedAssetNew mesh to set for this component

◆ SetSkinnedAssetAndUpdate()

void USkinnedMeshComponent::SetSkinnedAssetAndUpdate ( class USkinnedAsset NewMesh,
bool  bReinitPose = true 
)
virtual

Change the SkinnedAsset that is rendered for this Component. Will re-initialize the animation tree etc.

Parameters
NewMeshNew mesh to set for this component
bReinitPoseWhether we should keep current pose or reinitialize.

◆ SetSkinWeightOverride()

void USkinnedMeshComponent::SetSkinWeightOverride ( int32  LODIndex,
const TArray< FSkelMeshSkinWeightInfo > &  SkinWeights 
)

Allow override of skin weights on a per-component basis.

◆ SetSkinWeightProfile()

bool USkinnedMeshComponent::SetSkinWeightProfile ( FName  InProfileName,
ESkinWeightProfileLayer  InLayer = ESkinWeightProfileLayer::Primary 
)

Set up an override skin weight profile for this component on the given layer. The values from the secondary layer (if set to have a profile) are applied first, followed by the values from the primary layer. Since skin weight profiles are stored as sparse data, where only weight values different from the base are kept in storage, it's possible to set up layers such that they don't interfere with one another.

◆ SetSkinWeightProfileStack()

bool USkinnedMeshComponent::SetSkinWeightProfileStack ( const FSkinWeightProfileStack InProfileStack)
protected

Set the currently active skin weight profile stack to the given stack. If the stack is empty, then the skin weight profile buffer will be set to the base buffer for this mesh.

◆ SetVertexColorOverride()

void USkinnedMeshComponent::SetVertexColorOverride ( int32  LODIndex,
const TArray< FColor > &  VertexColors 
)

Allow override of vertex colors on a per-component basis.

◆ SetVertexColorOverride_LinearColor()

void USkinnedMeshComponent::SetVertexColorOverride_LinearColor ( int32  LODIndex,
const TArray< FLinearColor > &  VertexColors 
)

Allow override of vertex colors on a per-component basis, taking array of Blueprint-friendly LinearColors.

◆ ShouldCPUSkin()

bool USkinnedMeshComponent::ShouldCPUSkin ( ) const
virtual

Function returns whether or not CPU skinning should be applied Allows the editor to override the skinning state for editor tools

Returns
true if should CPU skin. false otherwise

◆ ShouldNaniteSkin()

bool USkinnedMeshComponent::ShouldNaniteSkin ( )
virtual

Function returns whether Nanite should be used to render and skin this mesh.

◆ ShouldRenderNaniteSkinnedMeshes()

bool USkinnedMeshComponent::ShouldRenderNaniteSkinnedMeshes ( )
static

Returns true if skinned meshes are allowed to be rendered as Nanite when enabled on the mesh.

◆ ShouldTickPose()

bool USkinnedMeshComponent::ShouldTickPose ( ) const
virtual

Should tick pose (by calling TickPose) in Tick

Returns
: return true if should Tick. false otherwise.

◆ ShouldUpdateBoneVisibility()

bool USkinnedMeshComponent::ShouldUpdateBoneVisibility ( ) const
protected

return true if it needs update. Return false if not

◆ ShouldUpdateTransform()

bool USkinnedMeshComponent::ShouldUpdateTransform ( bool  bLODHasChanged) const
virtual

Should update transform in Tick

Parameters
bLODHasChanged: Has LOD been changed since last time?
Returns
: return true if need transform update. false otherwise.

◆ ShouldUseUpdateRateOptimizations()

bool USkinnedMeshComponent::ShouldUseUpdateRateOptimizations ( ) const

◆ ShowAllMaterialSections()

void USkinnedMeshComponent::ShowAllMaterialSections ( int32  LODIndex)

Clear any material visibility modifications made by ShowMaterialSection

◆ ShowMaterialSection()

void USkinnedMeshComponent::ShowMaterialSection ( int32  MaterialID,
int32  SectionIndex,
bool  bShow,
int32  LODIndex 
)

Allows hiding of a particular material (by ID) on this instance of a SkeletalMesh.

Parameters
MaterialID- Index of the material show/hide
bShow- True to show the material, false to hide it
LODIndex- Index of the LOD to modify material visibility within

◆ TickComponent()

void USkinnedMeshComponent::TickComponent ( float  DeltaTime,
enum ELevelTick  TickType,
FActorComponentTickFunction ThisTickFunction 
)
overrideprotectedvirtual

◆ TickPose()

void USkinnedMeshComponent::TickPose ( float  DeltaTime,
bool  bNeedsValidRootMotion 
)
virtual

Tick Pose, this function ticks and do whatever it needs to do in this frame, should be called before RefreshBoneTransforms

Parameters
DeltaTimeDeltaTime
Returns
Return true if anything modified. Return false otherwise
Parameters
bNeedsValidRootMotion- Networked games care more about this, but if false we can do less calculations

◆ TransformFromBoneSpace()

void USkinnedMeshComponent::TransformFromBoneSpace ( FName  BoneName,
FVector  InPosition,
FRotator  InRotation,
FVector OutPosition,
FRotator OutRotation 
)

Transform a location/rotation in bone relative space to world space.

Parameters
BoneNameName of bone
InPositionInput position
InRotationInput rotation
OutPosition(out) Transformed position
OutRotation(out) Transformed rotation

◆ TransformToBoneSpace()

void USkinnedMeshComponent::TransformToBoneSpace ( FName  BoneName,
FVector  InPosition,
FRotator  InRotation,
FVector OutPosition,
FRotator OutRotation 
) const

Transform a location/rotation from world space to bone relative space. This is handy if you know the location in world space for a bone attachment, as AttachComponent takes location/rotation in bone-relative space.

Parameters
BoneNameName of bone
InPositionInput position
InRotationInput rotation
OutPosition(out) Transformed position
OutRotation(out) Transformed rotation

◆ UE_DEPRECATED() [1/2]

USkinnedMeshComponent::UE_DEPRECATED ( 5.  1,
"Use USkeletalMeshComponent::GetSkeletalMeshAsset() or GetSkinnedAsset() instead."   
)

Get the SkeletalMesh rendered for this mesh. This function is not technically deprecated but shouldn't be used other than for Blueprint backward compatibility purposes. It is used to access the correct SkinnedAsset pointer value through the deprecated SkeletalMesh property in blueprints.

Returns
the SkeletalMesh set to this mesh.

◆ UE_DEPRECATED() [2/2]

USkinnedMeshComponent::UE_DEPRECATED ( 5.  1,
"Use USkeletalMeshComponent::SetSkeletalMesh() or SetSkinnedAssetAndUpdate() instead."   
)

Change the SkeletalMesh that is rendered for this Component. Will re-initialize the animation tree etc.

Parameters
NewMeshNew mesh to set for this component
bReinitPoseWhether we should keep current pose or reinitialize.

◆ UFUNCTION()

USkinnedMeshComponent::UFUNCTION ( BlueprintCallable  ,
Category  = "Components|SkinnedMesh",
meta  = (DeprecatedFunction, DeprecationMessage="Use USkinnedMeshComponent::OverrideMinLOD() instead.") 
)

Set MinLodModel of the mesh component

Parameters
InNewMinLODSet new MinLodModel that make sure the LOD does not go below of this value. Range from [0, Max Number of LOD - 1]. This will affect in the next tick update.

◆ UnHideBone()

void USkinnedMeshComponent::UnHideBone ( int32  BoneIndex)
virtual

Unhides the specified bone.

Parameters
BoneIndexIndex of the bone

◆ UnHideBoneByName()

void USkinnedMeshComponent::UnHideBoneByName ( FName  BoneName)

UnHide the specified bone with name. Currently this just enforces a scale of 0 for the hidden bones. Compared to HideBone By Index - This keeps track of list of bones and update when LOD changes

Parameters
BoneNameName of bone to unhide

◆ UnloadSkinWeightProfile()

void USkinnedMeshComponent::UnloadSkinWeightProfile ( FName  InProfileName)

Unload a Skin Weight Profile's skin weight buffer (if created)

◆ UnregisterOnBoneTransformsFinalizedDelegate()

virtual void USkinnedMeshComponent::UnregisterOnBoneTransformsFinalizedDelegate ( const FDelegateHandle )
inlinevirtual

Unregister an OnBoneTransformsFinalized callback.

Parameters
DelegateHandle- the handle of the delegate to remove from the list.

◆ UnsetMeshDeformer()

void USkinnedMeshComponent::UnsetMeshDeformer ( )

Unset any MeshDeformer applied to this Component.

Parameters
InMeshDeformerNew mesh deformer to set for this component

◆ UpdateBounds()

void USkinnedMeshComponent::UpdateBounds ( )
overridevirtual

◆ UpdateCachedSocketAttachmentFlag()

void USkinnedMeshComponent::UpdateCachedSocketAttachmentFlag ( )
protected

◆ UpdateFollowerComponent()

void USkinnedMeshComponent::UpdateFollowerComponent ( )
virtual

Update Follower Component. This gets called when LeaderPoseComponent!=nullptr

◆ UpdateLeaderBoneMap()

void USkinnedMeshComponent::UpdateLeaderBoneMap ( )

Update LeaderBoneMap for LeaderPoseComponent and this component

◆ UpdateLODStatus()

bool USkinnedMeshComponent::UpdateLODStatus ( )
virtual

Update the PredictedLODLevel and MaxDistanceFactor in the component from its MeshObject.

Returns
true if LOD has been changed. false otherwise.

◆ UpdateLODStatus_Internal()

bool USkinnedMeshComponent::UpdateLODStatus_Internal ( int32  InLeaderPoseComponentPredictedLODLevel,
bool  bRequestedByLeaderPoseComponent = false 
)
protected

Helper function for UpdateLODStatus, called with a valid index for InLeaderPoseComponentPredictedLODLevel when updating LOD status for follower components

◆ UpdateMasterBoneMap()

void USkinnedMeshComponent::UpdateMasterBoneMap ( )
inline

◆ UpdateMorphMaterialUsageOnProxy()

void USkinnedMeshComponent::UpdateMorphMaterialUsageOnProxy ( )

Checks/updates material usage on proxy based on current morph target usage

◆ UpdateOverlapsImpl()

bool USkinnedMeshComponent::UpdateOverlapsImpl ( const TOverlapArrayView PendingOverlaps = nullptr,
bool  bDoNotifies = true,
const TOverlapArrayView OverlapsAtEndLocation = nullptr 
)
overridevirtual

◆ UpdateSkinWeightOverrideBuffer()

void USkinnedMeshComponent::UpdateSkinWeightOverrideBuffer ( )

Queues an update of the Skin Weight Buffer used by the current MeshObject

◆ UpdateSlaveComponent()

virtual void USkinnedMeshComponent::UpdateSlaveComponent ( )
inlinevirtual

◆ UpdateVisualizeLODString()

virtual void USkinnedMeshComponent::UpdateVisualizeLODString ( FString &  DebugString)
inlinevirtual

Friends And Related Symbol Documentation

◆ FRenderStateLockScope

◆ FRenderStateRecreator

◆ FSkeletalMeshStreamOut

◆ FSkinnedMeshComponentHelper

◆ FSkinnedMeshComponentRecreateRenderStateContext

Access granted to the render state recreator in order to trigger state rebuild

◆ UE::Anim::FSkinnedMeshComponentExtensions

friend struct UE::Anim::FSkinnedMeshComponentExtensions
friend

Member Data Documentation

◆ ActiveMorphTargets

FMorphTargetWeightMap USkinnedMeshComponent::ActiveMorphTargets

Array indicating all active morph targets. This map is updated inside RefreshBoneTransforms based on the Anim Blueprint.

◆ AnimUpdateRateParams

struct FAnimUpdateRateParameters* USkinnedMeshComponent::AnimUpdateRateParams

Animation Update Rate optimization parameters.

◆ bAlwaysUseMeshDeformer

bool USkinnedMeshComponent::bAlwaysUseMeshDeformer = false
protected

If true, and if no mesh deformer is set from here or the SkeletalMesh, fall back to the default deformer specified in the project settings, unless DefaultMode is set to "Never" in project settings

◆ bBoneVisibilityDirty

uint8 USkinnedMeshComponent::bBoneVisibilityDirty
protected

Whether we have updated bone visibility this tick

◆ bCachedLocalBoundsUpToDate

uint8 USkinnedMeshComponent::bCachedLocalBoundsUpToDate
mutableprotected

true when CachedLocalBounds is up to date.

◆ bCachedWorldSpaceBoundsUpToDate

uint8 USkinnedMeshComponent::bCachedWorldSpaceBoundsUpToDate
mutableprotected

◆ bCanHighlightSelectedSections

uint8 USkinnedMeshComponent::bCanHighlightSelectedSections

Whether or not we can highlight selected sections - this should really only be done in the editor

◆ bComponentUseFixedSkelBounds

uint8 USkinnedMeshComponent::bComponentUseFixedSkelBounds

When true, skip using the physics asset etc. and always use the fixed bounds defined in the SkeletalMesh.

◆ bConsiderAllBodiesForBounds

uint8 USkinnedMeshComponent::bConsiderAllBodiesForBounds

If true, when updating bounds from a PhysicsAsset, consider all BodySetups, not just those flagged with bConsiderForBounds.

◆ bCPUSkinning

UPROPERTY (EditAnywhere, AdvancedDisplay, BlueprintReadOnly, Category=Lighting, meta=(EditCondition="CastShadow && (FirstPersonPrimitiveType != EFirstPersonPrimitiveType::FirstPerson)", DisplayName = "Capsule Direct Shadow")) uint8 bCastCapsuleDirectShadow UPROPERTY (EditAnywhere, AdvancedDisplay, BlueprintReadOnly, Category=Lighting, meta=(EditCondition="CastShadow && (FirstPersonPrimitiveType != EFirstPersonPrimitiveType::FirstPerson)", DisplayName = "Capsule Indirect Shadow")) uint8 bCastCapsuleIndirectShadow uint8 USkinnedMeshComponent::bCPUSkinning

Whether to use the capsule representation (when present) from a skeletal mesh's ShadowPhysicsAsset for direct shadowing from lights. This type of shadowing is approximate but handles extremely wide area shadowing well. The softness of the shadow depends on the light's LightSourceAngle / SourceRadius. This flag will force bCastInsetShadow to be enabled. This flag is only used if CastShadow is true and if FirstPersonPrimitiveType is not set to FirstPerson. Whether to use the capsule representation (when present) from a skeletal mesh's ShadowPhysicsAsset for shadowing indirect lighting (from lightmaps or skylight). This flag is only used if CastShadow is true and if FirstPersonPrimitiveType is not set to FirstPerson. Whether or not to CPU skin this component, requires render data refresh after changing

◆ bDisableMorphTarget

uint8 USkinnedMeshComponent::bDisableMorphTarget

Disable Morphtarget for this component.

◆ bDisplayDebugUpdateRateOptimizations

uint8 USkinnedMeshComponent::bDisplayDebugUpdateRateOptimizations

Enable on screen debugging of update rate optimization. Red = Skipping 0 frames, Green = skipping 1 frame, Blue = skipping 2 frames, black = skipping more than 2 frames.

◆ bDoubleBufferedComponentSpaceTransforms

uint8 USkinnedMeshComponent::bDoubleBufferedComponentSpaceTransforms
protected

Are we using double buffered ComponentSpaceTransforms

◆ bEnableUpdateRateOptimizations

uint8 USkinnedMeshComponent::bEnableUpdateRateOptimizations

if TRUE, Owner will determine how often animation will be updated and evaluated. See AnimUpdateRateTick() This allows to skip frames for performance. (For example based on visibility and size on screen).

◆ bExternalEvaluationRateLimited

uint8 USkinnedMeshComponent::bExternalEvaluationRateLimited
protected

External flag indicating that we may not be evaluated every frame

◆ bExternalInterpolate

uint8 USkinnedMeshComponent::bExternalInterpolate
protected

Non URO-based interpolation flag

◆ bExternalTickRateControlled

uint8 USkinnedMeshComponent::bExternalTickRateControlled
protected

Whether we are externally controlling tick rate

◆ bExternalUpdate

uint8 USkinnedMeshComponent::bExternalUpdate
protected

Non URO-based update flag

◆ bFollowerShouldTickPose

uint8 USkinnedMeshComponent::bFollowerShouldTickPose
protected

If false, Follower components ShouldTickPose function will return false (default)

◆ bForceWireframe

uint8 USkinnedMeshComponent::bForceWireframe

Forces the mesh to draw in wireframe mode.

◆ bHasSocketAttachments

uint8 USkinnedMeshComponent::bHasSocketAttachments
protected

Whether this component currently has any attachments that are driven by sockets

◆ bHasValidBoneTransform

uint8 USkinnedMeshComponent::bHasValidBoneTransform
protected

used to cache previous bone transform or not

◆ bHideSkin

uint8 USkinnedMeshComponent::bHideSkin

Don't bother rendering the skin.

◆ bIgnoreLeaderPoseComponentLOD

uint8 USkinnedMeshComponent::bIgnoreLeaderPoseComponentLOD

Flag that when set will ensure UpdateLODStatus will not take the LeaderPoseComponent's current LOD in consideration when determining the correct LOD level (this requires LeaderPoseComponent's LOD to always be >= determined LOD otherwise bone transforms could be missing

◆ bIncludeComponentLocationIntoBounds

uint8 USkinnedMeshComponent::bIncludeComponentLocationIntoBounds

If true, the Location of this Component will be included into its bounds calculation (this can be useful when using SMU_OnlyTickPoseWhenRendered on a character that moves away from the root and no bones are left near the origin of the component)

◆ bMipLevelCallbackRegistered

uint8 USkinnedMeshComponent::bMipLevelCallbackRegistered
protected

Whether mip callbacks have been registered and need to be removed on destroy

◆ bNeedToFlipSpaceBaseBuffers

uint8 USkinnedMeshComponent::bNeedToFlipSpaceBaseBuffers
protected

Track whether we still need to flip to recently modified buffer

◆ BoneVisibilityStates

TArray<uint8> USkinnedMeshComponent::BoneVisibilityStates[2]
protected

Array of bone visibilities (containing one of the values in EBoneVisibilityStatus for each bone). A bone is only visible if it is exactly 1 (BVS_Visible)

◆ bOverrideMinLod

uint8 USkinnedMeshComponent::bOverrideMinLod

Whether we should use the min lod specified in MinLodModel for this component instead of the min lod in the mesh

◆ bPerBoneMotionBlur

uint8 USkinnedMeshComponent::bPerBoneMotionBlur

If true, use per-bone motion blur on this skeletal mesh (requires additional rendering, can be disabled to save performance).

◆ bRecentlyRendered

uint8 USkinnedMeshComponent::bRecentlyRendered

true if mesh has been recently rendered, false otherwise

◆ bReinitPose

bool USkinnedMeshComponent::bReinitPose = true)

◆ bRenderStatic

uint8 USkinnedMeshComponent::bRenderStatic

If true, render as static in reference pose.

◆ bSetMeshDeformer

bool USkinnedMeshComponent::bSetMeshDeformer = false
protected

If true, MeshDeformer will be used. If false, use the default mesh deformer on the SkeletalMesh.

◆ bSkinWeightProfilePending

uint8 USkinnedMeshComponent::bSkinWeightProfilePending
protected

Whether or not a Skin Weight profile is currently pending load and creation for this component

◆ bSkinWeightProfileSet

uint8 USkinnedMeshComponent::bSkinWeightProfileSet
protected

Whether or not a Skin Weight profile is currently set for this component

◆ bSortTriangles

uint8 USkinnedMeshComponent::bSortTriangles

Enable dynamic sort mesh's triangles to remove ordering issue when rendered with a translucent material

◆ bSyncAttachParentLOD

uint8 USkinnedMeshComponent::bSyncAttachParentLOD

If true, this component uses its parents LOD when attached if available ForcedLOD can override this change. By default, it will use parent LOD.

◆ bUseBoundsFromLeaderPoseComponent

uint8 USkinnedMeshComponent::bUseBoundsFromLeaderPoseComponent

When true, we will just using the bounds from our LeaderPoseComponent. This is useful for when we have a Mesh Parented to the main SkelMesh (e.g. outline mesh or a full body overdraw effect that is toggled) that is always going to be the same bounds as parent. We want to do no calculations in that case.

◆ bUseScreenRenderStateForUpdate

uint8 USkinnedMeshComponent::bUseScreenRenderStateForUpdate

If set, use the screen render flag instead of the default render flag when processing offscreen-rendering optimizations (such as VisibilityBasedAnimTickOption) that look to reduce animation work when the mesh is not rendered. Using this option can result in meshes that are occlusion culled ceasing to perform animation work. Note that this can however result in shadows not being animated when meshes are not directly visible.

◆ CachedSceneFeatureLevel

ERHIFeatureLevel::Type USkinnedMeshComponent::CachedSceneFeatureLevel
protected

Cache the scene feature level

◆ CachedWorldOrLocalSpaceBounds

FBoxSphereBounds USkinnedMeshComponent::CachedWorldOrLocalSpaceBounds
mutableprotected

Bounds cached, so they're computed just once, either in local or worldspace depending on cvar 'a.CacheLocalSpaceBounds'.

◆ CachedWorldToLocalTransform

FMatrix USkinnedMeshComponent::CachedWorldToLocalTransform
mutableprotected

◆ CapsuleIndirectShadowMinVisibility

float USkinnedMeshComponent::CapsuleIndirectShadowMinVisibility

Controls how dark the capsule indirect shadow can be.

◆ CurrentBoneTransformFrame

uint32 USkinnedMeshComponent::CurrentBoneTransformFrame
protected

Stores GFrameCounter when CurrentBoneTransformRevisionNumber was updated, to make sure it's updated once per frame

◆ CurrentBoneTransformRevisionNumber

uint32 USkinnedMeshComponent::CurrentBoneTransformRevisionNumber
protected

current bone transform revision number

◆ CurrentEditableComponentTransforms

int32 USkinnedMeshComponent::CurrentEditableComponentTransforms
protected

The index for the ComponentSpaceTransforms buffer we can currently write to

◆ CurrentReadComponentTransforms

int32 USkinnedMeshComponent::CurrentReadComponentTransforms
protected

The index for the ComponentSpaceTransforms buffer we can currently read from

◆ CurrentSkinWeightProfileLayers

FName USkinnedMeshComponent::CurrentSkinWeightProfileLayers[2] = {NAME_None}
protected

Name of currently set up Skin Weight layers, all set to NAME_None for no override

◆ DisplayName

USkinnedMeshComponent::DisplayName = "Get Skeletal Mesh"

◆ ExternalDeltaTime

float USkinnedMeshComponent::ExternalDeltaTime
protected

◆ ExternalInterpolationAlpha

float USkinnedMeshComponent::ExternalInterpolationAlpha
protected

Non-URO-based interpolation alpha

◆ ExternalMorphSets

TArray<FExternalMorphSets> USkinnedMeshComponent::ExternalMorphSets

External GPU based morph target buffers, for each LOD. This contains an additional set of GPU only morphs that come from external other systems that generate morph targets. These morph targets can only be updated on the GPU, will not be serialized as part of the Skeletal Mesh, and will not show up in the editors morph target list. Every set of external morph targets has some given ID. Each LOD level has a map indexed by LOD number.

◆ ExternalMorphWeightData

TArray<FExternalMorphWeightData> USkinnedMeshComponent::ExternalMorphWeightData

The external morph target set weight data, for each LOD. This data is (re)initialized by RefreshExternalMorphTargetWeights().

◆ ExternalTickRate

uint8 USkinnedMeshComponent::ExternalTickRate
protected

Record of the tick rate we are using when externally controlled

◆ FollowerPoseComponents

TArray< TWeakObjectPtr<USkinnedMeshComponent> > USkinnedMeshComponent::FollowerPoseComponents
protected

If set, this component has follower pose components that are associated with this Note this is weak object ptr, so it will go away unless you have other strong reference

◆ ForcedLodModel

int32 USkinnedMeshComponent::ForcedLodModel

If 0, auto-select LOD level. if >0, force to (ForcedLodModel-1).

◆ LastStreamerUpdateBoundsRadius

float USkinnedMeshComponent::LastStreamerUpdateBoundsRadius
protected

The bounds radius at the point we last notified the streamer of a bounds radius change

◆ LeaderBoneMap

TArray<int32> USkinnedMeshComponent::LeaderBoneMap
protected

Mapping between bone indices in this component and the parent one. Each element is the index of the bone in the LeaderPoseComponent. Size should be the same as USkeletalMesh.RefSkeleton size (ie number of bones in this skeleton).

◆ LeaderBoneMapCacheCount

int32 USkinnedMeshComponent::LeaderBoneMapCacheCount
protected

Incremented every time the leader bone map changes. Used to keep in sync with any duplicate data needed by other threads

◆ LeaderPoseComponent

TWeakObjectPtr<USkinnedMeshComponent> USkinnedMeshComponent::LeaderPoseComponent

If set, this SkeletalMeshComponent will not use its SpaceBase for bone transform, but will use the component space transforms from the LeaderPoseComponent. This is used when constructing a character using multiple skeletal meshes sharing the same skeleton within the same Actor.

◆ LODInfo

TArray<struct FSkelMeshComponentLODInfo> USkinnedMeshComponent::LODInfo

LOD array info. Each index will correspond to the LOD index

◆ MaxDistanceFactor

float USkinnedMeshComponent::MaxDistanceFactor

High (best) DistanceFactor that was desired for rendering this USkeletalMesh last frame. Represents how big this mesh was in screen space

◆ MaxFirstLODIdxInAttachmentTree

uint8 USkinnedMeshComponent::MaxFirstLODIdxInAttachmentTree
protected

The highest streaming LOD index clamp among components with SyncAttachParentLOD enabled in the attachment tree

◆ MeshDeformer

TObjectPtr<UMeshDeformer> USkinnedMeshComponent::MeshDeformer
protected

The mesh deformer to use. Set to None to disable the deformer on the SkeletalMesh. If no deformer is set from here or the SkeletalMesh, we fall back to the fixed function deformation, unless AlwaysUseMeshDeformer is on.

◆ MeshDeformerInstances

FMeshDeformerInstanceSet USkinnedMeshComponent::MeshDeformerInstances
protected

Object containing state for the bound MeshDeformer.

◆ MeshDeformerInstanceSettings

TObjectPtr<UMeshDeformerInstanceSettings> USkinnedMeshComponent::MeshDeformerInstanceSettings
protected

Object containing instance settings for the bound MeshDeformer.

◆ MeshObject

FSkeletalMeshObject* USkinnedMeshComponent::MeshObject

Object responsible for sending bone transforms, morph target state etc. to render thread.

◆ MeshObjectFactory

Supports user-defined FSkeletalMeshObjects

◆ MeshObjectFactoryUserData

void* USkinnedMeshComponent::MeshObjectFactoryUserData

Passed into MeshObjectFactory

◆ MinLodModel

int32 USkinnedMeshComponent::MinLodModel

This is the min LOD that this component will use. (e.g. if set to 2 then only 2+ LOD Models will be used.) This is useful to set on meshes which are known to be a certain distance away and still want to have better LODs when zoomed in on them.

◆ MissingLeaderBoneMap

TMap<int32, FMissingLeaderBoneCacheEntry> USkinnedMeshComponent::MissingLeaderBoneMap
protected

Map of missing bone indices->transforms so that calls to GetBoneTransform() succeed when bones are not present in a leader mesh when using leader-pose. Index key is the bone index of this mesh.

◆ MorphTargetWeights

TArray<float> USkinnedMeshComponent::MorphTargetWeights

Array of weights for all morph targets. This array is updated inside RefreshBoneTransforms based on the Anim Blueprint.

◆ NanitePixelProgrammableDistance

float USkinnedMeshComponent::NanitePixelProgrammableDistance

Used to forcefully disable pixel programmable rasterization of Nanite when the mesh is further than a given distance from the camera.

◆ OnAnimUpdateRateParamsCreated

FOnAnimUpdateRateParamsCreated USkinnedMeshComponent::OnAnimUpdateRateParamsCreated

Delegate when AnimUpdateRateParams is created, to override its default settings.

◆ OnTickPose

FOnTickPose USkinnedMeshComponent::OnTickPose

Invoked at the beginning of TickPose before doing the bulk of the tick work

◆ PhysicsAssetOverride

TObjectPtr<class UPhysicsAsset> USkinnedMeshComponent::PhysicsAssetOverride

PhysicsAsset is set in SkeletalMesh by default, but you can override with this value

◆ PredictedLODLevel

int32 USkinnedMeshComponent::PredictedLODLevel

Best LOD that was 'predicted' by UpdateSkelPose. This is what bones were updated based on, so we do not allow rendering at a better LOD than this.

◆ PreviousBoneTransformRevisionNumber

uint32 USkinnedMeshComponent::PreviousBoneTransformRevisionNumber
protected

Cache previous bone transform revision number to help compute CurrentBoneTransformRevisionNumber

◆ PreviousBoneVisibilityStates

TArray<uint8> USkinnedMeshComponent::PreviousBoneVisibilityStates
protected

Array of bone visibilities (containing one of the values in EBoneVisibilityStatus for each bone). A bone is only visible if it is exactly 1 (BVS_Visible) Note these are only used if we are NOT double-buffering bone transforms

◆ PreviousComponentSpaceTransformsArray

TArray<FTransform> USkinnedMeshComponent::PreviousComponentSpaceTransformsArray
protected

Array of previous bone transforms Note these are only used if we are NOT double-buffering bone transforms

◆ PreviousMeshObject

FSkeletalMeshObject* USkinnedMeshComponent::PreviousMeshObject

Previous copy of MeshObject set during recreate of the render state

◆ RefPoseOverride

TSharedPtr<FSkelMeshRefPoseOverride> USkinnedMeshComponent::RefPoseOverride
protected

Information for current ref pose override, if present

◆ RenderStateLock

UE::FRecursiveMutex USkinnedMeshComponent::RenderStateLock
protected

◆ SkinCacheUsage

TArray<ESkinCacheUsage> USkinnedMeshComponent::SkinCacheUsage

How this Component's LOD uses the skin cache feature. Auto will defer to the asset's (SkeletalMesh) option. If Ray Tracing is enabled, will imply Enabled

◆ SocketOverrideLookup

TSortedMap<FName, FName, FDefaultAllocator, FNameFastLess> USkinnedMeshComponent::SocketOverrideLookup
protected

Mapping for socket overrides, key is the Source socket name and the value is the override socket name

◆ StreamingDistanceMultiplier

float USkinnedMeshComponent::StreamingDistanceMultiplier

Allows adjusting the desired streaming distance of streaming textures that uses UV 0. 1.0 is the default, whereas a higher value makes the textures stream in sooner from far away. A lower value (0.0-1.0) makes the textures stream in later (you have to be closer). Value can be < 0 (from legcay content, or code changes)

◆ VisibilityBasedAnimTickOption

EVisibilityBasedAnimTickOption USkinnedMeshComponent::VisibilityBasedAnimTickOption

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