44 Ar <<
Value.NumInfluences;
78 UE_DEPRECATED(5.6,
"SolverBoneIndices are no longer stored on WeightedLatticeImplicitObjects")
84 UE_DEPRECATED(5.6,
"SolverBoneIndices are no longer stored on WeightedLatticeImplicitObjects")
118 TVec4<TVec3<int32>>(
TVec3<int32>(0,1,0),
TVec3<int32>(0,0,0),
TVec3<int32>(1,1,0),
TVec3<int32>(0,1,1)),
119 TVec4<
TVec3<int32>>(
TVec3<int32>(1,1,1),
TVec3<int32>(1,1,0),
TVec3<int32>(1,0,1),
TVec3<int32>(0,1,1)),
120 TVec4<
TVec3<int32>>(
TVec3<int32>(1,0,0),
TVec3<int32>(1,0,1),
TVec3<int32>(1,1,0),
TVec3<int32>(0,0,0)),
121 TVec4<
TVec3<int32>>(
TVec3<int32>(0,0,1),
TVec3<int32>(0,0,0),
TVec3<int32>(0,1,1),
TVec3<int32>(1,0,1)),
122 TVec4<
TVec3<int32>>(
TVec3<int32>(1,1,0),
TVec3<int32>(0,1,1),
TVec3<int32>(0,0,0),
TVec3<int32>(1,0,1)),
127 TVec4<TVec3<int32>>(
TVec3<int32>(0,0,0),
TVec3<int32>(1,0,0),
TVec3<int32>(0,1,0),
TVec3<int32>(0,0,1)),
128 TVec4<
TVec3<int32>>(
TVec3<int32>(0,1,1),
TVec3<int32>(0,1,0),
TVec3<int32>(1,1,1),
TVec3<int32>(0,0,1)),
129 TVec4<
TVec3<int32>>(
TVec3<int32>(1,0,1),
TVec3<int32>(1,1,1),
TVec3<int32>(1,0,0),
TVec3<int32>(0,0,1)),
130 TVec4<
TVec3<int32>>(
TVec3<int32>(1,1,0),
TVec3<int32>(0,1,0),
TVec3<int32>(1,0,0),
TVec3<int32>(1,1,1)),
131 TVec4<
TVec3<int32>>(
TVec3<int32>(1,0,0),
TVec3<int32>(1,1,1),
TVec3<int32>(0,1,0),
TVec3<int32>(0,0,1)),
193 using T =
typename TConcrete::TType;
213 return Object.GetReference();
269 TWeightedLatticeImplicitObject()
275 friend ::FKSkinnedLevelSetElem;
287 template<
typename FBoneIndexToBoneName,
typename FBoneIndexToReferenceTransform>
290 template<
typename TConcrete>
291 UE_DEPRECATED(5.4,
"Please use Generate with TRefCountPtr instead")
304 template<
typename FBoneIndexToBoneName,
typename FBoneIndexToReferenceTransform>
314 struct FInfluenceBuildData
316 bool WeightsAreOuter =
true;
320 enum struct EBuildStep
327 EBuildStep BuildStep = EBuildStep::None;
334 using FImplicitObject::GetTypeName;
342 virtual FReal PhiWithNormal(
const FVec3& x, FVec3&
Normal)
const override
359 + (1. - BarycentricCoordinate.X - BarycentricCoordinate.Y - BarycentricCoordinate.Z) *
InGrid.Node(CellIndex +
TetOffsets[3]);
367 + (1. - BarycentricCoordinate.X - BarycentricCoordinate.Y - BarycentricCoordinate.Z) *
InDeformedPoints(CellIndex +
TetOffsets[3]);
380 (
float)BarycentricCoordinate.Z, 1.f - (
float)BarycentricCoordinate.X - (
float)BarycentricCoordinate.Y - (
float)BarycentricCoordinate.Z);
382 for (
int32 Coord = 0; Coord < 4; ++Coord)
399template<
typename FBoneIndexToBoneName,
typename FBoneIndexToReferenceTransform>
420 for (
uint16 ArrayIdx = 0; ArrayIdx < (
uint16)UsedBoneIndices.
Num(); ++ArrayIdx)
437template<
typename FBoneIndexToBoneName,
typename FBoneIndexToReferenceTransform>
440 check(BuildStep == EBuildStep::GridValid);
441 NormalizeBoneWeights();
443 BuildStep = EBuildStep::InfluencesFinalized;
446template<
typename TConcrete>
449 check(BuildStep == EBuildStep::InfluencesFinalized);
454 BuildStep = EBuildStep::Finished;
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
#define checkSlow(expr)
Definition AssertionMacros.h:332
#define check(expr)
Definition AssertionMacros.h:314
@ INDEX_NONE
Definition CoreMiscDefines.h:150
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
return true
Definition ExternalRpcRegistry.cpp:601
constexpr uint32 HashCombine(uint32 A, uint32 C)
Definition TypeHash.h:36
#define UE_BIG_NUMBER
Definition UnrealMathUtility.h:132
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
Definition ChaosArchive.h:364
Definition ChaosArchive.h:167
Definition ImplicitObject.h:111
bool HasBoundingBox() const
Definition ImplicitObject.h:275
CHAOS_API FImplicitObject(int32 Flags, EImplicitObjectType InType=ImplicitObjectType::Unknown)
Definition ImplicitObject.cpp:25
virtual FName GetTypeName() const
Definition ImplicitObject.h:414
static constexpr EImplicitObjectType StaticType()
Definition ImplicitObject.h:398
virtual Chaos::FImplicitObjectPtr DeepCopyGeometry() const
Definition ImplicitObject.h:220
virtual CHAOS_API Chaos::FImplicitObjectPtr CopyGeometry() const
Definition ImplicitObject.cpp:82
Definition WeightedLatticeImplicitObject.h:279
TUniquePtr< TWeightedLatticeImplicitObject< TConcrete > > Generate(TUniquePtr< TConcrete > &&Object)
const TArrayND< FWeightedLatticeInfluenceData, 3 > & GetBoneData() const
Definition WeightedLatticeImplicitObject.h:298
void FinalizeInfluences(const FBoneIndexToBoneName &BoneIndexToBoneName, const FBoneIndexToReferenceTransform &BoneIndexToReferenceTransform)
Definition WeightedLatticeImplicitObject.h:438
Definition WeightedLatticeImplicitObject.h:57
virtual CHAOS_API void Serialize(FChaosArchive &Ar) override
Definition WeightedLatticeImplicitObject.cpp:247
TAABB< FReal, 3 > LocalBoundingBox
Definition WeightedLatticeImplicitObject.h:183
CHAOS_API void SetEmptyCells()
Definition WeightedLatticeImplicitObject.cpp:561
TArray< FTransform > ReferenceRelativeTransforms
Definition WeightedLatticeImplicitObject.h:173
const TArrayND< bool, 3 > & GetEmptyCells() const
Definition WeightedLatticeImplicitObject.h:74
const TArray< int32 > & GetSolverBoneIndices() const
Definition WeightedLatticeImplicitObject.h:79
TArrayND< bool, 3 > EmptyCells
Definition WeightedLatticeImplicitObject.h:176
const TArray< FName > & GetUsedBones() const
Definition WeightedLatticeImplicitObject.h:76
CHAOS_API bool GetEmbeddingCoordinates(const FVec3 &DeformedPoint, TArray< FEmbeddingCoordinate > &CoordinatesOut, bool bFindClosest=false) const
Definition WeightedLatticeImplicitObject.cpp:392
virtual PRAGMA_DISABLE_DEPRECATION_WARNINGS ~FWeightedLatticeImplicitObject() override=default
void SetSolverBoneIndices(TArray< int32 > &&InSolverBoneIndices)
Definition WeightedLatticeImplicitObject.h:85
bool bSpatialDirty
Definition WeightedLatticeImplicitObject.h:186
TArray< int32 > SolverBoneIndices
Definition WeightedLatticeImplicitObject.h:180
const TUniformGrid< FReal, 3 > & GetGrid() const
Definition WeightedLatticeImplicitObject.h:75
virtual FName GetTypeName() const
Definition ImplicitObject.h:414
virtual PRAGMA_ENABLE_DEPRECATION_WARNINGS const FAABB3 BoundingBox() const override
Definition WeightedLatticeImplicitObject.h:71
FWeightedLatticeImplicitObject(int32 Flags, EImplicitObjectType InType)
Definition WeightedLatticeImplicitObject.h:157
const TArrayND< FWeightedLatticeInfluenceData, 3 > & GetBoneData() const
Definition WeightedLatticeImplicitObject.h:72
const TArrayND< FVec3, 3 > & GetDeformedPoints() const
Definition WeightedLatticeImplicitObject.h:73
CHAOS_API void UpdateSpatialHierarchy(const FReal MinLodSize=0.)
Definition WeightedLatticeImplicitObject.cpp:364
CHAOS_API void DeformPoints(const TArray< FTransform > &RelativeTransforms)
Definition WeightedLatticeImplicitObject.cpp:261
CHAOS_API void InitializeDeformedPoints()
Definition WeightedLatticeImplicitObject.cpp:543
CHAOS_API FVec3 GetDeformedPoint(const FVec3 &UndeformedPoint) const
Definition WeightedLatticeImplicitObject.cpp:302
CHAOS_API uint32 GetTypeHashHelper(const uint32 InHash) const
Definition WeightedLatticeImplicitObject.cpp:587
FImplicitObjectPtr ObjectType
Definition WeightedLatticeImplicitObject.h:59
TUniformGrid< FReal, 3 > Grid
Definition WeightedLatticeImplicitObject.h:169
THierarchicalSpatialHash< int32, FReal > Spatial
Definition WeightedLatticeImplicitObject.h:185
TArray< FName > UsedBones
Definition WeightedLatticeImplicitObject.h:171
TArrayND< FWeightedLatticeInfluenceData, 3 > BoneData
Definition WeightedLatticeImplicitObject.h:170
FTransform ReferenceRootTransform
Definition WeightedLatticeImplicitObject.h:172
TArrayND< FVec3, 3 > DeformedPoints
Definition WeightedLatticeImplicitObject.h:184
CHAOS_API void FinalizeConstruction()
Definition WeightedLatticeImplicitObject.cpp:240
Definition HierarchicalSpatialHash.h:214
Definition WeightedLatticeImplicitObject.h:191
virtual void Serialize(FChaosArchive &Ar) override
Definition WeightedLatticeImplicitObject.h:251
const TConcrete * GetEmbeddedObject() const
Definition WeightedLatticeImplicitObject.h:211
virtual uint32 GetTypeHash() const override
Definition WeightedLatticeImplicitObject.h:219
virtual FReal PhiWithNormal(const FVec3 &x, FVec3 &Normal) const override
Definition WeightedLatticeImplicitObject.h:244
static constexpr EImplicitObjectType StaticType()
Definition WeightedLatticeImplicitObject.h:206
virtual ~TWeightedLatticeImplicitObject() override=default
T TType
Definition WeightedLatticeImplicitObject.h:194
typename TConcrete::TType T
Definition WeightedLatticeImplicitObject.h:193
TWeightedLatticeImplicitObject(const TWeightedLatticeImplicitObject &Other)=delete
Definition Archive.h:1208
UE_REWRITE SizeType Num() const
Definition Array.h:1144
void Reset(SizeType NewSize=0)
Definition Array.h:2246
void SetNumUninitialized(SizeType NewNum, EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition Array.h:2369
Definition UnrealString.h.inl:34
Definition UniquePtr.h:107
@ DisableCollisions
Definition ImplicitObjectType.h:69
@ IsWeightedLattice
Definition ImplicitObjectType.h:34
FRealSingle FSolverReal
Definition PBDSoftsEvolutionFwd.h:31
GeometryCollection::Facades::FMuscleActivationData Data
Definition MuscleActivationConstraints.h:15
Definition SkeletalMeshComponent.h:307
FORCEINLINE bool IsWeightedLattice(EImplicitObjectType Type)
Definition ImplicitObjectType.h:53
TRefCountPtr< FImplicitObject > FImplicitObjectPtr
Definition ImplicitFwd.h:33
uint8 EImplicitObjectType
Definition ImplicitObjectType.h:41
@ X
Definition SimulationModuleBase.h:152
FChaosArchive & operator<<(FChaosArchive &Ar, FRigidParticleControlFlags &Flags)
Definition RigidParticleControlFlags.cpp:15
FRealDouble FReal
Definition Real.h:22
TVector< FReal, 3 > FVec3
Definition Core.h:17
uint32 GetTypeHash(const FKey &Key)
Definition BlackboardKey.h:35
U16 Index
Definition radfft.cpp:71
Definition WeightedLatticeImplicitObject.h:95
const TVec4< TVec3< int32 > > & TetrahedronOffsets() const
Definition WeightedLatticeImplicitObject.h:134
int32 GreatestInfluenceBone(const TArrayND< FWeightedLatticeInfluenceData, 3 > &InBoneData) const
Definition WeightedLatticeImplicitObject.h:370
static const TVec4< TVec3< int32 > > EvenIndexTetrahedraOffsets[5]
Definition WeightedLatticeImplicitObject.h:116
FEmbeddingCoordinate(const TVec3< int32 > &InCellIndex, int32 InLocalTetrahedron, const FVec3 &InBarycentric)
Definition WeightedLatticeImplicitObject.h:104
FEmbeddingCoordinate & operator=(const FEmbeddingCoordinate &Other)=default
FEmbeddingCoordinate()=default
TVec3< int32 > CellIndex
Definition WeightedLatticeImplicitObject.h:96
FEmbeddingCoordinate(const FEmbeddingCoordinate &Other)=default
FVec3 DeformedPosition(const TArrayND< FVec3, 3 > &InDeformedPoints) const
Definition WeightedLatticeImplicitObject.h:362
CHAOS_API FMatrix DeformationTransform(const TArrayND< FVec3, 3 > &DeformedPoints, const TUniformGrid< FReal, 3 > &Grid) const
Definition WeightedLatticeImplicitObject.cpp:101
bool IsValid() const
Definition WeightedLatticeImplicitObject.h:110
static const TVec4< TVec3< int32 > > OddIndexTetrahedraOffsets[5]
Definition WeightedLatticeImplicitObject.h:125
int32 LocalTetrahedron
Definition WeightedLatticeImplicitObject.h:97
FVec3 UndeformedPosition(const TUniformGrid< FReal, 3 > &InGrid) const
FVec3 BarycentricCoordinate
Definition WeightedLatticeImplicitObject.h:98
Definition WeightedLatticeImplicitObject.h:17
uint32 GetTypeHash() const
Definition WeightedLatticeImplicitObject.h:25
uint16 BoneIndices[MaxTotalInfluences]
Definition WeightedLatticeImplicitObject.h:38
FWeightedLatticeInfluenceData()
Definition WeightedLatticeImplicitObject.h:18
float BoneWeights[MaxTotalInfluences]
Definition WeightedLatticeImplicitObject.h:39
static const uint8 MaxTotalInfluences
Definition WeightedLatticeImplicitObject.h:36
uint8 NumInfluences
Definition WeightedLatticeImplicitObject.h:37
Definition SkinnedLevelSetElem.h:13
static UE_FORCEINLINE_HINT void * Memset(void *Dest, uint8 Char, SIZE_T Count)
Definition UnrealMemory.h:119