UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
SkeletalMesh.cpp File Reference
#include "Engine/SkeletalMesh.h"
#include "DataDrivenShaderPlatformInfo.h"
#include "Engine/Blueprint.h"
#include "Engine/SkeletalMeshSampling.h"
#include "Engine/SkinnedAsset.h"
#include "Engine/SkinnedAssetAsyncCompileUtils.h"
#include "Engine/SkinnedAssetCommon.h"
#include "Engine/SkeletalMeshLODSettings.h"
#include "MaterialShared.h"
#include "Materials/Material.h"
#include "Materials/MaterialRenderProxy.h"
#include "MaterialDomain.h"
#include "Animation/Skeleton.h"
#include "Components/SkeletalMeshComponent.h"
#include "ComponentReregisterContext.h"
#include "Math/ScaleRotationTranslationMatrix.h"
#include "UObject/AssetRegistryTagsContext.h"
#include "UObject/FrameworkObjectVersion.h"
#include "UObject/NiagaraObjectVersion.h"
#include "UObject/ObjectSaveContext.h"
#include "UObject/Package.h"
#include "RenderUtils.h"
#include "AssetCompilingManager.h"
#include "UObject/UE5MainStreamObjectVersion.h"
#include "SceneInterface.h"
#include "EngineUtils.h"
#include "EditorSupportDelegates.h"
#include "SkeletalMeshLegacyCustomVersions.h"
#include "SkeletalRenderPublic.h"
#include "PhysicsEngine/BodySetup.h"
#include "PhysicsEngine/PhysicsAsset.h"
#include "Engine/AssetUserData.h"
#include "Animation/NodeMappingContainer.h"
#include "Rendering/SkeletalMeshRenderData.h"
#include "Rendering/NaniteResources.h"
#include "Rendering/RenderCommandPipes.h"
#include "AnimationRuntime.h"
#include "Animation/AnimSequence.h"
#include "Streaming/SkeletalMeshUpdate.h"
#include "Algo/MaxElement.h"
#include "UObject/FortniteMainBranchObjectVersion.h"
#include "UObject/ReleaseObjectVersion.h"
#include "UObject/ICookInfo.h"
#include "GPUSkinCache.h"
#include "UObject/DevObjectVersion.h"
#include "UnrealEngine.h"
#include "EditorFramework/AssetImportData.h"
#include "Engine/SkeletalMeshSocket.h"
#include "ClothingAssetBase.h"
#include "Async/Async.h"
#include "Misc/UObjectToken.h"
#include "Misc/RuntimeErrors.h"
#include "PlatformInfo.h"
#include "Animation/SkinWeightProfileManager.h"
#include "BoneWeights.h"
#include "SkeletalMeshAttributes.h"
#include "Algo/AnyOf.h"
#include "Logging/StructuredLog.h"
#include "Rendering/SkeletalMeshHalfEdgeBufferAccessor.h"
#include "Animation/MeshDeformerCollection.h"
#include "Animation/MeshDeformer.h"
#include "Streaming/UVChannelDensity.h"
#include "Interfaces/ITargetPlatform.h"

Macros

#define LOCTEXT_NAMESPACE   "SkeltalMesh"
 

Functions

 DEFINE_LOG_CATEGORY (LogSkeletalMesh)
 
bool ShouldUseSourceMeshForUVDensity (const FMeshNaniteSettings &NaniteSettings)
 
FArchiveoperator<< (FArchive &Ar, FMeshToMeshVertData &V)
 
FArchiveoperator<< (FArchive &Ar, FClothBufferIndexMapping &ClothBufferIndexMapping)
 
FArchiveoperator<< (FArchive &Ar, FClothingAssetData_Legacy &A)
 
FArchiveoperator<< (FArchive &Ar, FSkeletalMeshLODInfo &I)
 
void RefreshSkelMeshOnPhysicsAssetChange (const USkeletalMesh *InSkeletalMesh)
 
 LLM_DEFINE_TAG (SkeletalMesh_Serialize)
 
FVector GetRefVertexLocationTyped (const USkeletalMesh *Mesh, const FSkelMeshRenderSection &Section, const FPositionVertexBuffer &PositionBuffer, const FSkinWeightVertexBuffer &SkinWeightVertexBuffer, const int32 VertIndex)
 
FVector GetSkeletalMeshRefVertLocation (const USkeletalMesh *Mesh, const FSkeletalMeshLODRenderData &LODData, const FSkinWeightVertexBuffer &SkinWeightVertexBuffer, const int32 VertIndex)
 
void GetRefTangentBasisTyped (const USkeletalMesh *Mesh, const FSkelMeshRenderSection &Section, const FStaticMeshVertexBuffer &StaticVertexBuffer, const FSkinWeightVertexBuffer &SkinWeightVertexBuffer, const int32 VertIndex, FVector3f &OutTangentX, FVector3f &OutTangentY, FVector3f &OutTangentZ)
 
void GetSkeletalMeshRefTangentBasis (const USkeletalMesh *Mesh, const FSkeletalMeshLODRenderData &LODData, const FSkinWeightVertexBuffer &SkinWeightVertexBuffer, const int32 VertIndex, FVector3f &OutTangentX, FVector3f &OutTangentY, FVector3f &OutTangentZ)
 

Variables

FCustomVersionRegistration GRegisterSkeletalMeshCustomVersion (FSkeletalMeshCustomVersion::GUID, FSkeletalMeshCustomVersion::LatestVersion, TEXT("SkeletalMeshVer"))
 
const TCHARGSkeletalMeshMinLodQualityLevelCVarName = TEXT("r.SkeletalMesh.MinLodQualityLevel")
 
const TCHARGSkeletalMeshMinLodQualityLevelScalabilitySection = TEXT("ViewDistanceQuality")
 
int32 GSkeletalMeshMinLodQualityLevel = -1
 
FCustomVersionRegistration GRegisterRecomputeTangentCustomVersion (FRecomputeTangentCustomVersion::GUID, FRecomputeTangentCustomVersion::LatestVersion, TEXT("RecomputeTangentCustomVer"))
 
FCustomVersionRegistration GRegisterOverlappingVerticesCustomVersion (FOverlappingVerticesCustomVersion::GUID, FOverlappingVerticesCustomVersion::LatestVersion, TEXT("OverlappingVerticeDetectionVer"))
 

Macro Definition Documentation

◆ LOCTEXT_NAMESPACE

#define LOCTEXT_NAMESPACE   "SkeltalMesh"

Function Documentation

◆ DEFINE_LOG_CATEGORY()

DEFINE_LOG_CATEGORY ( LogSkeletalMesh  )

◆ GetRefTangentBasisTyped()

void GetRefTangentBasisTyped ( const USkeletalMesh Mesh,
const FSkelMeshRenderSection Section,
const FStaticMeshVertexBuffer StaticVertexBuffer,
const FSkinWeightVertexBuffer SkinWeightVertexBuffer,
const int32  VertIndex,
FVector3f OutTangentX,
FVector3f OutTangentY,
FVector3f OutTangentZ 
)

◆ GetRefVertexLocationTyped()

FVector GetRefVertexLocationTyped ( const USkeletalMesh Mesh,
const FSkelMeshRenderSection Section,
const FPositionVertexBuffer PositionBuffer,
const FSkinWeightVertexBuffer SkinWeightVertexBuffer,
const int32  VertIndex 
)

◆ GetSkeletalMeshRefTangentBasis()

void GetSkeletalMeshRefTangentBasis ( const USkeletalMesh Mesh,
const FSkeletalMeshLODRenderData LODData,
const FSkinWeightVertexBuffer SkinWeightVertexBuffer,
const int32  VertIndex,
FVector3f OutTangentX,
FVector3f OutTangentY,
FVector3f OutTangentZ 
)

◆ GetSkeletalMeshRefVertLocation()

FVector GetSkeletalMeshRefVertLocation ( const USkeletalMesh Mesh,
const FSkeletalMeshLODRenderData LODData,
const FSkinWeightVertexBuffer SkinWeightVertexBuffer,
const int32  VertIndex 
)

◆ LLM_DEFINE_TAG()

LLM_DEFINE_TAG ( SkeletalMesh_Serialize  )

◆ operator<<() [1/4]

FArchive & operator<< ( FArchive Ar,
FClothBufferIndexMapping ClothBufferIndexMapping 
)

◆ operator<<() [2/4]

FArchive & operator<< ( FArchive Ar,
FClothingAssetData_Legacy A 
)

◆ operator<<() [3/4]

FArchive & operator<< ( FArchive Ar,
FMeshToMeshVertData V 
)

◆ operator<<() [4/4]

FArchive & operator<< ( FArchive Ar,
FSkeletalMeshLODInfo I 
)

Operator for MemCount only, so it only serializes the arrays that needs to be counted.

◆ RefreshSkelMeshOnPhysicsAssetChange()

void RefreshSkelMeshOnPhysicsAssetChange ( const USkeletalMesh InSkeletalMesh)

Refresh Physics Asset Change

Physics Asset has been changed, so it will need to recreate physics state to reflect it Utilities functions to propagate new Physics Asset for InSkeletalMesh

Parameters
InSkeletalMeshSkeletalMesh that physics asset has been changed for

◆ ShouldUseSourceMeshForUVDensity()

bool ShouldUseSourceMeshForUVDensity ( const FMeshNaniteSettings NaniteSettings)

Variable Documentation

◆ GRegisterOverlappingVerticesCustomVersion

◆ GRegisterRecomputeTangentCustomVersion

◆ GRegisterSkeletalMeshCustomVersion

◆ GSkeletalMeshMinLodQualityLevel

int32 GSkeletalMeshMinLodQualityLevel = -1

◆ GSkeletalMeshMinLodQualityLevelCVarName

const TCHAR* GSkeletalMeshMinLodQualityLevelCVarName = TEXT("r.SkeletalMesh.MinLodQualityLevel")

◆ GSkeletalMeshMinLodQualityLevelScalabilitySection

const TCHAR* GSkeletalMeshMinLodQualityLevelScalabilitySection = TEXT("ViewDistanceQuality")