20#include "AnimCompress.generated.h"
28template<
typename DataType,
typename SortType,
int MaxItems>
33 : CurrentLowestError(0.f)
40 return Items.
Num() < MaxItems ||
NewError > CurrentLowestError;
46 bool bModified =
false;
48 if (Items.
Num() < MaxItems)
53 else if(
NewError > CurrentLowestError)
62 CurrentLowestError = Items.
Last().GetErrorValue();
68 for (
int ItemIndex = 0; ItemIndex < Items.
Num(); ++ItemIndex)
81 return Items.
Num() > 0;
130 return FText::Format(
NSLOCTEXT(
"Engine",
"CompressionWorstBoneSummary",
"{BoneError} in Animation {BoneErrorAnimName}, Bone : {BoneErrorBoneName}(#{BoneErrorBone}), at Time {BoneErrorTime}"), Args);
163 return AvgError < Rhs.AvgError;
178 return FText::Format(
NSLOCTEXT(
"Engine",
"CompressionWorstAnimationSummary",
"{AvgError} in Animation {AnimName}"), Args);
204 bool bPerformedCompression;
206 int64 TotalBeforeCompressed;
207 int64 TotalAfterCompressed;
208 int32 NumberOfAnimations;
211 double TotalCompressionExecutionTime;
252 : CompressionSummary(
false)
271 namespace Compression
291 CompressionSummary.Reset();
302 return *CompressionSummary.Get();
324 UPROPERTY(Category = Compression, EditAnywhere)
328 UPROPERTY(Category = Compression, EditAnywhere)
332 UPROPERTY(Category = Compression, EditAnywhere)
336#if WITH_EDITORONLY_DATA
518 float SequenceLength,
557 UE_DEPRECATED(5.1,
"PopulateDDCKeyArchive has been deprecated")
597 const float* Ranges);
613 const float* Ranges);
627 static constexpr uint8 AnimationPadSentinel = 85;
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
uint8 MakeBitForFlag(uint32 Item, uint32 Position)
void DecompressPose(FCompactPose &OutPose, const FCompressedAnimSequence &CompressedData, const FAnimExtractContext &ExtractionContext, USkeleton *SourceSkeleton, float SequenceLength, EAnimInterpolationType Interpolation, bool bIsBakedAdditive, FName RetargetSource, FName SourceName, const FRootMotionReset &RootMotionReset)
Definition AnimCompressionTypes.cpp:1648
#define check(expr)
Definition AssertionMacros.h:314
#define PURE_VIRTUAL(func,...)
Definition CoreMiscDefines.h:103
#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
DIRECTLINK_API Display
Definition DirectLinkLog.h:8
#define NSLOCTEXT(InNamespace, InKey, InTextLiteral)
Definition Internationalization.h:300
#define UE_LOG(CategoryName, Verbosity, Format,...)
Definition LogMacros.h:270
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_UCLASS_BODY(...)
Definition ObjectMacros.h:768
#define UCLASS(...)
Definition ObjectMacros.h:776
Definition AnimationUtils.h:54
Definition Archive.h:1208
Definition AnimCompress.h:191
ENGINE_API ~FCompressionMemorySummary()
Definition AnimCompress.cpp:79
ENGINE_API void GatherPostCompressionStats(const FCompressedAnimSequence &CompressedData, const TArray< FBoneData > &BoneData, const FName AnimFName, double CompressionTime, bool bInPerformedCompression)
Definition AnimCompress.cpp:40
ENGINE_API void GatherPreCompressionStats(int32 RawSize, int32 PreviousCompressionSize)
Definition MemoryReader.h:17
Definition MemoryWriter.h:101
Definition NameTypes.h:617
static CORE_API FText FromName(const FName &Val)
Definition Text.cpp:1076
static CORE_API FText AsNumber(float Val, const FNumberFormattingOptions *const Options=NULL, const FCulturePtr &TargetCulture=NULL)
static CORE_API FText Format(FTextFormat Fmt, const FFormatNamedArguments &InArguments)
Definition Text.cpp:469
Definition ArrayView.h:139
UE_REWRITE SizeType Num() const
Definition Array.h:1144
UE_NODEBUG UE_FORCEINLINE_HINT ElementType & Last(SizeType IndexFromTheEnd=0) UE_LIFETIMEBOUND
Definition Array.h:1263
UE_FORCEINLINE_HINT SizeType Emplace(ArgsType &&... Args)
Definition Array.h:2561
UE_FORCEINLINE_HINT void Reserve(SizeType Number)
Definition Array.h:3016
Definition EnumAsByte.h:22
UE_FORCEINLINE_HINT ValueType & Add(const KeyType &InKey, const ValueType &InValue)
Definition SortedMap.h:194
Definition UniquePtr.h:107
Definition AnimBoneCompressionCodec.h:27
Definition AnimCompress.h:316
static void UnalignedWriteToStream(TArray< uint8 > &ByteStream, const void *Src, SIZE_T Len)
static void PadByteStream(TArray< uint8 > &ByteStream, const int32 Alignment, uint8 Sentinel)
static void PrecalculateShortestQuaternionRoutes(TArray< struct FRotationTrack > &RotationData)
static void FilterTrivialScaleKeys(struct FScaleTrack &Track, float MaxScaleDelta)
static void FilterTrivialScaleKeys(TArray< struct FScaleTrack > &Track, float MaxScaleDelta)
static void FilterTrivialPositionKeys(TArray< struct FTranslationTrack > &Track, float MaxPosDelta)
static void FilterTrivialRotationKeys(TArray< struct FRotationTrack > &InputTracks, float MaxRotDelta)
static void FilterTrivialKeys(TArray< struct FTranslationTrack > &PositionTracks, TArray< struct FRotationTrack > &RotationTracks, TArray< struct FScaleTrack > &ScaleTracks, float MaxPosDelta, float MaxRotDelta, float MaxScaleDelta)
static void FilterIntermittentPositionKeys(TArray< struct FTranslationTrack > &PositionTracks, int32 StartIndex, int32 Interval)
static void FilterTrivialPositionKeys(struct FTranslationTrack &Track, float MaxPosDelta)
static void BitwiseCompressAnimationTracks(const FCompressibleAnimData &CompressibleAnimData, FCompressibleAnimDataResult &OutCompressedData, AnimationCompressionFormat TargetTranslationFormat, AnimationCompressionFormat TargetRotationFormat, AnimationCompressionFormat TargetScaleFormat, const TArray< FTranslationTrack > &TranslationData, const TArray< FRotationTrack > &RotationData, const TArray< FScaleTrack > &ScaleData, bool IncludeKeyTable=false)
static void FilterIntermittentPositionKeys(struct FTranslationTrack &Track, int32 StartIndex, int32 Interval)
static void FilterTrivialRotationKeys(struct FRotationTrack &Track, float MaxRotDelta)
static void PackQuaternionToStream(TArray< uint8 > &ByteStream, AnimationCompressionFormat Format, const FQuat4f &Quat, const float *Mins, const float *Ranges)
static void SeparateRawDataIntoTracks(const TArray< struct FRawAnimSequenceTrack > &RawAnimData, float SequenceLength, TArray< struct FTranslationTrack > &OutTranslationData, TArray< struct FRotationTrack > &OutRotationData, TArray< struct FScaleTrack > &OutScaleData)
static void UnalignedWriteToStream(TArray< uint8 > &ByteStream, int32 &StreamOffset, const void *Src, SIZE_T Len)
static void FilterIntermittentRotationKeys(TArray< struct FRotationTrack > &RotationTracks, int32 StartIndex, int32 Interval)
static void PackVectorToStream(TArray< uint8 > &ByteStream, AnimationCompressionFormat Format, const FVector3f &Vec, const float *Mins, const float *Ranges)
static void FilterIntermittentKeys(TArray< struct FTranslationTrack > &PositionTracks, TArray< struct FRotationTrack > &RotationTracks, int32 StartIndex, int32 Interval)
static void FilterIntermittentRotationKeys(struct FRotationTrack &Track, int32 StartIndex, int32 Interval)
Definition AnimSequence.h:203
UE_REWRITE void Sort(RangeType &&Range)
Definition Sort.h:16
Definition AdvancedWidgetsModule.cpp:13
@ false
Definition radaudio_common.h:23
Definition AnimCompress.h:231
bool bOutput
Definition AnimCompress.h:241
FAnimCompressContext(bool bInOutput, uint32 InMaxAnimations=1)
Definition AnimCompress.h:243
uint32 AnimIndex
Definition AnimCompress.h:239
FAnimCompressContext(const FAnimCompressContext &Rhs)
Definition AnimCompress.h:251
FAnimCompressContext & operator=(const FAnimCompressContext &)=default
friend class FDerivedDataAnimationCompression
Definition AnimCompress.h:262
uint32 MaxAnimations
Definition AnimCompress.h:240
Definition AnimSequenceDecompressionContext.h:14
Definition AnimCompressionTypes.h:775
Definition AnimCompressionTypes.h:462
Definition AnimCompress.h:150
FErrorTrackerWorstAnimation()
Definition AnimCompress.h:151
FText ToText() const
Definition AnimCompress.h:168
bool operator<(const FErrorTrackerWorstAnimation &Rhs) const
Definition AnimCompress.h:161
float GetErrorValue() const
Definition AnimCompress.h:166
FErrorTrackerWorstAnimation(float InAvgError, FName InMaxErrorAnimName)
Definition AnimCompress.h:156
Definition AnimCompress.h:93
float GetErrorValue() const
Definition AnimCompress.h:115
float BoneError
Definition AnimCompress.h:134
int32 BoneErrorBone
Definition AnimCompress.h:140
FName BoneErrorBoneName
Definition AnimCompress.h:143
FName BoneErrorAnimName
Definition AnimCompress.h:146
FErrorTrackerWorstBone(float InBoneError, float InBoneErrorTime, int32 InBoneErrorBone, FName InBoneErrorBoneName, FName InBoneErrorAnimName)
Definition AnimCompress.h:102
FText ToText() const
Definition AnimCompress.h:117
FErrorTrackerWorstBone()
Definition AnimCompress.h:94
bool operator<(const FErrorTrackerWorstBone &Rhs) const
Definition AnimCompress.h:110
float BoneErrorTime
Definition AnimCompress.h:137
Definition AnimCompress.h:30
void LogErrorStat()
Definition AnimCompress.h:66
void StoreErrorStat(SortType NewError, ArgsType &&... Args)
Definition AnimCompress.h:44
bool IsValid() const
Definition AnimCompress.h:79
const DataType & GetMaxErrorItem() const
Definition AnimCompress.h:74
bool CanUseErrorStat(SortType NewError)
Definition AnimCompress.h:38
FMaxErrorStatTracker()
Definition AnimCompress.h:32
Definition AnimSequence.h:106
Definition AnimSequence.h:121
Definition AnimSequence.h:91
Definition AnimCompressionTypes.h:431