31#include "AnimCompressionTypes.generated.h"
56template<
typename ArrayClass>
158 Key.Reserve(TempBytes.
Num() + 1);
159 for (
int32 ByteIndex = 0; ByteIndex < TempBytes.
Num(); ++ByteIndex)
233 double SequenceLength;
237 UE_DEPRECATED(5.0,
"NumberOfFrames has been replaced with NumberOfKeys and GetNumberOfFrames")
238 int32 NumberOfFrames;
241 int32 GetNumberOfFrames()
const {
return FMath::Max(NumberOfKeys - 1, 1); }
244 bool bIsValidAdditive;
266 for (
int32 i = 0; i < AnimData.
Num(); ++i)
299 uint64 GetApproxMemoryUsage()
const
314 Collector.AddReferencedObject(BoneCompressionSettings);
315 Collector.AddReferencedObject(CurveCompressionSettings);
318 bool IsCancelled()
const
435#if WITH_EDITORONLY_DATA
436 UE_DEPRECATED(5.0,
"CompressedNumberOfFrames has been replaced with CompressedNumberOfKeys")
450 UE_DEPRECATED(5.5,
"SerializeCompressedData now accepts the DataOwner as an argument")
483 if (ArrayView.
GetData() !=
nullptr)
486 T* NewData = (T*)(NewBase +
Offset);
515 template<
typename TArchive>
535template<u
int32 Alignment = DEFAULT_ALIGNMENT>
551 , MappedHandle(nullptr)
552 , MappedRegion(nullptr)
567 Other.Data =
nullptr;
569 MappedRegion =
Other.MappedRegion;
570 Other.MappedRegion =
nullptr;
572 MappedHandle =
Other.MappedHandle;
573 Other.MappedHandle =
nullptr;
593 if (MappedRegion || MappedHandle)
599 MappedRegion =
nullptr;
600 MappedHandle =
nullptr;
605 static_assert(
sizeof(
int32) <=
sizeof(
SIZE_T),
"SIZE_T is expected to be larger than int32");
620 check(!MappedHandle && !MappedRegion);
625 check(!MappedHandle && !MappedRegion);
630 check(!MappedHandle && !MappedRegion);
636 return CurrentMax * NumBytesPerElement;
651 check(!MappedHandle && !Data);
668 return MappedRegion || MappedHandle;
678 if (MappedRegion || MappedHandle)
682 MappedRegion =
nullptr;
683 MappedHandle =
nullptr;
698 template<
typename ElementType>
717template<
typename T, u
int32 Alignment = DEFAULT_ALIGNMENT>
731 this->ArrayNum =
Num;
732 this->ArrayMax =
Num;
733 this->AllocatorInstance.AcceptFileMapping(
OwnedPtr->GetMappedHandle(),
OwnedPtr->GetMappedRegion(), (
void*)
OwnedPtr->GetPointer());
738template<
typename T, u
int32 Alignment>
786 UE_DEPRECATED(5.3, "Please use IndexedCurveNames.")
825 : BoneCompressionCodec(nullptr)
826 , CurveCompressionCodec(nullptr)
827 , CompressedRawDataSize(0)
836 return CompressedTrackToSkeletonMapTable[TrackIndex].BoneTreeIndex;
901#if WITH_EDITORONLY_DATA
916UE_DEPRECATED(5.1,
"Signature of DecompressPose has been deprecated, use UE::Anim::Decompression::DecompressPose instead")
921 float SequenceLength,
933 float SequenceLength,
936 FName RetargetSource,
constexpr bool IsAligned(T Val, uint64 Alignment)
Definition AlignmentTemplates.h:50
FArchive & operator<<(FArchive &Ar, FAnimationErrorStats &ErrorStats)
Definition AnimCompressionTypes.cpp:1671
TArrayView< T > RebaseTArrayView(const TArrayView< T > &ArrayView, const uint8 *OriginalBase, const uint8 *NewBase)
Definition AnimCompressionTypes.h:481
void DecompressPose(FCompactPose &OutPose, const FCompressedAnimSequence &CompressedData, const FAnimExtractContext &ExtractionContext, USkeleton *Skeleton, float SequenceLength, EAnimInterpolationType Interpolation, bool bIsBakedAdditive, const TArray< FTransform > &RetargetTransforms, FName SourceName, const FRootMotionReset &RootMotionReset)
Definition AnimCompressionTypes.cpp:1657
AnimationKeyFormat
Definition AnimCompressionTypes.h:38
@ AKF_ConstantKeyLerp
Definition AnimCompressionTypes.h:39
@ AKF_VariableKeyLerp
Definition AnimCompressionTypes.h:40
@ AKF_PerTrackCompression
Definition AnimCompressionTypes.h:41
@ AKF_MAX
Definition AnimCompressionTypes.h:42
EAnimInterpolationType
Definition AnimTypes.h:689
EAdditiveAnimationType
Definition AnimTypes.h:575
#define checkSlow(expr)
Definition AssertionMacros.h:332
#define check(expr)
Definition AssertionMacros.h:314
#define ensure( InExpression)
Definition AssertionMacros.h:464
UE_FORCEINLINE_HINT SizeType DefaultCalculateSlackReserve(SizeType NewMax, SIZE_T BytesPerElement, bool bAllowQuantize, uint32 Alignment=DEFAULT_ALIGNMENT)
Definition ContainerAllocationPolicies.h:223
UE_FORCEINLINE_HINT SizeType DefaultCalculateSlackShrink(SizeType NewMax, SizeType CurrentMax, SIZE_T BytesPerElement, bool bAllowQuantize, uint32 Alignment=DEFAULT_ALIGNMENT)
Definition ContainerAllocationPolicies.h:139
UE_FORCEINLINE_HINT SizeType DefaultCalculateSlackGrow(SizeType NewMax, SizeType CurrentMax, SIZE_T BytesPerElement, bool bAllowQuantize, uint32 Alignment=DEFAULT_ALIGNMENT)
Definition ContainerAllocationPolicies.h:169
@ INDEX_NONE
Definition CoreMiscDefines.h:150
#define UE_NONCOPYABLE(TypeName)
Definition CoreMiscDefines.h:457
#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
#define FVector
Definition IOSSystemIncludes.h:8
const bool
Definition NetworkReplayStreaming.h:178
#define MAX_int32
Definition NumericLimits.h:25
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define UENUM(...)
Definition ObjectMacros.h:749
#define USTRUCT(...)
Definition ObjectMacros.h:746
#define GENERATED_USTRUCT_BODY(...)
Definition ObjectMacros.h:767
USkinnedMeshComponent float
Definition SkinnedMeshComponent.h:60
void ByteToHex(uint8 In, FString &Result)
Definition UnrealString.h:94
uint32 Offset
Definition VulkanMemory.cpp:4033
Definition AnimEncoding.h:122
Definition Archive.h:1208
UE_FORCEINLINE_HINT bool IsCountingMemory() const
Definition Archive.h:468
Definition MemoryReader.h:17
Definition MemoryWriter.h:101
Definition NameTypes.h:617
FORCEINLINE bool FastLess(const FName &Other) const
Definition NameTypes.h:815
Definition UnrealType.h:3087
Definition UObjectGlobals.h:2492
Definition ThreadSafeBool.h:17
Definition MappedFileHandle.h:115
Definition MappedFileHandle.h:17
const uint8 * GetMappedPtr()
Definition MappedFileHandle.h:53
Definition ArrayView.h:139
UE_FORCEINLINE_HINT constexpr ElementType * GetData() const
Definition ArrayView.h:295
UE_FORCEINLINE_HINT constexpr SizeType Num() const
Definition ArrayView.h:380
UE_REWRITE SizeType Num() const
Definition Array.h:1144
UE_NODEBUG UE_FORCEINLINE_HINT ElementType * GetData() UE_LIFETIMEBOUND
Definition Array.h:1027
UE_NODEBUG UE_FORCEINLINE_HINT SIZE_T GetAllocatedSize(void) const
Definition Array.h:1059
UE_FORCEINLINE_HINT void Reserve(SizeType Number)
Definition Array.h:3016
Definition AnimCompressionTypes.h:545
SizeType GetInitialCapacity() const
Definition AnimCompressionTypes.h:644
void ResizeAllocation(SizeType CurrentNum, SizeType NewMax, SIZE_T NumBytesPerElement)
Definition AnimCompressionTypes.h:587
bool HasAllocation() const
Definition AnimCompressionTypes.h:639
SizeType CalculateSlackReserve(SizeType NewMax, SIZE_T NumBytesPerElement) const
Definition AnimCompressionTypes.h:618
SizeType CalculateSlackGrow(SizeType NewMax, SizeType CurrentMax, SIZE_T NumBytesPerElement) const
Definition AnimCompressionTypes.h:628
bool IsMapped() const
Definition AnimCompressionTypes.h:666
ForAnyElementType()
Definition AnimCompressionTypes.h:549
void AcceptFileMapping(IMappedFileHandle *InMappedHandle, IMappedFileRegion *InMappedRegion, void *MallocPtr)
Definition AnimCompressionTypes.h:649
FScriptContainerElement * GetAllocation() const
Definition AnimCompressionTypes.h:583
SIZE_T GetAllocatedSize(SizeType CurrentMax, SIZE_T NumBytesPerElement) const
Definition AnimCompressionTypes.h:634
SizeType CalculateSlackShrink(SizeType NewMax, SizeType CurrentMax, SIZE_T NumBytesPerElement) const
Definition AnimCompressionTypes.h:623
~ForAnyElementType()
Definition AnimCompressionTypes.h:577
void MoveToEmpty(ForAnyElementType &Other)
Definition AnimCompressionTypes.h:560
Definition AnimCompressionTypes.h:700
ElementType * GetAllocation() const
Definition AnimCompressionTypes.h:707
ForElementType()
Definition AnimCompressionTypes.h:704
Definition AnimCompressionTypes.h:537
@ RequireRangeCheck
Definition AnimCompressionTypes.h:542
@ NeedsElementType
Definition AnimCompressionTypes.h:541
int32 SizeType
Definition AnimCompressionTypes.h:539
Definition AnimCompressionTypes.h:719
TMaybeMappedArray(TMaybeMappedArray &&)=default
TMaybeMappedArray()
Definition AnimCompressionTypes.h:721
void AcceptOwnedBulkDataPtr(FOwnedBulkDataPtr *OwnedPtr, int32 Num)
Definition AnimCompressionTypes.h:729
TMaybeMappedArray & operator=(const TMaybeMappedArray &)=default
TMaybeMappedArray & operator=(TMaybeMappedArray &&)=default
TMaybeMappedArray(const TMaybeMappedArray &)=default
Definition SharedPointer.h:692
Definition SharedPointer.h:153
Definition UniquePtr.h:107
Definition AnimBoneCompressionCodec.h:27
Definition AnimBoneCompressionSettings.h:23
Definition AnimCompress.h:316
Definition AnimCurveCompressionSettings.h:18
Definition AnimSequenceBase.h:37
Definition AnimSequence.h:203
Definition Skeleton.h:295
Type
Definition AnimEnums.h:14
@ Zero
Definition AnimEnums.h:22
@ AnimFirstFrame
Definition AnimEnums.h:19
@ RefPose
Definition AnimEnums.h:16
Definition AnimSequence.h:43
Definition AnimCompressionTypes.h:531
ENGINE_API void OnInvalidMaybeMappedAllocatorNum(int32 NewNum, SIZE_T NumBytesPerElement)
Definition AnimCompressionTypes.cpp:1783
@ Curve
Definition Visu.h:19
Definition AdvancedWidgetsModule.cpp:13
Definition AnimCompressionTypes.h:746
friend FArchive & operator<<(FArchive &Ar, FAnimCompressedCurveIndexedName &Item)
Definition AnimCompressionTypes.h:756
FName CurveName
Definition AnimCompressionTypes.h:768
int32 CurveIndex
Definition AnimCompressionTypes.h:771
Definition AnimCompressionTypes.h:117
Definition AnimCompressionTypes.h:141
FString MakeString() const
Definition AnimCompressionTypes.h:154
FMemoryWriter Ar
Definition AnimCompressionTypes.h:146
FArcToHexString()
Definition AnimCompressionTypes.h:148
Definition IAnimationDataModel.h:67
Definition BoneContainer.h:192
const TArray< FTransform > & GetRefPoseArray() const
Definition BoneContainer.h:361
Definition AnimCompressionTypes.h:175
void Cancel()
Definition AnimCompressionTypes.h:189
FCancelCompressionSignal(const FCancelCompressionSignal &)=default
bool IsCancelled() const
Definition AnimCompressionTypes.h:194
FCancelCompressionSignal()=default
FCancelCompressionSignal & operator=(const FCancelCompressionSignal &Other)
Definition AnimCompressionTypes.h:183
Definition BonePose.h:347
Definition AnimCompressionTypes.h:358
FCompressedAnimDataBase(FCompressedAnimDataBase< OtherContainerMaker > &InCompressedData)
Definition AnimCompressionTypes.h:400
AnimationCompressionFormat ScaleCompressionFormat
Definition AnimCompressionTypes.h:397
class AnimEncoding * RotationCodec
Definition AnimCompressionTypes.h:389
class AnimEncoding * TranslationCodec
Definition AnimCompressionTypes.h:388
AnimationCompressionFormat TranslationCompressionFormat
Definition AnimCompressionTypes.h:395
ContainerTypeMakerTemplate< uint8 >::Type CompressedByteStream
Definition AnimCompressionTypes.h:382
ContainerTypeMakerTemplate< int32 >::Type CompressedTrackOffsets
Definition AnimCompressionTypes.h:368
FCompressedAnimDataBase()
Definition AnimCompressionTypes.h:417
FCompressedOffsetDataBase< typename ContainerTypeMakerTemplate< int32 >::Type > CompressedScaleOffsets
Definition AnimCompressionTypes.h:380
AnimationCompressionFormat RotationCompressionFormat
Definition AnimCompressionTypes.h:396
enum AnimationKeyFormat KeyEncodingFormat
Definition AnimCompressionTypes.h:392
class AnimEncoding * ScaleCodec
Definition AnimCompressionTypes.h:390
Definition AnimCompressionTypes.h:775
TUniquePtr< ICompressedAnimData > CompressedDataStructure
Definition AnimCompressionTypes.h:807
FCompressedAnimSequence()
Definition AnimCompressionTypes.h:824
int32 GetTrackIndexFromSkeletonIndex(const int32 BoneIndex) const
Definition AnimCompressionTypes.h:839
TMaybeMappedArray< uint8 > CompressedByteStream
Definition AnimCompressionTypes.h:800
TObjectPtr< class UAnimCurveCompressionCodec > CurveCompressionCodec
Definition AnimCompressionTypes.h:813
int32 CompressedRawDataSize
Definition AnimCompressionTypes.h:816
TObjectPtr< class UAnimBoneCompressionCodec > BoneCompressionCodec
Definition AnimCompressionTypes.h:810
int32 GetSkeletonIndexFromTrackIndex(const int32 TrackIndex) const
Definition AnimCompressionTypes.h:834
TArray< uint8 > CompressedCurveByteStream
Definition AnimCompressionTypes.h:804
Definition AnimCompressionTypes.h:58
void AddUninitialized(int32 NumOfTracks)
Definition AnimCompressionTypes.h:86
const int32 GetOffsetData(int32 StripIndex, int32 Offset) const
Definition AnimCompressionTypes.h:73
ArrayClass OffsetData
Definition AnimCompressionTypes.h:59
int32 GetMemorySize() const
Definition AnimCompressionTypes.h:96
void SetStripSize(int32 InStripSize)
Definition AnimCompressionTypes.h:67
void Empty(int32 NumOfTracks=0)
Definition AnimCompressionTypes.h:91
bool IsValid() const
Definition AnimCompressionTypes.h:106
int32 StripSize
Definition AnimCompressionTypes.h:61
FCompressedOffsetDataBase(int32 InStripSize=2)
Definition AnimCompressionTypes.h:63
void SetOffsetData(int32 StripIndex, int32 Offset, int32 Value)
Definition AnimCompressionTypes.h:80
int32 GetNumTracks() const
Definition AnimCompressionTypes.h:101
Definition AnimCompressionTypes.h:168
Definition AnimCompressionTypes.h:462
UAnimBoneCompressionCodec * Codec
Definition AnimCompressionTypes.h:466
void * CompressionUserData
Definition AnimCompressionTypes.h:470
TUniquePtr< ICompressedAnimData > AnimData
Definition AnimCompressionTypes.h:464
FCompressibleAnimDataResult()
Definition AnimCompressionTypes.h:472
TArray< uint8 > CompressedByteStream
Definition AnimCompressionTypes.h:463
Definition AnimCurveTypes.h:214
Definition FrameRate.h:21
static FORCENOINLINE CORE_API void Free(void *Original)
Definition UnrealMemory.cpp:685
Definition BulkData.h:216
Definition AnimTypes.h:853
Definition AnimCurveTypes.h:1070
Definition ReferenceSkeleton.h:100
Definition RichCurve.h:81
Definition AnimCompressionTypes.h:857
ERootMotionRootLock::Type RootMotionRootLock
Definition AnimCompressionTypes.h:870
bool bIsValidAdditive
Definition AnimCompressionTypes.h:876
FTransform AnimFirstFrame
Definition AnimCompressionTypes.h:868
bool bForceRootLock
Definition AnimCompressionTypes.h:874
void ResetRootBoneForRootMotion(FTransform &BoneTransform, const FBoneContainer &RequiredBones) const
Definition AnimCompressionTypes.h:895
bool bEnableRootMotion
Definition AnimCompressionTypes.h:872
void ResetRootBoneForRootMotion(FTransform &BoneTransform, const FTransform &RefPoseRootTransform) const
Definition AnimCompressionTypes.h:878
FRootMotionReset(bool bInEnableRootMotion, ERootMotionRootLock::Type InRootMotionRootLock, bool bInForceRootLock, FTransform InAnimFirstFrame, bool bInIsValidAdditive)
Definition AnimCompressionTypes.h:859
Definition ContainerAllocationPolicies.h:242
Definition SmartName.h:211
Definition AnimTypes.h:822
int32 BoneTreeIndex
Definition AnimTypes.h:827
Definition AnimCompressionTypes.h:493
virtual int64 GetApproxCompressedSize() const override
Definition AnimCompressionTypes.h:500
FUECompressedAnimDataMutable()=default
virtual bool IsValid() const override
Definition AnimCompressionTypes.h:501
virtual void Bind(const TArrayView< uint8 > BulkData)
Definition AnimCompressionTypes.h:499
ENGINE_API void BuildFinalBuffer(TArray< uint8 > &OutCompressedByteStream)
Definition AnimCompressionTypes.cpp:1228
Definition AnimCompressionTypes.h:505
virtual ENGINE_API void SerializeCompressedData(class FArchive &Ar) override
Definition AnimCompressionTypes.cpp:1148
virtual void Bind(const TArrayView< uint8 > BulkData) override
Definition AnimCompressionTypes.h:523
void ByteSwapOut(TArrayView< uint8 > CompressedData, FMemoryWriter &MemoryStream)
Definition AnimCompressionTypes.h:519
void ByteSwapIn(TArrayView< uint8 > CompressedData, FMemoryReader &MemoryStream)
Definition AnimCompressionTypes.h:518
virtual ENGINE_API FString GetDebugString() const override
Definition AnimCompressionTypes.cpp:1167
FUECompressedAnimData()=default
virtual int64 GetApproxCompressedSize() const override
Definition AnimCompressionTypes.h:525
virtual bool IsValid() const override
Definition AnimCompressionTypes.h:527
ENGINE_API void InitViewsFromBuffer(const TArrayView< uint8 > BulkData)
Definition AnimCompressionTypes.cpp:1093
FUECompressedAnimData(FUECompressedAnimDataMutable &InCompressedData)
Definition AnimCompressionTypes.h:508
void ByteSwapData(TArrayView< uint8 > CompresedData, TArchive &MemoryStream)
Definition AnimCompressionTypes.cpp:1203
Definition AnimCompressionTypes.h:431
virtual ~ICompressedAnimData()
Definition AnimCompressionTypes.h:448
int32 CompressedNumberOfKeys
Definition AnimCompressionTypes.h:433
virtual ENGINE_API void SerializeCompressedData(class FArchive &Ar)
Definition AnimCompressionTypes.cpp:1239
ICompressedAnimData()=default
ENGINE_API ICompressedAnimData & operator=(const ICompressedAnimData &)
virtual bool IsValid() const =0
virtual void Bind(const TArrayView< uint8 > BulkData)=0
virtual FString GetDebugString() const
Definition AnimCompressionTypes.h:457
ENGINE_API ICompressedAnimData(const ICompressedAnimData &)
virtual int64 GetApproxCompressedSize() const =0
Definition AnimCompressionTypes.h:339
Definition AnimCompressionTypes.h:352
Definition IsContiguousContainer.h:16
static constexpr bool Value
Definition IsContiguousContainer.h:20
Definition AnimCompressionTypes.h:346
Definition ObjectPtr.h:488
Definition WeakObjectPtrTemplates.h:25