17template<
typename ParentType>
21 struct FChangeVertexBoneWeights
45template<
typename ParentType>
144 ToCopy.GetValue(VID, Data);
220 if (BoneWeights.
Num() == 0)
226 for (
int32 Idx = 0; Idx < BoneWeights.
Num(); ++Idx)
309 for (
int32 Idx = 0; Idx <
Info.NumVertex; ++Idx)
356 template<
typename AsType>
366 template<
typename BoneIndexType,
typename BoneFloatWeightType>
372 const int32 NumEntries = BoneWeights.
Num();
391 template<
typename ContainerAdapter>
398 template<
typename BoneIndexType,
typename BoneFloatWeightType>
412 Weights[Idx] =
static_cast<float>(
InWeights[Idx]);
450 if (!
ensure(VertexID >= 0))
534 Ar << bUseCompression;
538 if (!bUseCompression)
572 Buffer.SetNumUninitialized(BufferSize);
598 NumBoneWeights += BoneWeights.
Num();
601 SIZE_T NumBoneWeights = 0;
625 Buffer.SetNumUninitialized(BufferSize);
691 const float BaryX =
static_cast<float>(BaryCoords.
X);
692 const float BaryY =
static_cast<float>(BaryCoords.
Y);
693 const float BaryZ =
static_cast<float>(BaryCoords.
Z);
733template<
typename ParentType>
736 FChangeVertexBoneWeights& Change = OldVertexBoneWeights.Emplace_GetRef();
737 Change.VertexID = VertexID;
742template<
typename ParentType>
745 NewVertexBoneWeights.Reserve(NewVertexBoneWeights.Num() + VertexIDs.Num());
747 for (
int VertexID : VertexIDs)
749 FChangeVertexBoneWeights& Change = NewVertexBoneWeights.Emplace_GetRef();
750 Change.VertexID = VertexID;
751 AttribCast->GetValue(VertexID, Change.Weights);
755template<
typename ParentType>
760 for (
const FChangeVertexBoneWeights& Change : *Changes)
763 AttribCast->SetValue(Change.VertexID, Change.Weights);
#define checkSlow(expr)
Definition AssertionMacros.h:332
#define check(expr)
Definition AssertionMacros.h:314
#define ensure( InExpression)
Definition AssertionMacros.h:464
uint16 FBoneIndexType
Definition BoneIndices.h:7
@ COMPRESS_NoFlags
Definition CompressionFlags.h:28
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
Definition Archive.h:1208
virtual void Serialize(void *V, int64 Length)
Definition Archive.h:1689
virtual CORE_API void UsingCustomVersion(const struct FGuid &Guid)
Definition Archive.cpp:590
UE_FORCEINLINE_HINT bool IsLoading() const
Definition Archive.h:236
CORE_API void SerializeCompressedNew(void *V, int64 Length, FName CompressionFormatToEncode, FName CompressionFormatToDecodeOldV1Files, ECompressionFlags Flags=COMPRESS_NoFlags, bool bTreatBufferAsFileReader=false, int64 *OutPartialReadLength=nullptr)
Definition Archive.cpp:740
Definition NameTypes.h:617
Definition ArrayView.h:139
UE_NODEBUG UE_FORCEINLINE_HINT ElementType * GetData() UE_LIFETIMEBOUND
Definition Array.h:1027
void SetNumUninitialized(SizeType NewNum, EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition Array.h:2369
Definition UnrealString.h.inl:34
Definition UniquePtr.h:107
Definition BoneWeights.h:48
uint16 GetRawWeight() const
Definition BoneWeights.h:160
FBoneIndexType GetBoneIndex() const
Definition BoneWeights.h:125
Definition BoneWeights.h:229
FBoneWeightsSettings & SetNormalizeType(EBoneWeightNormalizeType InNormalizeType)
Definition BoneWeights.h:234
A simple container for per-vertex influence of bones and their weights.
Definition BoneWeights.h:526
static FBoneWeights Create(const FBoneIndexType InBones[MaxInlineBoneWeightCount], const uint16 InWeights[MaxInlineBoneWeightCount], const FBoneWeightsSettings &InSettings={})
Definition BoneWeights.h:1320
int32 Num() const
Definition BoneWeights.h:695
static FBoneWeights Blend(const FBoneWeights &InA, const FBoneWeights &InB, float InBias, const FBoneWeightsSettings &InSettings={})
Definition BoneWeights.h:1358
Definition BoneWeights.h:390
Definition CompactMaps.h:20
static constexpr int32 InvalidID
Definition CompactMaps.h:25
static constexpr int InvalidID
Definition DynamicMesh3.h:158
Definition DynamicMeshAttributeSet.h:84
Definition DynamicAttribute.h:67
virtual void CopyParentClassData(const TDynamicAttributeBase< ParentType > &Other)
Definition DynamicAttribute.h:249
Definition DynamicAttribute.h:24
Definition DynamicVector.h:27
void Resize(unsigned int Count)
Definition DynamicVector.h:603
Definition DynamicVertexSkinWeightsAttribute.h:20
void SaveInitialVertex(const TDynamicAttributeBase< ParentType > *Attribute, int VertexID) override
Definition DynamicVertexSkinWeightsAttribute.h:734
bool Apply(TDynamicAttributeBase< ParentType > *Attribute, bool bRevert) const override
Definition DynamicVertexSkinWeightsAttribute.h:756
TDynamicVertexSkinWeightsAttributeChange()=default
virtual ~TDynamicVertexSkinWeightsAttributeChange() override=default
void StoreAllFinalVertices(const TDynamicAttributeBase< ParentType > *Attribute, const TSet< int > &VertexIDs) override
Definition DynamicVertexSkinWeightsAttribute.h:743
Definition DynamicVertexSkinWeightsAttribute.h:48
UE::AnimationCore::FBoneWeight FBoneWeight
Definition DynamicVertexSkinWeightsAttribute.h:51
void OnFlipEdge(const FDynamicMesh3::FEdgeFlipInfo &FlipInfo) override
Definition DynamicVertexSkinWeightsAttribute.h:437
TDynamicVertexSkinWeightsAttribute(ParentType *ParentIn, bool bAutoInit=true)
Definition DynamicVertexSkinWeightsAttribute.h:69
void SetBoneWeightsFromLerp(int SetAttribute, int AttributeA, int AttributeB, double Alpha)
Definition DynamicVertexSkinWeightsAttribute.h:679
void CompactCopy(const FCompactMaps &CompactMaps, const TDynamicVertexSkinWeightsAttribute< ParentType > &ToCopy)
Definition DynamicVertexSkinWeightsAttribute.h:132
void SetBoneWeightsFromBary(int SetAttribute, int AttributeA, int AttributeB, int AttributeC, const FVector3d &BaryCoords)
Definition DynamicVertexSkinWeightsAttribute.h:689
void Serialize(FArchive &Ar, const FCompactMaps *CompactMaps, bool bUseCompression)
Definition DynamicVertexSkinWeightsAttribute.h:530
void OnSplitVertex(const FDynamicMesh3::FVertexSplitInfo &SplitInfo, const TArrayView< const int > &TrianglesToUpdate) override
Definition DynamicVertexSkinWeightsAttribute.h:495
void Initialize(const FBoneWeights InitialValue={})
Definition DynamicVertexSkinWeightsAttribute.h:150
void Copy(const TDynamicVertexSkinWeightsAttribute< ParentType > &Copy)
Definition DynamicVertexSkinWeightsAttribute.h:101
bool ReindexBoneIndicesToSkeleton(const TArray< FName > &FromRefSkeleton, const TArray< FName > &ToRefSkeleton)
Definition DynamicVertexSkinWeightsAttribute.h:181
void OnSplitEdge(const FDynamicMesh3::FEdgeSplitInfo &SplitInfo) override
Definition DynamicVertexSkinWeightsAttribute.h:430
UE::AnimationCore::FBoneWeights FBoneWeights
Definition DynamicVertexSkinWeightsAttribute.h:50
void OnMergeEdges(const FDynamicMesh3::FMergeEdgesInfo &MergeInfo) override
Definition DynamicVertexSkinWeightsAttribute.h:475
TDynamicAttributeBase< ParentType > * MakeCopy(ParentType *ParentIn) const override
Definition DynamicVertexSkinWeightsAttribute.h:93
ParentType * GetParent()
Definition DynamicVertexSkinWeightsAttribute.h:83
TDynamicVertexSkinWeightsAttribute()=default
ParentType * Parent
Definition DynamicVertexSkinWeightsAttribute.h:57
virtual ~TDynamicVertexSkinWeightsAttribute()=default
TDynamicVector< FBoneWeights > VertexBoneWeights
Definition DynamicVertexSkinWeightsAttribute.h:61
void SetValue(int VertexID, const FBoneWeights &Data)
Definition DynamicVertexSkinWeightsAttribute.h:385
void GetValue(int VertexID, FBoneWeights &Data) const
Definition DynamicVertexSkinWeightsAttribute.h:350
void OnCollapseEdge(const FDynamicMesh3::FEdgeCollapseInfo &CollapseInfo) override
Definition DynamicVertexSkinWeightsAttribute.h:443
TDynamicAttributeBase< ParentType > * MakeCompactCopy(const FCompactMaps &CompactMaps, ParentType *ParentTypeIn) const override
Definition DynamicVertexSkinWeightsAttribute.h:107
bool CopyThroughMapping(const TDynamicAttributeBase< ParentType > *Source, const FMeshIndexMappings &Mapping) override
Definition DynamicVertexSkinWeightsAttribute.h:280
void SetValue(int VertexID, const UE::AnimationCore::TBoneWeights< ContainerAdapter > &Data)
Definition DynamicVertexSkinWeightsAttribute.h:392
void SetValue(int VertexID, const TArray< BoneIndexType > &InBones, const TArray< BoneFloatWeightType > &InWeights, int32 InNumEntries)
Definition DynamicVertexSkinWeightsAttribute.h:399
TDynamicAttributeBase< ParentType > * MakeNew(ParentType *ParentIn) const override
Definition DynamicVertexSkinWeightsAttribute.h:87
void SetNewValue(int32 InNewVertexID, const FBoneWeights InBoneWeights)
Definition DynamicVertexSkinWeightsAttribute.h:157
TSet< int32 > GetBoundBoneIndices() const
Definition DynamicVertexSkinWeightsAttribute.h:262
void OnMergeVertices(const FDynamicMesh3::FMergeVerticesInfo &MergeInfo) override
Definition DynamicVertexSkinWeightsAttribute.h:489
void ResizeAttribStoreIfNeeded(int VertexID)
Definition DynamicVertexSkinWeightsAttribute.h:448
void OnPokeTriangle(const FDynamicMesh3::FPokeTriangleInfo &PokeInfo) override
Definition DynamicVertexSkinWeightsAttribute.h:467
void GetValue(int VertexID, AsType &Data) const
Definition DynamicVertexSkinWeightsAttribute.h:357
void OnNewVertex(int VertexID, bool bInserted) override
Definition DynamicVertexSkinWeightsAttribute.h:461
bool CopyIn(int RawID, void *Buffer, int BufferSize) override
Definition DynamicVertexSkinWeightsAttribute.h:337
bool CopyOut(int RawID, void *Buffer, int BufferSize) const override
Definition DynamicVertexSkinWeightsAttribute.h:326
virtual SIZE_T GetByteCount() const override
Definition DynamicVertexSkinWeightsAttribute.h:669
const ParentType * GetParent() const
Definition DynamicVertexSkinWeightsAttribute.h:81
virtual void AppendDefaulted(const UE::Geometry::FDynamicMesh3::FAppendInfo &Info) override
Definition DynamicVertexSkinWeightsAttribute.h:320
bool CheckValidity(bool bAllowNonmanifold, EValidityCheckFailMode FailMode) const override
Definition DynamicVertexSkinWeightsAttribute.h:511
virtual bool Append(const TDynamicAttributeBase< ParentType > &Source, const UE::Geometry::FDynamicMesh3::FAppendInfo &Info) override
Definition DynamicVertexSkinWeightsAttribute.h:297
void GetValue(int VertexID, TArray< BoneIndexType > &OutBones, TArray< BoneFloatWeightType > &OutWeights) const
Definition DynamicVertexSkinWeightsAttribute.h:367
void CompactInPlace(const FCompactMaps &CompactMaps) override
Definition DynamicVertexSkinWeightsAttribute.h:115
TUniquePtr< TDynamicAttributeChangeBase< ParentType > > NewBlankChange() const override
Definition DynamicVertexSkinWeightsAttribute.h:500
void CopyValue(int FromVertexID, int ToVertexID)
Definition DynamicVertexSkinWeightsAttribute.h:421
TDynamicVertexSkinWeightsAttribute< FDynamicMesh3 > FDynamicMeshVertexSkinWeightsAttribute
Definition DynamicMeshAttributeSet.h:62
EValidityCheckFailMode
Definition GeometryTypes.h:72
Definition AdvancedWidgetsModule.cpp:13
Definition InfoTypes.h:181
Definition InfoTypes.h:171
Definition InfoTypes.h:155
Definition InfoTypes.h:197
Definition InfoTypes.h:216
Definition InfoTypes.h:229
Definition InfoTypes.h:242
static UE_FORCEINLINE_HINT bool IsNearlyEqual(float A, float B, float ErrorTolerance=UE_SMALL_NUMBER)
Definition UnrealMathUtility.h:388
static constexpr UE_FORCEINLINE_HINT T Clamp(const T X, const T MinValue, const T MaxValue)
Definition UnrealMathUtility.h:592
static UE_FORCEINLINE_HINT void * Memcpy(void *Dest, const void *Src, SIZE_T Count)
Definition UnrealMemory.h:160
CORE_API static const FGuid GUID
Definition UE5MainStreamObjectVersion.h:22
Definition DynamicMesh3.h:309
Definition IndexTypes.h:158
int B
Definition IndexTypes.h:164
int A
Definition IndexTypes.h:163
int C
Definition IndexTypes.h:165
Definition MeshIndexMappings.h:22
FIndexMapi & GetVertexMap()
Definition MeshIndexMappings.h:60
TMap< IntType, IntType > & GetForwardMap()
Definition GeometryTypes.h:119
T Z
Definition Vector.h:68
T Y
Definition Vector.h:65
T X
Definition Vector.h:62