className: GetVertexMapBuffer

description: GetVertexMap

code: const [UE::MLDeformer::FVertexMapBuffer](API\Plugins\MLDeformerFramework\FVertexMapBuffer) & GetVertexMapBuffer() const


className: GetVizSettings

description:
Get the visualization settings for this model. These settings are only used in the editor. Visualization settings contain settings for the left side of the ML Deformer asset editor, containing settings like what the mesh spacing is, whether to draw labels, what the test anim sequence is, etc.
A pointer to the visualization settings. You can cast this to the type specific for your model, in case you inherited from theUMLDeformerVizSettingsbase class. This never return a nullptr.

module: MLDeformerFramework

code: [UMLDeformerVizSettings](API\Plugins\MLDeformerFramework\UMLDeformerVizSettings) * GetVizSettings() const


className: HasTrainingGroundTruth

description:
Check whether this model currently has a training mesh setup or not. For example if there is say a GeometryCache as target mesh, it could check whether that property is a nullptr or not.
Returns true when the training target mesh has been selected, otherwise false is returned.

code: virtual bool HasTrainingGroundTruth() const


className: Init

description: Initialize the ML Deformer model. This will update the DeformerAsset and InputInfo properties. It internally calls CreateInputInfo if no InputInfo has been set yet.

code: virtual void Init ( [UMLDeformerAsset](API\Plugins\MLDeformerFramework\UMLDeformerAsset) * InDeformerAsset )


className: InitGPUData

description: Initialize the data that should be stored on the GPU. This base class will store the VertexMap on the GPU by initializing the VertexMapBuffer member.

code: virtual void InitGPUData()


className: InitVertexMap

description: GetVertexMap

code: void InitVertexMap()


className: InvalidateMemUsage

description: Call this if you want it to recalculate the memory usage again after the tick has completed.

code: void InvalidateMemUsage()


className: IsMemUsageInvalidated

description:
Check whether we invalidated the memory usage. If this returns true, we need to recompute it.
Returns true when we should make a call to UpdateMemoryUsage.

code: bool IsMemUsageInvalidated() const


className: IsNeuralNetworkOnGPU

description:
Check whether the neural network of this model should run on the GPU or not. This is false on default, which makes it a CPU based neural network. Some code internally that creates and initializes the neural network will use the return value of this method to mark it to be on CPU or GPU.
Returns true if the neural network of this model should run on the GPU. False is returned when it should run on the CPU.

code: virtual bool IsNeuralNetworkOnGPU() const


className: IsReadyForFinishDestroy

code: virtual bool IsReadyForFinishDestroy()


className: NumFloatsPerBone

description: The number of floats per bone in network input.

code: static constexpr int32 NumFloatsPerBone = 6;


className: NumFloatsPerCurve

description: The number of floats per curve in network input.

code: static constexpr int32 NumFloatsPerCurve = 1;


className: OnPostEditChangeProperty

description:
The delegate that gets fired when a property value changes.
A reference to the delegate.


className: PostEditChangeProperty

code: virtual void PostEditChangeProperty ( [FPropertyChangedEvent](API\Runtime\CoreUObject\UObject\FPropertyChangedEvent) & PropertyChangedEvent )


className: PostLoad

code: virtual void PostLoad()


className: SampleGroundTruthPositions

description: Sample the positions from the target (ground truth) mesh, at a specific time (in seconds).

code: virtual void SampleGroundTruthPositions ( float SampleTime, [TArray](API\Runtime\Core\Containers\TArray)< FVector3f > & OutPositions )


className: Serialize

code: virtual void Serialize ( [FArchive](API\Runtime\Core\Serialization\FArchive) & Archive )


className: SetAlignmentTransform

description: GetAlignmentTransform.

code: void SetAlignmentTransform ( const FTransform & Transform )


className: SetAnimSequence

description: Set the animation sequence object to use for training. Keep in mind that the editor still needs to handle a change of this property for things to be initialized correctly.

code: void SetAnimSequence ( [UAnimSequence](API\Runtime\Engine\Animation\UAnimSequence) * AnimSeq )


className: SetBoneIncludeList

description: Set the list of bones that should be included during training. This list is ignored ifShouldIncludeBonesInTraining()returns false. If the list is empty, all bones will be included.

code: void SetBoneIncludeList ( const [TArray](API\Runtime\Core\Containers\TArray)< [FBoneReference](API\Runtime\Engine\Animation\FBoneReference) > & List )


className: SetCurveIncludeList

description: Set the list of curves that should be included during training. This list is ignored ifShouldIncludeCurvesInTraining()returns false. If the list is empty, all curves will be included.

code: void SetCurveIncludeList ( const [TArray](API\Runtime\Core\Containers\TArray)< [FMLDeformerCurveReference](API\Plugins\MLDeformerFramework\FMLDeformerCurveReference) > & List )


className: SetDeltaCutoffLength

description: Set the delta cutoff length. Deltas that are larger than this length will be set to zero. This can be useful when there are some vertices that due to incorrect data have a very long length. Skipping those deltas will prevent issues.

code: void SetDeltaCutoffLength ( float Length )


className: SetInputInfo

description: CreateInputInfo

code: void SetInputInfo ( [UMLDeformerInputInfo](API\Plugins\MLDeformerFramework\UMLDeformerInputInfo) * Input )


className: SetNumBaseMeshVerts

description: Set the number of vertices in the base mesh. This is the number of imported (dcc) vertices, so not render vertices.

code: void SetNumBaseMeshVerts ( int32 NumVerts )


className: SetNumTargetMeshVerts

description: Set the number of vertices in the target mesh. This is the number of imported (dcc) vertices, so not render vertices.

code: void SetNumTargetMeshVerts ( int32 NumVerts )


className: SetShouldIncludeBonesInTraining

description: Set whether we want to include bones during training or not. This will make bone transforms part of the neural network inputs.

code: void SetShouldIncludeBonesInTraining ( bool bInclude )


className: SetShouldIncludeCurvesInTraining

description: Set whether we want to include curves during training. This will make curves part of the neural network inputs.

code: void SetShouldIncludeCurvesInTraining ( bool bInclude )


className: SetSkeletalMesh

description: Set the skeletal mesh that this deformer uses.

code: void SetSkeletalMesh ( [USkeletalMesh](API\Runtime\Engine\Engine\USkeletalMesh) * SkelMesh )


className: SetTrainingFrameLimit

description: Set the maximum number of frames to train on. For example if your training data has 10000 frames, but you wish to only train on 2000 frames, you can set this to 2000.

code: void SetTrainingFrameLimit ( int32 MaxNumFrames )


className: SetVertexMap

description: GetVertexMap.

code: void SetVertexMap ( const [TArray](API\Runtime\Core\Containers\TArray)< int32 > & Map )


className: SetVizSettings

description: Set the visualization settings object. You need to call this in the constructor of your model.

code: void SetVizSettings ( [UMLDeformerVizSettings](API\Plugins\MLDeformerFramework\UMLDeformerVizSettings) * VizSettingsObject )


className: ShouldIncludeBonesInTraining

description:
Check whether we should include bone transforms as input to the model during training or not.
Returns true when bone transfomations should be a part of the network inputs, during the training process.


description:
Get the ML Deformer model that is being applied by this asset.
A pointer to the model.

code: UMLDeformerModel * GetModel() const


className: ShouldIncludeCurvesInTraining

description:
Check whether we should include curve values as input to the model during training or not. Curve values are single floats.
Returns true when curve values should be a part of the network inputs, during the training process.


description: The memory usage request flags, which you pass UMLDeformer::GetMemUsageInBytes method.

code: namespace UE { namespace MLDeformer { enum EMemUsageRequestFlags { Uncooked, Cooked, } } }


description: Handles reading, writing, and reference collecting usingFArchive. This implementation handles allFPropertyserialization, but can be overridden for native variables.

code: virtual void Serialize ( [FArchive](API\Runtime\Core\Serialization\FArchive) & Ar )


description: Set the ML Deformer model that is used by this deformer asset.

code: void SetModel ( UMLDeformerModel * InModel )


className: UMLDeformerAsset

description: The machine learning deformer asset class. This class contains a Model property, through which most functionality happens.

code: [UCLASS](Programming/UnrealArchitecture/Reference/Classes#classdeclaration)(BlueprintType, HideCategories=Object) class UMLDeformerAsset : public [UObject](API\Runtime\CoreUObject\UObject\UObject)

Model

type: TObjectPtr< UML...

description: The ML Deformer model, used to deform the mesh.


description: Activates the SceneComponent, should be overridden by native child classes.

code: virtual void Activate ( bool bReset )


description: Bind to the MLDeformerModel's NeuralNetworkModifyDelegate.

code: void AddNeuralNetworkModifyDelegate()


description: Deprecated* This method will be removed.

code: void AddReleaseModelInstancesDelegate()


description: Called before destroying the object. This is called immediately upon deciding to destroy the object, to allow the object to begin an asynchronous cleanup process.

code: virtual void BeginDestroy()


description: Deactivates the SceneComponent.

code: virtual void Deactivate()


description:
Find the skeletal mesh component to apply the deformer on. This will return the skeletal mesh component (on this actor) which uses the same skeletal mesh as the passed in ML Deformer asset was trained on. If there is no such skeletal mesh component then it will return a nullptr.
The skeletal mesh component that would be the best.

code: [USkeletalMeshComponent](API\Runtime\Engine\Components\USkeletalMeshComponent) * FindSkeletalMeshComponent ( const [UMLDeformerAsset](API\Plugins\MLDeformerFramework\UMLDeformerAsset) *const Asset ) const


description:
Get the ML Deformer asset that is used by this component.
A pointer to the ML Deformer asset.


description: Get property names.


description:
Get the ML Deformer model instance that this component currently uses. The instance is responsible for running inference and feeding the neural network with inputs.
A pointer to the model instance object.


description: The quality level of the deformer. A value of 0 is the highest quality, 1 is a step lower, etc. It is up to the models to configure what each quality level means visually. If the quality level will be clamped to the available quality levels, so if you choose quality level 100, while there are only 3 levels, then quality level 3 will be used in this case, which represents the lowest available quality. In morph based models each quality level defines how many morph targets are active at most.

code: [UFUNCTION](Programming/UnrealArchitecture/Reference/Functions)(BlueprintCallable, Category="MLDeformer") int32 GetQualityLevel() const


description: Get the performance counter that measures how much time is spent inside the Tick function.

code: const [UE::MLDeformer::FMLDeformerPerfCounter](API\Plugins\MLDeformerFramework\FMLDeformerPerfCounter) & GetTickPerfCounter() const


description: Get the current ML Deformer weight. A value of 0 means it is fully disabled, while 1 means fully active. Values can be anything between 0 and 1.

code: [UFUNCTION](Programming/UnrealArchitecture/Reference/Functions)(BlueprintCallable, Category="MLDeformer") float GetWeight() const


description: Initialize the component. This releases any existing deformer instance that is active, and creates a new one. It then also calls PostMLDeformerComponentInit. This method is called automatically by SetupComponent.

code: void Init()


description: Called when a property on this object has been modified externally

code: virtual void PostEditChangeProperty ( [FPropertyChangedEvent](API\Runtime\CoreUObject\UObject\FPropertyChangedEvent) & PropertyChangedEvent )


description:
Get the skeletal mesh component that the ML Deformer will work on. The skeletal mesh that is setup inside the skeletal mesh component will be the mesh that will be deformed by this ML Deformer component.
A pointer to the skeletal mesh component who's mesh will be deformed by this ML Deformer component.


code: void ReleaseModelInstance()


description: Unbind from the MLDeformerModel's NeuralNetworkModifyDelegate.


description: Reset the tick cycle counters.

code: void ResetTickCycleCounters()


description: Set the ML Deformer asset.

code: virtual void SetDeformerAssetInternal ( [UMLDeformerAsset](API\Plugins\MLDeformerFramework\UMLDeformerAsset) *const InDeformerAsset )


description: Set the deformer asset that is used by this component. This will trigger the internal ML Deformer instance to be recreated.

code: [UFUNCTION](Programming/UnrealArchitecture/Reference/Functions)(BlueprintCallable, Category="MLDeformer") void SetDeformerAsset ( [UMLDeformerAsset](API\Plugins\MLDeformerFramework\UMLDeformerAsset) * InDeformerAsset )


code: [UFUNCTION](Programming/UnrealArchitecture/Reference/Functions)(BlueprintCallable, Category="MLDeformer") void SetQualityLevel ( int32 InQualityLevel )


description: Suppress logging warnings about mesh deformers not being set. A warning is logged when an ML Deformer is used that requires a deformer graph, but the skeletal mesh has no deformer graph setup.

code: void SetSuppressMeshDeformerLogWarnings ( bool bSuppress )


description: Setup the ML Deformer, by picking the deformer asset and skeletal mesh component.

code: [UFUNCTION](Programming/UnrealArchitecture/Reference/Functions)(BlueprintCallable, Category="MLDeformer") void SetupComponent ( [UMLDeformerAsset](API\Plugins\MLDeformerFramework\UMLDeformerAsset) * InDeformerAsset, [USkeletalMeshComponent](API\Runtime\Engine\Components\USkeletalMeshComponent) * InSkelMeshComponent )


description: Set the ML Deformer weight. This determines how active the deformer is. You can see it as a blend weight. A value of 0 means it is inactive. Certain calculations will be skipped in that case. A value of 1 means it is fully active. Values between 0 and 1 blend between the two states. Call this after you call SetupComponent.

code: [UFUNCTION](Programming/UnrealArchitecture/Reference/Functions)(BlueprintCallable, Category="MLDeformer") void SetWeight ( float NormalizedWeightValue )


description: Set the ML Deformer weight.

code: virtual void SetWeightInternal ( const float NormalizedWeightValue )


description: Function called every frame on this ActorComponent. Override this function to implement custom logic to be executed every frame. Only executes if the component is registered, and also PrimaryComponentTick.bCanEverTick must be set to true.

code: virtual void TickComponent ( float DeltaTime, enum ELevelTick TickType, [FActorComponentTickFunction](API\Runtime\Engine\Engine\FActorComponentTickFunction) * ThisTickFunction )


code: void UnbindDelegates()


description: Find the skeletal mesh component that this deformer should work on, and set it as our target component.

code: void UpdateSkeletalMeshComponent()


code: UMLDeformerComponent ( const [FObjectInitializer](API\Runtime\CoreUObject\UObject\FObjectInitializer) & ObjectInitializer )


description:
Get the mapping between geometry cache tracks and meshes inside the skeletal mesh. This lets us know what parts of the skeletal mesh are related to what geometry cache tracks. Once we have that, we can calculate deltas between the two.
The geometry cache mesh to skeletal mesh mappings.


className: UMLDeformerComponent

description: The ML mesh deformer component. This works in combination with a MLDeformerAsset and SkeletalMeshComponent. The component will perform runtime inference of the deformer model setup inside the asset. When you have multiple skeletal mesh components on your actor, this component will try to use the skeletal mesh component that uses the same skeletal mesh as the applied deformer was trained on. If it cannot find that, it will use the first skeletal mesh component it finds.

code: [UCLASS](Programming/UnrealArchitecture/Reference/Classes#classdeclaration)(Blueprintable, ClassGroup=Component, BlueprintType, Meta=(BlueprintSpawnableComponent)) class UMLDeformerComponent : public [UActorComponent](API\Runtime\Engine\Components\UActorComponent)

bSuppressMeshDeformerLogWarnings

type: bool

description: Suppress mesh deformer logging warnings? This is used by the ML Deformer editor, as we don't want to show some warnings when using that.

DeformerAsset

type: TObjectPtr<UML...

description: The deformer asset to use.

ModelInstance

description: The deformation model instance. This is used to perform the runtime updates and run the inference.

QualityLevel

description: The quality level of the deformer.

ReinitModelInstanceDelegateHandle

type: FDelegateHandle

description: The delegate handle used to bind to the reinit model instance delegate handle.

RenderCommandFence

type: FRenderCommandF...

description: Render command fence that let's us wait for all other commands to finish.

SkelMeshComponent

type: TObjectPtr<USk...

description: The skeletal mesh component we want to grab the bone transforms etc from.

TickPerfCounter

description: The performance counter that measures timing of the Tick function.

Weight

type: float

description: How active is this deformer? Can be used to blend it in and out.


code: const [TArray](API\Runtime\Core\Containers\TArray)< [UE::MLDeformer::FMLDeformerGeomCacheMeshMapping](API\Plugins\MLDeformerFramework\FMLDeformerGeomCacheMeshMapping) > & GetGeomCacheMeshMappings() const


description:
Get the visualization settings, already cast to aUMLDeformerGeomCacheVizSettingstype.
A pointer to the visualization settings.


description: Get property names.


description:
Get the geometry cache that represents the target deformation. This is our training target.
A pointer to the geometry cache, in read-only mode.

code: const [UGeometryCache](API\Plugins\GeometryCache\UGeometryCache) * GetGeometryCache() const


description:
Get the geometry cache that represents the target deformation. This is our training target.
A pointer to the geometry cache.


code: virtual bool HasTrainingGroundTruth() const


code: virtual void SampleGroundTruthPositions ( float SampleTime, [TArray](API\Runtime\Core\Containers\TArray)< FVector3f > & OutPositions )


code: virtual void Serialize ( [FArchive](API\Runtime\Core\Serialization\FArchive) & Archive )


description: Set the geometry cache object to use for training. Keep in mind that the editor still needs to handle a change of this property for things to be initialized correctly.

code: void SetGeometryCache ( [UGeometryCache](API\Plugins\GeometryCache\UGeometryCache) * GeomCache )


className: UMLDeformerGeomCacheModel

description: A ML Deformer model that has a geometry cache as target mesh. Use this in combination withUMLDeformerGeomCacheVizSettings, FMLDeformerGeomCacheEditorModel, FMLDeformerGeomCacheVizSettingsDetails and FMLDeformerGeomCacheModelDetails.

code: [UCLASS](Programming/UnrealArchitecture/Reference/Classes#classdeclaration)() class UMLDeformerGeomCacheModel : public UMLDeformerModel


description:
Get the test ground truth geometry cache, which represents the ground truth version of the test animation sequence.
A pointer to the geometry cache object.

code: [UGeometryCache](API\Plugins\GeometryCache\UGeometryCache) * GetTestGroundTruth() const


code: virtual bool HasTestGroundTruth() const


className: UMLDeformerGeomCacheVizSettings

description: The vizualization settings for a model that has a geometry cache. This can be used in combination with aUMLDeformerGeomCacheModel.

GroundTruth

type: TSoftObjectPtr<...

description: The geometry cache that represents the ground truth of the test anim sequence.


description: Return true if the associatedUComputeDataProviderholds data that can be combined into a single dispatch invocation.

code: virtual bool CanSupportUnifiedDispatch() const


description: Instantiate an associatedUComputeDataProvider.

code: virtual [UComputeDataProvider](API\Plugins\ComputeFramework\ComputeFramework\UComputeDataProvider) * CreateDataProvider ( [TObjectPtr](API\Runtime\Core\Delegates\TObjectPtr)< [UObject](API\Runtime\CoreUObject\UObject\UObject) > InBinding, uint64 InInputMask, uint64 InOutputMask ) const


description: Get a name for referencing the data interface its shader parameter structures. The InUniqueIndex is optional for use in generating the name.

code: virtual TCHAR const * GetClassName() const


description: Returns the name to show on the node that will proxy this interface in the graph view.

code: virtual [FString](API\Runtime\Core\Containers\FString) GetDisplayName() const


description: Gather the shader code for this data provider.

code: virtual void GetHLSL ( [FString](API\Runtime\Core\Containers\FString) & OutHLSL, [FString](API\Runtime\Core\Containers\FString) const & InDataInterfaceName ) const


description: Returns the list of pins that will map to the shader functions provided by this data interface.

code: virtual [TArray](API\Runtime\Core\Containers\TArray)< [FOptimusCDIPinDefinition](API\Plugins\OptimusCore\FOptimusCDIPinDefinition) > GetPinDefinitions() const


description: Returns the component type that this data interface operates on.

code: virtual [TSubclassOf](API\Runtime\CoreUObject\Templates\TSubclassOf)< [UActorComponent](API\Runtime\Engine\Components\UActorComponent) > GetRequiredComponentClass() const


description: Get a hash that changes on any data interface changes that affect kernel compilation.

code: virtual void GetShaderHash ( [FString](API\Runtime\Core\Containers\FString) & InOutKey ) const


description: If the data interface HLSL comes from a file this should fill the virtual file path. This is used to resolve shader compilation errors.

code: virtual TCHAR const * GetShaderVirtualPath() const


description: Gather the shader metadata exposed by the data provider payload.

code: virtual void GetShaderParameters ( TCHAR const * UID, [FShaderParametersMetadataBuilder](API\Runtime\RenderCore\FShaderParametersMetadataBuilder) & InOutBuilder, [FShaderParametersMetadataAllocations](API\Plugins\ComputeFramework\ComputeFramework\FShaderParameter-) & InOutAllocations ) const


description: Get the data interface functions available to fulfill external inputs of a kernel.

code: virtual void GetSupportedInputs ( [TArray](API\Runtime\Core\Containers\TArray)< [FShaderFunctionDefinition](API\Plugins\ComputeFramework\ComputeFramework\FShaderFunctionDefinition) > & OutFunctions ) const


className: TemplateFilePath

code: static TCHAR const * TemplateFilePath = TEXT("/Plugin/MLDeformerFramework/Private/MLDeformerModelHeatMap.ush");


className: UMLDeformerGraphDebugDataInterface

description: Compute Framework Data Interface for MLDeformer debugging data. This interfaces to editor only data, and so will only give valid results in that context.


description: Get an associated render thread proxy object. Currently these are created and destroyed per frame by theFComputeGraphInstance.


className: UMLDeformerGraphDebugDataProvider

description: Compute Framework Data Provider for MLDeformer debugging data.

code: [UCLASS](Programming/UnrealArchitecture/Reference/Classes#classdeclaration)(BlueprintType, EditInlineNew, Category=ComputeFramework) class UMLDeformerGraphDebugDataProvider : public [UComputeDataProvider](API\Plugins\ComputeFramework\ComputeFramework\UComputeDataProvider)


description:
Calculate how many inputs this input info generates for the neural network. A single bone on default takes 6 inputs.
THe number of input float values to the neural network.

code: virtual int32 CalcNumNeuralNetInputs() const


description:
Calculate how many inputs this input info generates for the neural network.
THe number of input float values to the neural network.

code: virtual int32 CalcNumNeuralNetInputs ( int32 NumFloatsPerBone, int32 NumFloatsPerCurve ) const


description: Copy members from the other class.

code: virtual void CopyMembersFrom ( [UMLDeformerInputInfo](API\Plugins\MLDeformerFramework\UMLDeformerInputInfo) * Other )


description: Extract bone space rotations, as a float array. The number of output rotations are NumBones * 6, where the array contains a set two columns of a 3x3 rotation matrix values. components of the bone's bone space (local space) rotation quaternion.

code: virtual void ExtractBoneRotations ( [USkeletalMeshComponent](API\Runtime\Engine\Components\USkeletalMeshComponent) * SkelMeshComponent, [TArray](API\Runtime\Core\Containers\TArray)< float > & OutRotations ) const


description: Extract the curve values for all curves we're interested in. Assume one float per curve.

code: virtual void ExtractCurveValues ( [USkeletalMeshComponent](API\Runtime\Engine\Components\USkeletalMeshComponent) * SkelMeshComponent, [TArray](API\Runtime\Core\Containers\TArray)< float > & OutValues ) const


description: Extract the curve values for all curves we're interested in.

code: virtual void ExtractCurveValues ( [USkeletalMeshComponent](API\Runtime\Engine\Components\USkeletalMeshComponent) * SkelMeshComponent, [TArray](API\Runtime\Core\Containers\TArray)< float > & OutValues, int32 NumFloatsPerCurve ) const


description:
Get the compatibility error report.
Returns an empty string in case there are no compatibility issues, otherwise it contains a string that describes the issue(s). In case a nullptr is passed as SkeletalMesh parameter, an empty string is returned.

code: virtual [FString](API\Runtime\Core\Containers\FString) GenerateCompatibilityErrorString ( [USkeletalMesh](API\Runtime\Engine\Engine\USkeletalMesh) * InSkeletalMesh ) const


description:
Get the bone name as anFName, for a given bone we included during training.
The name of the bone.

code: [FName](API\Runtime\Core\UObject\FName) GetBoneName ( int32 Index ) const


description:
Get the list of bone names that should be included as training inputs.
An array ofFNameobjects, one for each bone.

code: [TArray](API\Runtime\Core\Containers\TArray)< [FName](API\Runtime\Core\UObject\FName) > & GetBoneNames()


code: const [TArray](API\Runtime\Core\Containers\TArray)< [FName](API\Runtime\Core\UObject\FName) > & GetBoneNames() const


description: Deprecated* Please use GetBoneName instead.

code: const [FString](API\Runtime\Core\Containers\FString) & GetBoneNameString ( int32 Index ) const


description: Deprecated* Please use GetBoneNames instead.

code: [TArray](API\Runtime\Core\Containers\TArray)< [FString](API\Runtime\Core\Containers\FString) > & GetBoneNameStrings()


description:
Get the curve name as anFName, for a given curve we included during training.
The name of the curve.

code: [FName](API\Runtime\Core\UObject\FName) GetCurveName ( int32 Index ) const


description:
Get the list of curve names that should be included as training inputs.
An array ofFNameobjects, one for each curve.

code: [TArray](API\Runtime\Core\Containers\TArray)< [FName](API\Runtime\Core\UObject\FName) > & GetCurveNames()


code: const [TArray](API\Runtime\Core\Containers\TArray)< [FName](API\Runtime\Core\UObject\FName) > & GetCurveNames() const


description: Deprecated* Please use GetCurveName instead.

code: const [FString](API\Runtime\Core\Containers\FString) & GetCurveNameString ( int32 Index ) const


description: Deprecated* Please use GetCurveNames instead.

code: [TArray](API\Runtime\Core\Containers\TArray)< [FString](API\Runtime\Core\Containers\FString) > & GetCurveNameStrings()


description:
Get the number of bones that we trained on.
The number of bones.

code: int32 GetNumBones() const


description:
Get the number of curves that we trained on.
The number of curves.

code: int32 GetNumCurves() const


description:
Get the path to the skeletal mesh that this deformer was trained on.
The path to the skeletal mesh we used during training.

code: const [FSoftObjectPath](API\Runtime\CoreUObject\UObject\FSoftObjectPath) & GetSkeletalMesh() const


description:
Use GenerateCompatibilityErrorString to get the error report.
Returns true when we can safely apply the ML Deformer to a character using this skeletal mesh, otherwise false is returned.

code: virtual bool IsCompatible ( [USkeletalMesh](API\Runtime\Engine\Engine\USkeletalMesh) * InSkeletalMesh ) const


description:
Check whether we have any training inputs or not. This happens when there are no bones or curves to use as inputs.
Returns true when there are no bones or curves specified as inputs.

code: virtual bool IsEmpty() const


description: This method is executed post loading of the ML Deformer asset.

code: virtual void OnPostLoad()


description: Clear all contents. This can clear the list of all bone and curves that are part of this input info.

code: virtual void Reset()


description: Batch convert a set of transform rotation quaternions into two column vectors.

code: static void RotationToTwoVectorsAsSixFloats ( [TArrayView](API\Runtime\Core\Containers\TArrayView)< FTransform > Transforms, float * OutputBuffer )


description: Convert a rotation quaternion to two basis vectors, each represented as 3 floats, so 6 floats in total.

code: static void RotationToTwoVectorsAsSixFloats ( const FQuat & Rotation, float * SixFloatsOutputBuffer )


description: Set the number of vertices of our base mesh, which is the linear skinned skeletal mesh. The vertex count must be the same as in the DCC, so not the render mesh vertex count.

code: void SetNumBaseVertices ( int32 NumVerts )


description: Set the number of target mesh vertices. The target mesh is our training target/ground truth mesh. The vertex count must be the same as in the DCC, so not the render mesh vertex count.

code: void SetNumTargetVertices ( int32 NumVerts )


description:
Get the number of imported vertices in the target mesh, which is our training target/ground truth mesh. The number of vertices is the vertex count as in the DCC.
The number of imported vertices in the target mesh.

code: int32 GetNumTargetMeshVertices() const


description:
Get the number of imported vertices in the base mesh, which is the linear skinned skeletal mesh.
The number of imported vertices in the base mesh.

code: int32 GetNumBaseMeshVertices() const


description: Set skeletal mesh that we trained on.

code: void SetSkeletalMesh ( [USkeletalMesh](API\Runtime\Engine\Engine\USkeletalMesh) * InSkeletalMesh )


description: Deprecated* This method will be removed soon. It shouldn't be needed anymore.

code: void UpdateFNames()


description: Deprecated* This method will be removed soon. Please only use the BoneNames and CurveNames and not their string versions.

code: void UpdateNameStrings()


code: virtual ~UMLDeformerInputInfo()


className: UMLDeformerInputInfo

description: The neural network input information. This contains arrays of names for things such as bones and curves. Knowing what bones etc are used as inputs, and in what order, helps us feeding the data during inference. It can also help us detect issues, for example when the character we apply the deformer to is missing any of those bones.

code: [UCLASS](Programming/UnrealArchitecture/Reference/Classes#classdeclaration)() class UMLDeformerInputInfo : public [UObject](API\Runtime\CoreUObject\UObject\UObject)

BoneNames

type: TArray<FName>

description: The name of each bone.

CurveNames

description: The name of each curve.

NumBaseMeshVertices

description: Number of imported base mesh vertices, so not render vertices.

NumTargetMeshVertices

description: Number of imported target mesh vertices, so not render vertices.

SkeletalMesh

type: FSoftObjectPath

description: The path to the skeletal mesh that this model was trained on.


description: Called before destroying the object. This is called immediately upon deciding to destroy the object, to allow the object to begin an asynchronous cleanup process.

code: virtual void BeginDestroy()


description:
Check whether the deformer is compatible with a given skeletal mesh component. This internally also edits the value returned byGetCompatibilityErrorText().
Returns the error string. When the returned string is empty, there were no errors and thus the specified skeletal mesh component is compatible.

code: virtual [FString](API\Runtime\Core\Containers\FString) CheckCompatibility ( [USkeletalMeshComponent](API\Runtime\Engine\Components\USkeletalMeshComponent) * InSkelMeshComponent, bool bLogIssues )


description: Execute the model instance, which can run the neural network inference in case the model uses a neural network. This already assumes that compatibility checks are done, and that the network inputs are set etc.

code: virtual void Execute ( float ModelWeight )


description:
Get the current component space bone transforms that we grabbed from the skeletal mesh component.
The cached bone transforms, in component space.

code: const [TArray](API\Runtime\Core\Containers\TArray)< FTransform > & GetBoneTransforms() const


description:
Get the compatibility error text. This will be a non-empty string in caseIsCompatible()return false.
Returns the string containing more information about the reasons for compatibility issues.

code: const [FString](API\Runtime\Core\Containers\FString) & GetCompatibilityErrorText() const


description: Get the model that this is an instance of.

code: UMLDeformerModel * GetModel() const


description:
Get the neural network inference handle.
Returns the handle. This is -1 for an invalid handle.


description:
Get the skeletal mesh component we're working with.
A pointer to the skeletal mesh component.

code: [USkeletalMeshComponent](API\Runtime\Engine\Components\USkeletalMeshComponent) * GetSkeletalMeshComponent() const


description: Handle when the model weight is zero. This is called when ticking with a zero model weight. The SetupNeuralNetworkForFrame and RunNeuralNetwork calls are skipped in case we have a model weight near zero, as optimization. Instead, this method is called in that case. It can be used to for example set morph target weights to zero.

code: virtual void HandleZeroModelWeight()


description: Check whether we already called UMLDeformerModel::PostMLDeformerComponentInit.

code: bool HasPostInitialized() const


description:
Get the ML Deformer component that this instance is part of.
A pointer to the ML Deformer component.

code: [UMLDeformerComponent](API\Plugins\MLDeformerFramework\UMLDeformerComponent) * GetMLDeformerComponent() const


description: Initialize the model instance. This internally builds the structures to quickly grab bone transforms. If you override this method, you probably also want to call the Init of this base class inside your overloaded method.

code: virtual void Init ( [USkeletalMeshComponent](API\Runtime\Engine\Components\USkeletalMeshComponent) * SkelMeshComponent )


description:
Check whether we have valid transforms in the skeletal mesh component. When this returns false, we can't really execute the deformer.
Returns true if the skeletal mesh component, or its leader component has non-empty transform buffers.

code: bool HasValidTransforms() const


description:
Called to check if the object is ready for FinishDestroy. This is called after BeginDestroy to check the completion of the potentially asynchronous object cleanup.
True if the object's asynchronous cleanup has completed and it is ready for FinishDestroy to be called.

code: virtual bool IsReadyForFinishDestroy()


description:
Is the deformer asset used compatible with the skeletal mesh component used during the Init call?
True if compatible, false if not.

code: bool IsCompatible() const


description:
Check if we are in a valid state for the deformer graph's data provider. In the base class this will check whether the neural network is valid, if the vertex map buffer is valid and whether the neural network instance handle is valid.
Returns true if the data provider in would be in a valid state, otherwise false is returned.

code: virtual bool IsValidForDataProvider() const


description: Initialize this model, after the ML deformer component has been initialized. This is a post-step after component initialization. It can be used to register things such as external morph target sets that are generated by this model.


description: Release all built lookup tables etc. Also call this base class method if you override this method.

code: virtual void Release()


description:
Set the bone transformations inside a given output buffer, starting from a given StartIndex.
The new start index into the output buffer, to be used when you write more data after this.

code: virtual int64 SetBoneTransforms ( float * OutputBuffer, int64 OutputBufferSize, int64 StartIndex )


description:
Set the animation curve values inside a given output buffer, starting from a given StartIndex.
The new start index into the output buffer, to be used when you write more data after this.

code: virtual int64 SetCurveValues ( float * OutputBuffer, int64 OutputBufferSize, int64 StartIndex )


description: Set whether we had a successful call to UMLDeformerModel::PostMLDeformerComponentInit.

code: void SetHasPostInitialized ( bool bHasInitialized )


description: Set the deformer model that this is an instance of.

code: void SetModel ( UMLDeformerModel * InModel )


description:
Update the neural network input values directly inside its input tensor. This will copy over the bone transforms (and possibly morph and curve weights) into this flat array.
Returns the new buffer element index. For example if there were 2 bones and 3 curves, and each bone takes 6 inputs and each curve takes one input, then after calling this base class method, it will return 15 (2*6 + 3*1). You could call this base class method and then write data after that, starting from the offset that is returned.

code: virtual int64 SetNeuralNetworkInputValues ( float * InputData, int64 NumInputFloats )


description:
Setup the neural network for this frame. This has to perform compatibility checks, valid pointer checks, and call the SetNeuralNetworkInputValues. After this method is executed, the neural network should be ready to execute. TheUMLDeformerModelInstance::Tickmethod internally calls both the SetupNeuralNetworkForFrame and RunNeuralNetwork methods.
Returns true when the setup is done correctly and the neural network is ready to be executed. Otherwise false is returned, which can happen when the NeuralNetwork pointer is invalid, when the model is not set, when the network is not compatible, etc.

code: virtual bool SetupInputs()


description: Update the deformer instance. If you use a neural network, this should provide inputs to the neural network.

code: virtual void Tick ( float DeltaTime, float ModelWeight )


description: Updates the bone transforms array.

code: void UpdateBoneTransforms()


description: Update the compatibility status, as returned byIsCompatible()andGetCompatibilityErrorText().

code: void UpdateCompatibilityStatus()


code: UMLDeformerModelInstance()


className: UMLDeformerModelInstance

description: An instance of the ML Deformer model. The ML Deformer model contains shared data, while this instance contains data unique to the actor it is being applied to. So if you have 1 ML Deformer model, applied to 100 enemy actors, you will get 100 ML Deformer Model Instance objects. The model instance is created and managed by the ML Deformer component. The main task of the model instance is to feed the neural network with the right input values and run the neural network inference at runtime, and possibly do something with the output.

code: [UCLASS](Programming/UnrealArchitecture/Reference/Classes#classdeclaration)() class UMLDeformerModelInstance : public [UObject](API\Runtime\CoreUObject\UObject\UObject)

AssetBonesToSkelMeshMappings

type: TArray< int32 >

description: Maps the ML deformer asset bone index to a skeletal mesh component bone index.

bHasPostInitialized

description: Has this instance had a successful UMLDeformerModel::PostMLDeformerComponentInit call?

bIsCompatible

description: Are the deformer asset and the used skeletal mesh component compatible?

BoneTransforms

type: TArray< FTransf...

description: A temp array of bone transforms.

ErrorText

type: FString

description: The compatibility error text, in case bIsCompatible is false.

Model

description: The ML Deformer model that this is an instance of.

RenderCommandFence

description: The fence that let's us wait for all render commands to finish, before we continue.

SkeletalMeshComponent

description: The skeletal mesh component we work with. This is mainly used for compatibility checks.

TrainingBoneTransforms

description: The cached current local space bone transforms for the current frame.


code: virtual void BeginDestroy()


code: virtual [UMLDeformerModelInstance](API\Plugins\MLDeformerFramework\UMLDeformerModelInstance) * CreateModelInstance ( [UMLDeformerComponent](API\Plugins\MLDeformerFramework\UMLDeformerComponent) * Component )


code: virtual bool DoesSupportQualityLevels() const


code: bool GetInvertMaskChannel() const


code: float GetMorphCompressionLevel() const


description: Get property names.


description:
Get the start index into the array of deltas (vectors3's), for a given morph target. This does not perform a bounds check to see if MorphTargetIndex is in a valid range, so be aware.
The start index, or INDEX_NONE in case there are no deltas.

code: int32 GetMorphTargetDeltaStartIndex ( int32 MorphTargetIndex ) const


description: Deprecated* Please use GetMorphDeltaZeroThresholdPropertyName instead.


description: Get the morph target delta vectors array. The layout of this array is [morphdeltas_target0, morphdeltas_target1, ..., morphdeltas_targetN]. So the total number of items in the array returned equals (NumMorphTargets * NumBaseMeshVerts).

code: const [TArray](API\Runtime\Core\Containers\TArray)< FVector3f > & GetMorphTargetDeltas() const


description: Deprecated* Please use GetMorphCompressionLevel instead.


description: Deprecated* Please use GetMorphCompressionLevelPropertyName instead.


description:
Get the estimated error that disabling a specific morph target would introduce. This error is represented in units, so in cm.
The estimated error value, in cm.

code: float GetMorphTargetError ( int32 MorphIndex ) const


description: Deprecated* Please use GetMorphDeltaZeroThreshold instead.


description:
Get the array of morph target indices, sorted by error value, from largest to smallest error. So the first array value contains the index of the most important morph target and the last element contains the least important morph target.
An array view of the morph target indices.

code: [TArrayView](API\Runtime\Core\Containers\TArrayView)< const int32 > GetMorphTargetErrorOrder() const


description:
Get the morph target error values. This is an error value for each morph target, which indicates how much error you would introduce when disabling that specific morph target. It can be used as some sort of LOD system, where we disable morph targets that are marked with an error below a specific threshold. Keep in mind that the first morph target always contains the means, and is always active. So actually you have to +1 the index.
The array view of the error values.

code: [TArrayView](API\Runtime\Core\Containers\TArrayView)< const float > GetMorphTargetErrorValues() const


description: SetMorphTargetsMaxWeights.

code: [TArrayView](API\Runtime\Core\Containers\TArrayView)< const float > GetMorphTargetMaxWeights() const


description: Get the morph target set.

code: [TSharedPtr](API\Runtime\Core\Templates\TSharedPtr)< [FExternalMorphSet](API\Runtime\Engine\Components\FExternalMorphSet) > GetMorphTargetSet() const


description: Get the number of active morph targets for a given quality level. If no morph error data is available, or if no quality levels have been setup, the total number of morph targets is returned. If there is such data, the quality level will be clamped to be within a valid range. Finally, if the number of active morph targets specified by the quality level will be clamped within a valid range as well. So basically this method will always return a valid number of morph targets, whatever the input is.

code: int32 GetNumActiveMorphs ( int32 QualityLevel ) const


code: int32 GetNumMorphTargets() const


description:
Get the quality levels.
An array view of the quality levels.

code: [TArrayView](API\Runtime\Core\Containers\TArrayView)< const [FMLDeformerMorphModelQualityLevel](API\Plugins\MLDeformerFramework\FMLDeformerMorphModelQualityLeve-) > GetQualityLevels() const


description:
Get the quality levels, with access to modify the quality levels.
The array containing the quality levels.


code: virtual bool IsNeuralNetworkOnGPU() const


code: virtual bool IsReadyForFinishDestroy()


code: virtual void PostLoad()


code: virtual void Serialize ( [FArchive](API\Runtime\Core\Serialization\FArchive) & Archive )


code: void SetIncludeMorphTargetNormals ( bool bInclude )


code: void SetInvertMaskChannel ( bool bInvert )


code: void SetMorphCompressionlevel ( float Tolerance )


code: void SetMorphDeltaZeroThreshold ( float Threshold )


description: Deprecated* Please use SetMorphDeltaZeroThreshold instead.

code: void SetMorphTargetDeltaThreshold ( float Threshold )


description: Set the per vertex deltas, as a set of floats. Each vertex delta must have 3 floats. These deltas are used to generate compressed morph targets internally. You typically call this method from inside the python training script once your morph target deltas have been generated there. Concatenate all deltas into one buffer, so like this [morphdeltas_target0, morphdeltas_target1, ..., morphdeltas_targetN]. The vertex ordering should be: [(x, y, z), (x, y, z), (x, y, z)]. This is the same as SetMorphTargetDeltas, except that this takes an array of floats instead of vectors.

code: [UFUNCTION](Programming/UnrealArchitecture/Reference/Functions)(BlueprintCallable, Category="MLDeformerMorphModel") void SetMorphTargetDeltaFloats ( const [TArray](API\Runtime\Core\Containers\TArray)< float > & Deltas )


description: Set the morph target model deltas as an array of 3D vectors. These deltas are used to generate compressed morph targets internally. You typically call this method from inside the python training script once your morph target deltas have been generated there. Concatenate all deltas into one buffer, so like this [morphdeltas_target0, morphdeltas_target1, ..., morphdeltas_targetN]. This is the same as SetMorphTargetDeltaFloats, except that it takes vectors instead of floats.

code: [UFUNCTION](Programming/UnrealArchitecture/Reference/Functions)(BlueprintCallable, Category="MLDeformerMorphModel") void SetMorphTargetDeltas ( const [TArray](API\Runtime\Core\Containers\TArray)< FVector3f > & Deltas )


description: Deprecated* Please use SetMorphCompressionLevel instead.

code: void SetMorphTargetErrorTolerance ( float Tolerance )


code: void SetMaskChannel ( [EMLDeformerMaskChannel](API\Plugins\MLDeformerFramework\EMLDeformerMaskChannel) Channel )


description: Set the estimated error that disabling a specific morph target would introduce. This error is represented in units, so in cm.

code: void SetMorphTargetError ( int32 MorphIndex, float Error )


description: Set the order of importance during LOD, for the morph targets. Basically this specifies the sorted order of the morph targets, based on the error they introduce when disabling them.

code: [UFUNCTION](Programming/UnrealArchitecture/Reference/Functions)(BlueprintCallable, Category="MLDeformerMorphModel") void SetMorphTargetsErrorOrder ( const [TArray](API\Runtime\Core\Containers\TArray)< int32 > & MorphTargetOrder, const [TArray](API\Runtime\Core\Containers\TArray)< float > & ErrorValues )


description: Set the maximum weights for each morph target when we pass the training inputs into the trained neural network. After training we run the inputs through the trained network, and get the weights for each morph target. The array passed to this function must be the maximum of the absolute weight value over all training samples for each specific morph. We use this to scale the morph target deltas to get an estimate of the maximum length they will ever have, which we can in turn use to estimate how important a given morph target is. Keep in mind that these are the maximum of the absolute weights. As weights can be negative, we first take the absolute value of them. Training python scripts mostly will call this function to set the values.

code: [UFUNCTION](Programming/UnrealArchitecture/Reference/Functions)(BlueprintCallable, Category="MLDeformerMorphModel") void SetMorphTargetsMaxWeights ( const [TArray](API\Runtime\Core\Containers\TArray)< float > & MaxWeights )


description: Deprecated* Use SetMaskChannel instead.

code: void SetWeightMask ( [EMLDeformerMaskChannel](API\Plugins\MLDeformerFramework\EMLDeformerMaskChannel) Channel )


code: virtual void UpdateMemoryUsage()


description: Update the statistics properties of this model.

code: virtual void UpdateStatistics()


code: UMLDeformerMorphModel ( const [FObjectInitializer](API\Runtime\CoreUObject\UObject\FObjectInitializer) & ObjectInitializer )


className: UMLDeformerMorphModel

description: The morph model base class. This is the base class for models that generate and drive morph targets. Use this in combination withUMLDeformerMorphModelInstanceor inherited classes.


code: [TArray](API\Runtime\Core\Containers\TArray)< float > & GetInputItemMaskBuffer()


code: const [TArray](API\Runtime\Core\Containers\TArray)< float > & GetInputItemMaskBuffer() const


code: const [TArrayView](API\Runtime\Core\Containers\TArrayView)< const float > GetMaskForItem ( int32 MaskItemIndex ) const


description: Handles reading, writing, and reference collecting usingFArchive. This implementation handles allFPropertyserialization, but can be overridden for native variables.

code: virtual void Serialize ( [FArchive](API\Runtime\Core\Serialization\FArchive) & Ar )


className: UMLDeformerMorphModelInputInfo

code: [UCLASS](Programming/UnrealArchitecture/Reference/Classes#classdeclaration)() class UMLDeformerMorphModelInputInfo : public [UMLDeformerInputInfo](API\Plugins\MLDeformerFramework\UMLDeformerInputInfo)

InputItemMaskBuffer

type: TArray< float >

description: The buffer of mask values, which contains one float per imported vertex, for all input items.


description: Called before destroying the object. This is called immediately upon deciding to destroy the object, to allow the object to begin an asynchronous cleanup process.

code: virtual void BeginDestroy()


description:
Find the external morph target weight data for this model instance.
A pointer to the weight data, or a nullptr in case it cannot be found.

code: [FExternalMorphSetWeights](API\Runtime\Engine\Components\FExternalMorphSetWeights) * FindWeightData ( int32 LOD ) const


code: int32 GetExternalMorphSetID() const


description: Handle when the model weight is zero. This is called when ticking with a zero model weight. The SetupNeuralNetworkForFrame and RunNeuralNetwork calls are skipped in case we have a model weight near zero, as optimization. Instead, this method is called in that case. It can be used to for example set morph target weights to zero.

code: virtual void HandleZeroModelWeight()


description: Initialize the model instance. This internally builds the structures to quickly grab bone transforms. If you override this method, you probably also want to call the Init of this base class inside your overloaded method.

code: virtual void Init ( [USkeletalMeshComponent](API\Runtime\Engine\Components\USkeletalMeshComponent) * SkelMeshComponent )


description:
Check if we are in a valid state for the deformer graph's data provider. In the base class this will check whether the neural network is valid, if the vertex map buffer is valid and whether the neural network instance handle is valid.
Returns true if the data provider in would be in a valid state, otherwise false is returned.

code: virtual bool IsValidForDataProvider() const


className: NextFreeMorphSetID

description: The next free morph target set ID. This is used to generate unique ID's for each morph model.

code: static [TAtomic](API\Runtime\Core\HAL\TAtomic)< int32 > NextFreeMorphSetID;


description: Initialize this model, after the ML deformer component has been initialized. This is a post-step after component initialization. It can be used to register things such as external morph target sets that are generated by this model.


description: Update the deformer instance. If you use a neural network, this should provide inputs to the neural network.

code: virtual void Tick ( float DeltaTime, float ModelWeight )


className: UMLDeformerMorphModelInstance

description: The model instance for theUMLDeformerMorphModel. This instance will assume the neural network outputs a set of weights, one for each morph target. The weights of the morph targets in the external morph target set related to the ID of the model will be set to the weights that the neural network outputs. The first morph target contains the means, which need to always be added to the results. Therefore the weight of the first morph target will always be forced to a value of 1.

ExternalMorphSetID

description: The ID of the external morph target set for this instance. This gets initialized during Init.

LastQualityLevel

description: The quality level in the previous tick.

MorphLerpAlpha

description: The current lerp alpha (between 0 and 1).

StartMorphWeights

description: The morph target weights we are blending towards.


code: bool GetDrawMorphTargets() const


description: Deprecated* This method will be removed, please do not use this method anymore.


description: Deprecated* This method will be removed, as well as the MorphTargetDeltaThreshold member, please do not use this method anymore.


code: int32 GetMorphTargetNumber() const


description: Get property names.


code: void SetDrawMorphTargets ( bool bDraw )


code: void SetMorphTargetNumber ( int32 MorphIndexToPreview )


className: UMLDeformerMorphModelVizSettings

description: The vizualization settings specific to theUMLDeformerMorphModelclass, or inherited classes.

bDrawMorphTargets

description: Specify whether we want to debug draw the morph targets.

MorphTargetNumber

description: The morph target to visualize.


code: float GetAnimPlaySpeed() const


code: [UMeshDeformer](API\Runtime\Engine\Animation\UMeshDeformer) * GetDeformerGraph() const


code: bool GetDrawLabels() const


code: bool GetDrawGroundTruthActor() const


code: bool GetDrawLinearSkinnedActor() const


code: bool GetDrawMLDeformedActor() const


code: bool GetDrawVertexDeltas() const


code: float GetGroundTruthLerp() const


code: float GetHeatMapMax() const


code: float GetLabelHeight() const


code: float GetLabelScale() const


code: float GetMeshSpacing() const


code: int32 GetQualityLevel() const


code: bool GetShowHeatMap() const


code: const [UAnimSequence](API\Runtime\Engine\Animation\UAnimSequence) * GetTestAnimSequence() const


code: int32 GetTestingFrameNumber() const


code: int32 GetTrainingFrameNumber() const


description: Get property names.


code: float GetWeight() const


code: bool GetXRayDeltas() const


code: virtual bool HasTestGroundTruth() const


description:
Called during saving to determine if the object is forced to be editor only or not
true if this object should never be loaded outside the editor

code: virtual bool IsEditorOnly() const


description: Called when a property on this object has been modified externally

code: virtual void PostEditChangeProperty ( [FPropertyChangedEvent](API\Runtime\CoreUObject\UObject\FPropertyChangedEvent) & PropertyChangedEvent )


code: void SetDeformerGraph ( [UMeshDeformer](API\Runtime\Engine\Animation\UMeshDeformer) * InDeformerGraph )


code: void SetQualityLevel ( int32 InQualityLevel )


code: void SetTestingFrameNumber ( int32 FrameNumber )


code: void SetTrainingFrameNumber ( int32 FrameNumber )


code: void SetWeight ( float InWeight )


code: void SetVisualizationMode ( [EMLDeformerVizMode](API\Plugins\MLDeformerFramework\EMLDeformerVizMode) Mode )


className: UMLDeformerVizSettings

description: The vizualization settings.

code: [UCLASS](Programming/UnrealArchitecture/Reference/Classes#classdeclaration)() class UMLDeformerVizSettings : public [UObject](API\Runtime\CoreUObject\UObject\UObject)

AnimPlaySpeed

description: The play speed factor of the test anim sequence.

bDrawDeltas

description: Specifiy whether we want to draw the vertex deltas or not.

bDrawGroundTruthActor

description: Specifies whether we draw the ground truth model or not.

bDrawLabels

description: Specifies whether we should draw the labels, such as "Linear Skinned" and "ML Deformed" or not.

bDrawLinearSkinnedActor

description: Specifies whether we draw the linear skinned model or not.

bDrawMLDeformedActor

description: Specifies whether we draw the ML Deformed model or not.

bShowHeatMap

description: Specify whether the heatmap is enabled or not.

bXRayDeltas

description: Specify whether the vertex deltas are rendered, even if they are behind the current mesh.

DeformerGraph

description: The deformer graph to use on the asset editor's deformed test actor.

GroundTruthLerp

description: The Lerp factor from ML deformed model to ground truth model when in heat map mode.

HeatMapMax

description: Specifies how many centimeters the most intense color of the heatmap represents.

HeatMapMode

type: EMLDeformerHeat...

description: Specifies what the heatmap colors should represent.

LabelHeight

description: The height in units to draw the labels at.

LabelScale

description: The scale of the label text.

MeshSpacing

description: The spacing between meshes.

QualityLevel

description: The ML Deformer LOD value.

TestAnimSequence

description: The animation sequence to play on the skeletal mesh.

TestingFrameNumber

description: The frame number of the test data to visualize.

TrainingFrameNumber

description: The frame number of the training data to visualize.

VisualizationMode

type: EMLDeformerVizM...

description: The data to visualize.

Weight

description: The scale factor of the ML deformer deltas being applied on top of the linear skinned results.


className: UpdateCachedNumVertices

description: Update the cached number of vertices of both base and target meshes.

code: virtual void UpdateCachedNumVertices()


className: UpdateMemoryUsage

description: Force update the cached memory usage.

code: virtual void UpdateMemoryUsage()


className: UpdateNumBaseMeshVertices

description: Update the cached number of vertices in the base mesh. The number of vertices should be the number of DCC vertices, so not the number of render vertices. This just updates the NumBaseMeshVerts property.


className: UpdateNumTargetMeshVertices

description: Update the cached number of target mesh vertices. Every model needs to implement this. The number of vertices should be the number of DCC vertices, so not the number of render vertices. This just updates the NumTargetMeshVerts property.


className: ~UMLDeformerModel

code: virtual ~UMLDeformerModel()


className: ETrainingResult

description: Training process return codes.

module: MLDeformerFrameworkEditor

code: enum ETrainingResult { Success = 0, Aborted, AbortedCantUse, FailOnData, FailPythonError, }


className: ModeName

description: The name of this mode.


code: virtual void RegisterTabFactories ( [TSharedPtr](API\Runtime\Core\Templates\TSharedPtr)< [FTabManager](API\Runtime\Slate\Framework\Docking\FTabManager) > InTabManager )


code: FMLDeformerApplicationMode ( [TSharedRef](API\Runtime\Core\Templates\TSharedRef)< [FWorkflowCentricApplication](API\Editor\UnrealEd\WorkflowOrientedApp\FWorkflowCentricApplication) > InHostingApp, [TSharedRef](API\Runtime\Core\Templates\TSharedRef)< [IPersonaPreviewScene](API\Editor\Persona\IPersonaPreviewScene) > InPreviewScene )


className: FMLDeformerApplicationMode

description: The application mode for the ML Deformer editor. This defines the layout of the UI. It basically spawns all the tabs, such as the viewport, details panels, etc.

code: class FMLDeformerApplicationMode : public [FApplicationMode](API\Editor\UnrealEd\WorkflowOrientedApp\FApplicationMode)

EditorToolkit

type: TWeakPtr<FMLDe...

description: The hosting app.

TabFactories

type: FWorkflowAllowe...

description: The tab factories we support.


code: [TSharedRef](API\Runtime\Core\Templates\TSharedRef)< [ITableRow](API\Runtime\Slate\Widgets\Views\ITableRow) > MakeTreeRowWidget ( const [TSharedRef](API\Runtime\Core\Templates\TSharedRef)< [STableViewBase](API\Runtime\Slate\Widgets\Views\STableViewBase) > & InOwnerTable, [TSharedRef](API\Runtime\Core\Templates\TSharedRef)< [FMLDeformerBonePickerTreeElement](API\Plugins\MLDeformerFrameworkEditor\FMLDeformerBonePickerTreeElement) > InTreeElement, [TSharedPtr](API\Runtime\Core\Templates\TSharedPtr)< [SMLDeformerBonePickerTreeWidget](API\Plugins\MLDeformerFrameworkEditor\SMLDeformerBonePickerTreeWidget) > InTreeWidget )


className: FMLDeformerBonePickerTreeElement

code: class FMLDeformerBonePickerTreeElement : public [TSharedFromThis< FMLDeformerBonePickerTreeElement >](API\Runtime\Core\Templates\TSharedFromThis)

Children

type: TArray<TShared...

Name

type: FName

TextColor

type: FSlateColor


code: [TSharedRef](API\Runtime\Core\Templates\TSharedRef)< [ITableRow](API\Runtime\Slate\Widgets\Views\ITableRow) > MakeRowWidget ( const [TSharedRef](API\Runtime\Core\Templates\TSharedRef)< [STableViewBase](API\Runtime\Slate\Widgets\Views\STableViewBase) > & InOwnerTable, [TSharedRef](API\Runtime\Core\Templates\TSharedRef)< [FMLDeformerCurvePickerElement](API\Plugins\MLDeformerFrameworkEditor\FMLDeformerCurvePickerElement) > InElement, [TSharedPtr](API\Runtime\Core\Templates\TSharedPtr)< [SMLDeformerCurvePickerListView](API\Plugins\MLDeformerFrameworkEditor\SMLDeformerCurvePickerListView) > InListView )


code: FMLDeformerCurvePickerElement ( const [FName](API\Runtime\Core\UObject\FName) InName, const [FSlateColor](API\Runtime\SlateCore\Styling\FSlateColor) & InTextColor )


className: FMLDeformerCurvePickerElement

code: class FMLDeformerCurvePickerElement : public [TSharedFromThis< FMLDeformerCurvePickerElement >](API\Runtime\Core\Templates\TSharedFromThis)


description: Called when the children of the property should be customized or extra rows added

code: virtual void CustomizeChildren ( [TSharedRef](API\Runtime\Core\Templates\TSharedRef)< [IPropertyHandle](API\Editor\PropertyEditor\IPropertyHandle) > PropertyHandle, class [IDetailChildrenBuilder](API\Editor\PropertyEditor\IDetailChildrenBuilder) & ChildBuilder, [IPropertyTypeCustomizationUtils](API\Editor\PropertyEditor\IPropertyTypeCustomizationUtils) & CustomizationUtils )


description: Called when the header of the property (the row in the details panel where the property is shown) If nothing is added to the row, the header is not displayed

code: virtual void CustomizeHeader ( [TSharedRef](API\Runtime\Core\Templates\TSharedRef)< [IPropertyHandle](API\Editor\PropertyEditor\IPropertyHandle) > PropertyHandle, class [FDetailWidgetRow](API\Editor\PropertyEditor\FDetailWidgetRow) & HeaderRow, [IPropertyTypeCustomizationUtils](API\Editor\PropertyEditor\IPropertyTypeCustomizationUtils) & CustomizationUtils )


code: [TSharedPtr](API\Runtime\Core\Templates\TSharedPtr)< [IPropertyHandle](API\Editor\PropertyEditor\IPropertyHandle) > FindStructMemberProperty ( [TSharedRef](API\Runtime\Core\Templates\TSharedRef)< [IPropertyHandle](API\Editor\PropertyEditor\IPropertyHandle) > PropertyHandle, const [FName](API\Runtime\Core\UObject\FName) & PropertyName )


code: static [TSharedRef](API\Runtime\Core\Templates\TSharedRef)< [IPropertyTypeCustomization](API\Editor\PropertyEditor\IPropertyTypeCustomization) > MakeInstance()


code: virtual void SetPropertyHandle ( [TSharedRef](API\Runtime\Core\Templates\TSharedRef)< [IPropertyHandle](API\Editor\PropertyEditor\IPropertyHandle) > StructPropertyHandle )


code: void SetSkeleton ( [TSharedRef](API\Runtime\Core\Templates\TSharedRef)< [IPropertyHandle](API\Editor\PropertyEditor\IPropertyHandle) > StructPropertyHandle )


className: FMLDeformerCurveReferenceCustomization

description: The curve reference property detail customization.

code: class FMLDeformerCurveReferenceCustomization : public [IPropertyTypeCustomization](API\Editor\PropertyEditor\IPropertyTypeCustomization)

CurveNameProperty

type: TSharedPtr<IPr...

description: Property to change after curve has been picked.

Skeleton

description: The Skeleton we get the curves from.


code: [UTextRenderComponent](API\Runtime\Engine\Components\UTextRenderComponent) * CreateLabelComponent ( [AActor](API\Runtime\Engine\GameFramework\AActor) * InActor, [FLinearColor](API\Runtime\Core\Math\FLinearColor) Color, const [FText](API\Runtime\Core\Internationalization\FText) & Text ) const


className: FConstructSettings

description: The construction settings, which can be used as info when creating new components.

code: struct FConstructSettings

Actor

type: AActor*

description: The UE actor object that we should add components to.

bIsTrainingActor

type: bool

description: Is this an actor used during training? Set to false if it is a testing mode actor.

LabelColor

type: FLinearColor

description: The color of the label text.

LabelText

type: FText

description: The label text, which should be something like "Linear Skinned" or "Ground Truth", basically describing the actor.

TypeID

description: The ID of the actor.


code: [AActor](API\Runtime\Engine\GameFramework\AActor) * GetActor() const


code: virtual FBox GetBoundingBox() const


code: [UTextRenderComponent](API\Runtime\Engine\Components\UTextRenderComponent) * GetLabelComponent() const


code: float GetMeshOffsetFactor() const


code: [UMLDeformerComponent](API\Plugins\MLDeformerFramework\UMLDeformerComponent) * GetMLDeformerComponent() const


code: virtual float GetPlayPosition() const


code: virtual float GetPlaySpeed()


code: [UDebugSkelMeshComponent](API\Editor\UnrealEd\Animation\UDebugSkelMeshComponent) * GetSkeletalMeshComponent() const


code: int32 GetTypeID() const


code: virtual bool HasVisualMesh() const


code: virtual bool IsGroundTruthActor() const


code: bool IsTestActor() const


code: bool IsTrainingActor() const


code: virtual bool IsPlaying() const


code: virtual bool IsVisible() const


code: virtual void Pause ( bool bPaused )


code: void SetMeshOffsetFactor ( float OffsetFactor )


code: void SetMLDeformerComponent ( [UMLDeformerComponent](API\Plugins\MLDeformerFramework\UMLDeformerComponent) * Component )


code: virtual void SetPlayPosition ( float TimeInSeconds, bool bAutoPause )


code: virtual void SetPlaySpeed ( float PlaySpeed )


code: void SetSkeletalMeshComponent ( [UDebugSkelMeshComponent](API\Editor\UnrealEd\Animation\UDebugSkelMeshComponent) * SkelMeshComponent )


description: Main methods you can override.

code: virtual void SetVisibility ( bool bIsVisible )


code: FMLDeformerEditorActor ( const [FConstructSettings](API\Plugins\MLDeformerFrameworkEditor\FMLDeformerEditorActor\FConstructSettings) & Settings )


code: virtual ~FMLDeformerEditorActor()


className: FMLDeformerEditorActor

description: An actor in the ML Deformer asset editor viewport. The UE Actor object itself is created by theFMLDeformerEditorModelclass, after which this editor actor class can create components on it. It also contains some methods to control visibility and playback, among some other helper methods.

code: class FMLDeformerEditorActor

Actor

type: TObjectPtr<AAc...

description: The actual actor pointer.

bIsTrainingActor

description: Is this actor used for training?

LabelComponent

type: TObjectPtr<UTe...

description: The label component, which shows above the actor.

MeshOffsetFactor

type: float

description: The position offset factor of the actor.

MLDeformerComponent

type: TObjectPtr<UML...

description: The ML Deformer component (can be nullptr).

SkeletalMeshComponent

type: TObjectPtr<UDe...

description: The skeletal mesh component (can be nullptr).

description: The ID of the editor actor type.


code: virtual bool AllowWidgetMove()


description: Overlays the editor hud (brushes, drag tools, static mesh vertices, etc*.

code: virtual void DrawHUD ( [FEditorViewportClient](API\Editor\UnrealEd\FEditorViewportClient) * ViewportClient, [FViewport](API\Runtime\Engine\FViewport) * Viewport, const [FSceneView](API\Runtime\Engine\FSceneView) * View, [FCanvas](API\Runtime\Engine\FCanvas) * Canvas )


description: the anim preview scene

code: virtual [IPersonaPreviewScene](API\Editor\Persona\IPersonaPreviewScene) & GetAnimPreviewScene() const


description:
Get a camera target used to focus the viewport on an object when a user presses 'F' (default).
true if the target sphere was filled-in

code: virtual bool GetCameraTarget ( FSphere & OutTarget ) const


description: Function to collect strings from nodes to display in the viewport. Use this rather than DrawHUD when adding general text to the viewport. Display of this assumes that this will be mostly used by skeletal controls.

code: virtual void GetOnScreenDebugInfo ( [TArray](API\Runtime\Core\Containers\TArray)< [FText](API\Runtime\Core\Internationalization\FText) > & OutDebugInfo ) const


code: virtual bool IsCompatibleWith ( FEditorModeID OtherModeID ) const


description: The name of the mode.


description: Draws translucent polygons on brushes and volumes.

code: virtual void Render ( const [FSceneView](API\Runtime\Engine\FSceneView) * View, [FViewport](API\Runtime\Engine\FViewport) * Viewport, [FPrimitiveDrawInterface](API\Runtime\Engine\FPrimitiveDrawInterface) * PDI )


code: void SetEditorToolkit ( [FMLDeformerEditorToolkit](API\Plugins\MLDeformerFrameworkEditor\FMLDeformerEditorToolkit) * InToolkit )


code: virtual bool ShouldDrawWidget() const


code: virtual void Tick ( [FEditorViewportClient](API\Editor\UnrealEd\FEditorViewportClient) * ViewportClient, float DeltaTime )


description: Lets each tool determine if it wants to use the editor widget or not. If the tool doesn't want to use it, it will be fed raw mouse delta information (not snapped or altered in any way).

code: virtual bool UsesTransformWidget() const


code: virtual bool UsesTransformWidget ( [UE::Widget::EWidgetMode](API\Editor\EditorFramework\UE__Widget__EWidgetMode) CheckMode ) const


className: FMLDeformerEditorMode

description: The ML Deformer Persona editor mode. This handles ticking and rendering of the render viewport and camera focus.

code: class FMLDeformerEditorMode : public [IPersonaEditMode](API\Editor\Persona\IPersonaEditMode)

DeformerEditorToolkit

type: FMLDeformerEdit...


description: Add all animated bones to the bone include list.


description: Add all animated curves to the curve include list.


description: Pure virtual that must be overloaded by the inheriting class. Use this method to serialize any UObjects contained that you wish to keep around.

code: virtual void AddReferencedObjects ( [FReferenceCollector](API\Runtime\CoreUObject\UObject\FReferenceCollector) & Collector )


description: Calculate the normals for each vertex, given the triangle data and positions. It computes this by summing up the face normals for each vertex using that face, and normalizing them at the end.

code: void CalcMeshNormals ( [TArrayView](API\Runtime\Core\Containers\TArrayView)< const FVector3f > VertexPositions, [TArrayView](API\Runtime\Core\Containers\TArrayView)< const uint32 > IndexArray, [TArrayView](API\Runtime\Core\Containers\TArrayView)< const int32 > VertexMap, [TArray](API\Runtime\Core\Containers\TArray)< FVector3f > & OutNormals ) const


description:
Calculate the test mode timeline position. This will use the ground truth test data if there is any, and uses the test anim sequence play offset in case no test ground truth has been set yet. So if you have a geometry cache or so specified as test ground truth, it would extract the current time value from that.
The time offset, in seconds, of our test data.

code: virtual double CalcTestTimelinePosition() const


description:
Calculate the current time line position offset, of the currently selected frame. This depends on whether we are in test or training mode.
The time line offset, in seconds.

code: double CalcTimelinePosition() const


description: Change the skeletal mesh on a specific skeletal mesh component. This internally will not only call SkelMeshComponent->SetSkeletalMesh(Mesh), but also will reassign the materials. The reason for this is because if there are material instances set already, the skeletal mesh component will not override them to preserve changes done by the user. This helper function will force these to be updated as well. This was needed in case of Metahumans. Metahumans use a PostProcessAnimBP with a ControlRig node in it, which drives material curves. In order to drive this, material instances are needed instead of regular materials. But as mentioned before, when switching the mesh the code internally will not override the material instances. So we simply have to force this manually, hence this function.

code: static void ChangeSkeletalMeshOnComponent ( [USkeletalMeshComponent](API\Runtime\Engine\Components\USkeletalMeshComponent) * SkelMeshComponent, [USkeletalMesh](API\Runtime\Engine\Engine\USkeletalMesh) * Mesh )


description: Check whether our training data frame number changed. We have a TrainingFrameNumber and a CurrentTrainingFrame. If they don't match it will call OnTrainingDataFrameChanged.

code: void CheckTrainingDataFrameChanged()


description: Clamp the current training frame index to be in a valid range. A valid range would be between 0 and the number of frames in the training data. So if the training data contains 100 frames, so index 0..99, and we set the TrainingFrameNumber member to 500, this method will turn that into 99.


description: Clamp the current test frame index to be in a valid range. A valid range would be between 0 and the number of frames in the test data (anim sequence / ground truth). So if the test data contains 100 frames, so index 0..99, and we set the TestingFrameNumber member to 500, this method will turn that into 99.


description:
Get the current playback position of our training mode. This will use the target mesh if there is any, and uses the anim sequence play offset in case no target mesh has been set yet. So if you have a geometry cache or so specified as target mesh, it would extract the current time value from that.
The time offset, in seconds, of our training data.

code: virtual double CalcTrainingTimelinePosition() const


description: Clears the Persona preview scene. Resetting the preview mesh, preview mesh component etc.

code: virtual void ClearPersonaPreviewScene()


description: Clears the world, which basically means it removes all the editor actors and engine actors from the editor world.

code: virtual void ClearWorld()


description: Clear both the world and preview scene. This calls ClearWorld and ClearPersonaPreviewScene.


description: Compress morph targets into GPU based morph buffers.

code: void CompressEngineMorphTargets ( [FMorphTargetVertexInfoBuffers](API\Runtime\Engine\Rendering\FMorphTargetVertexInfoBuffers) & OutMorphBuffers, const [TArray](API\Runtime\Core\Containers\TArray)< [UMorphTarget](API\Runtime\Engine\Animation\UMorphTarget) * > & MorphTargets, int32 LOD, float MorphErrorTolerance )


description:
Correct floating point errors that can cause issues when sampling animation using step timing.
A corrected frame time, which is equal to FrameTimeForFrameNumber unless a floating point error means the floor is not equal to the FrameNumber

code: static float CorrectedFrameTime ( int32 FrameNumber, float FrameTimeForFrameNumber, [FFrameRate](API\Runtime\Core\Misc\FFrameRate) FrameRate )


description:
Create an actor in the editor viewport. Each actor will have a specific ID and a label that is displayed above it, with a specific color. The ID values are things like: ActorID_Train_Base, ActorID_Train_GroundTruth, ActorID_Test_Base, ActorID_Test_MLDeformed and ActorID_Test_GroundTruth. You can find the ID values of those inside the FMLDeformerEditorActor.h file.
A pointer to the editor actor object that was created.

code: virtual [FMLDeformerEditorActor](API\Plugins\MLDeformerFrameworkEditor\FMLDeformerEditorActor) * CreateEditorActor ( const [FMLDeformerEditorActor::FConstructSettings](API\Plugins\MLDeformerFrameworkEditor\FMLDeformerEditorActor\FConstructSettings) & Settings ) const


description: Create the editor actors. These are the actors that will appear in the viewport of the asset editor. Every actor has some specific ID. The base implementation of certain methods will assume there are specific actors, such as a linear skinned actor, ML Deformed actor, and a ground truth one. You can find the ID values of those inside the FMLDeformerEditorActor.h file. The ID values are things like: ActorID_Train_Base, ActorID_Train_GroundTruth, ActorID_Test_Base, ActorID_Test_MLDeformed and ActorID_Test_GroundTruth. Nothing prevents you from adding more or less actors though.

code: virtual void CreateActors ( const [TSharedRef](API\Runtime\Core\Templates\TSharedRef)< [IPersonaPreviewScene](API\Editor\Persona\IPersonaPreviewScene) > & InPersonaPreviewScene )


description: Generate engine morph targets from a set of deltas.

code: void CreateEngineMorphTargets ( [TArray](API\Runtime\Core\Containers\TArray)< [UMorphTarget](API\Runtime\Engine\Animation\UMorphTarget) * > & OutMorphTargets, const [TArray](API\Runtime\Core\Containers\TArray)< FVector3f > & Deltas, const [FString](API\Runtime\Core\Containers\FString) & NamePrefix, int32 LOD, float DeltaThreshold, bool bIncludeNormals, const [EMLDeformerMaskChannel](API\Plugins\MLDeformerFramework\EMLDeformerMaskChannel) MaskChannel, bool bInvertMaskChannel )


description: Create the heat map assets for this model. This calls CreateHeatMapMaterial and CreateHeatMapDeformerGraph on default.

code: virtual void CreateHeatMapAssets()


description: Create the heat map deformer graph for this model. This updates the HeatMapDeformerGraph member.


description: Create the heat map material for this model. This updates the HeatMapMaterial member.

code: virtual void CreateHeatMapMaterial()


description:
Create the input widget. The default widget that is created contains the bone and curve list. You can inherit from theSMLDeformerInputWidgetbase class and override this method to return your custom widget. This can be useful when you want to add new types of inputs to your model.
A shared pointer to the input widget that will appear in the UI.


description:
Create the vertex delta sampler object. You can create your own sampler in case you use anything else than say a Geometry Cache as ground truth target data. A geometry cache based editor model would create a newFMLDeformerGeomCacheSamplerfor example.
A pointer to the newly created sampler.

code: virtual [FMLDeformerSampler](API\Plugins\MLDeformerFrameworkEditor\FMLDeformerSampler) * CreateSampler() const


description: Create the test ground truth actor. This is the actor typically marked as "Ground Truth" in the editor. It represents the test animation sequence ground truth deformation. So this could contain a geometry cache equivalent to the animation sequence. An editor actor needs to be created by this method.

code: virtual void CreateTestGroundTruthActor ( [UWorld](API\Runtime\Engine\Engine\UWorld) * World )


description: Create the linear skinned test actor. This is the "Linear Skinned" actor you see in testing mode. An editor actor needs to be created by this method.

code: virtual void CreateTestLinearSkinnedActor ( [UWorld](API\Runtime\Engine\Engine\UWorld) * World )


description: Create the test ML Deformed actor. This is the actor you see in test mode marked as "ML Deformed". So this actor will have the ML Deformer component added to it as well. An editor actor needs to be created by this method.

code: virtual void CreateTestMLDeformedActor ( [UWorld](API\Runtime\Engine\Engine\UWorld) * World )


description: Create the training ground truth actor. This is the training target, so the actor that has the complex deformations, for example using a geometry cache. An editor actor needs to be created by this method.

code: virtual void CreateTrainingGroundTruthActor ( [UWorld](API\Runtime\Engine\Engine\UWorld) * World )


description: Create the linear skinned actor that is used as training base. This is the actor you see marked as "Training Base" in the training mode. An editor actor needs to be created by this method. The default implementation will directly set the persona actor and preview mesh and component to this actor.

code: virtual void CreateTrainingLinearSkinnedActor ( const [TSharedRef](API\Runtime\Core\Templates\TSharedRef)< [IPersonaPreviewScene](API\Editor\Persona\IPersonaPreviewScene) > & InPersonaPreviewScene )


description: Delete all editor actors. This does not actually delete the actors in the world. You can call ClearWorld to include that.

code: void DeleteEditorActors()


description: Debug draw specific morph targets using lines and points. This can show the user what deltas are included in which morph target.

code: void DrawMorphTarget ( [FPrimitiveDrawInterface](API\Runtime\Engine\FPrimitiveDrawInterface) * PDI, const [TArray](API\Runtime\Core\Containers\TArray)< FVector3f > & MorphDeltas, float DeltaThreshold, int32 MorphTargetIndex, const FVector & DrawOffset )


description: Find an editor actor with a specific ID, or return nullptr when not found.

code: [FMLDeformerEditorActor](API\Plugins\MLDeformerFrameworkEditor\FMLDeformerEditorActor) * FindEditorActor ( int32 ActorTypeID ) const


description:
Find the ML Deformer component of a given editor actor.
A pointer to the ML Deformer component, if it exists on the actor, otherwise nullptr is returned.

code: [UMLDeformerComponent](API\Plugins\MLDeformerFramework\UMLDeformerComponent) * FindMLDeformerComponent ( int32 ActorID ) const


description: Generate the normals for a given morph target.

code: virtual void GenerateNormalsForMorphTarget ( int32 LOD, [USkeletalMesh](API\Runtime\Engine\Engine\USkeletalMesh) * SkelMesh, int32 MorphTargetIndex, [TArrayView](API\Runtime\Core\Containers\TArrayView)< const FVector3f > Deltas, [TArrayView](API\Runtime\Core\Containers\TArrayView)< const FVector3f > BaseVertexPositions, [TArrayView](API\Runtime\Core\Containers\TArrayView)< FVector3f > BaseNormals, [TArray](API\Runtime\Core\Containers\TArray)< FVector3f > & OutDeltaNormals )


description:
Get the animation sequence, either the test or training one, depending on in which mode we are in. This can return a nullptr if no anim sequence has been setup yet.
A pointer to the test sequence when we are in test mode, or the training anim sequence if we are in training mode.

code: const [UAnimSequence](API\Runtime\Engine\Animation\UAnimSequence) * GetAnimSequence() const


description:
Check whether the vertex counts of the skeletal mesh have changed compared to the one we have trained on.
An error string if there is an error, otherwise an empty text object is returned.


description:
Get the currently desired training frame number. You can call CheckTrainingFrameChanged in order to make the desired frame the actual frame.
The currenty desired training frame number, which might not the the same as the real training frame number.

code: int32 GetCurrentTrainingFrame() const


description: Get a pointer to the ML Deformer editor tookit. Cannot be a nullptr.

code: [FMLDeformerEditorToolkit](API\Plugins\MLDeformerFrameworkEditor\FMLDeformerEditorToolkit) * GetEditor() const


description: Get all the created editor actors.

code: const [TArray](API\Runtime\Core\Containers\TArray)< [FMLDeformerEditorActor](API\Plugins\MLDeformerFrameworkEditor\FMLDeformerEditorActor) * > & GetEditorActors() const


description:
Get the editor's input info object. This is the information the user currently has setup in the UI, so not the input info of the runtime model. The runtime model's input info contains the data inputs the model has been trained on, which can be different than what the user currently has setup in the UI.
A pointer to the editor's input info object.

code: [UMLDeformerInputInfo](API\Plugins\MLDeformerFramework\UMLDeformerInputInfo) * GetEditorInputInfo() const


description: Get the framerate specified by the anim sequence.

code: double GetFrameRate() const


description:
Get the path to the heat map deformer graph asset.
The path to the heat map deformer graph asset.

code: virtual [FString](API\Runtime\Core\Containers\FString) GetHeatMapDeformerGraphPath() const


description:
Get the path to the heat map material asset.
The path to the heat map asset.

code: virtual [FString](API\Runtime\Core\Containers\FString) GetHeatMapMaterialPath() const


description:
Check for incompatible skeletons between the skeletal mesh and anim sequence skeleton.
An error string if there is an error, otherwise an empty text object is returned.

code: [FText](API\Runtime\Core\Internationalization\FText) GetIncompatibleSkeletonErrorText ( [USkeletalMesh](API\Runtime\Engine\Engine\USkeletalMesh) * InSkelMesh, [UAnimSequence](API\Runtime\Engine\Animation\UAnimSequence) * InAnimSeq ) const


description:
Check for errors in the inputs. This basically checks if there are bones or curves to train on. If there aren't any it will give some error.
An error string if there is an error, otherwise an empty text object is returned.


description: Get a pointer to the runtime ML Deformer model. Cannot really be a nullptr.

code: UMLDeformerModel * GetModel() const


description:
Get the number of curves on a specific skeletal mesh.
The number of curves found on the skeletal mesh.

code: int32 GetNumCurvesOnSkeletalMesh ( [USkeletalMesh](API\Runtime\Engine\Engine\USkeletalMesh) * SkelMesh ) const


description:
Get the total number of frames used for training, but limited by the maximum number of training frames we have setup. So if the training data contains 10000 frames, but we set to train on a maximum of 2000 frames, then this will return 2000. If the number of training frames is 10000 but we set the max number of training frames to 1 million, then it will still return only 10000.
The number of frames we should be training on.

code: virtual int32 GetNumFramesForTraining() const


description:
Get the total number of frames in the test anim sequence.
The number of frames.

code: virtual int32 GetNumTestFrames() const


description:
Get the number of training frames. This must not be clamped yet to the maximum training frame limit. It must return the full amount of frames available in your training data. For example this could return the number of frames inside your geometry cache.
The number of frames in the training data.

code: virtual int32 GetNumTrainingFrames() const


description:
Get the text that we should display as overlay on top of the asset editor viewport.
The text, or an empty text object if there is nothing to show.

code: virtual [FText](API\Runtime\Core\Internationalization\FText) GetOverlayText() const


description: Overload this method to report a name for your referencer

code: virtual [FString](API\Runtime\Core\Containers\FString) GetReferencerName() const


description: Get the playback range of the model's data.

code: [TRange](API\Runtime\Core\Math\TRange)< [FFrameNumber](API\Runtime\Core\Misc\FFrameNumber) > GetPlaybackRange() const


description: SetResamplingInputOutputsNeeded


description: Get the sampler we use to calculate vertex deltas when we are in training mdoe and enable deltas.

code: [FMLDeformerSampler](API\Plugins\MLDeformerFrameworkEditor\FMLDeformerSampler) * GetSampler() const


description: Get the current scrub time.

code: float GetScrubTime() const


description:
Check to see if the skeletal mesh has to be reimported because it misses some newly added data. We have added imported mesh information to the Fbx importer. Older assets won't have this info, while this is required to make the ML Deformer work properly.
An error string if there is an error, otherwise an empty text object is returned.


description:
Check whether the vertex count in the target mesh has changed or not. If this is the case you would need to re-train the model.
An error string if there is an error, otherwise an empty text object is returned.


description:
Get the test data frame number for a specific time offset in seconds.
The frame number for this time offset.

code: virtual int32 GetTestFrameAtTime ( double TimeInSeconds ) const


description:
Get the time in seconds, for a given frame in the test data.
The time offset of this frame, in seconds.

code: virtual double GetTestTimeAtFrame ( int32 FrameNumber ) const


description: Get the tick resolution we are displaying at.

code: int32 GetTickResolution() const


description: Get the current scrub position.


description: Get how many ticks there are per frame.

code: int32 GetTicksPerFrame() const


description:
Get the editor actor that defines the timeline play position. In training mode this is the training target actor, while in test mode it is the test ground truth actor.
A pointer to the ground truth actor depending on whether we're in test or training mode.

code: virtual [FMLDeformerEditorActor](API\Plugins\MLDeformerFrameworkEditor\FMLDeformerEditorActor) * GetTimelineEditorActor() const


description: Get the onnx file name of the trained network. This is the filename that your python script will save the onnx file to. On default this will return the following filename: "/YourModel/YourModel.onnx". Where "intermediatedir" is your project's Intermediate folder. And "YourModel" is the name of your runtime model class. So if you have a model class named UFancyModel, on default this method will return "/FancyModel/FancyModel.onnx"

code: virtual [FString](API\Runtime\Core\Containers\FString) GetTrainedNetworkOnnxFile() const


description:
Get the training data frame number for a specific time offset in seconds.
The frame number for this time offset.

code: virtual int32 GetTrainingFrameAtTime ( double TimeInSeconds ) const


description:
Get the time in seconds, for a given frame in the training data.
The time offset of this frame, in seconds.

code: virtual double GetTrainingTimeAtFrame ( int32 FrameNumber ) const


description:
Check whether the vertex map has changed or not. This basically checks whether the vertex order has changed.
An error string if there is an error, otherwise an empty text object is returned.


description: Get the current view range

code: [TRange](API\Runtime\Core\Math\TRange)< double > GetViewRange() const


description:
Get the base actor depending on the currently active mode (train or test mode). The base actor is the linear skinned one.
A pointer to the linear skinned actor in either test or training mode.


description: Get the working range of the model's data.

code: [TRange](API\Runtime\Core\Math\TRange)< double > GetWorkingRange() const


description: Get a pointer to the world that our editor is displaying. Cannot be nullptr.

code: [UWorld](API\Runtime\Engine\Engine\UWorld) * GetWorld() const


description: Handle the timeline changes when our model changes.

code: void HandleModelChanged()


description: Handle the view range being changed.

code: void HandleViewRangeChanged ( [TRange](API\Runtime\Core\Math\TRange)< double > InRange )


description: Handle the timeline changes required when changing the visualization mode, so when we switch between training and testing mode.

code: void HandleVizModeChanged ( [EMLDeformerVizMode](API\Plugins\MLDeformerFramework\EMLDeformerVizMode) Mode )


description: Handle the working range being changed.

code: void HandleWorkingRangeChanged ( [TRange](API\Runtime\Core\Math\TRange)< double > InRange )


description: Initialize the model. This will mainly create the delta sampler, editor input info and some other things.

code: virtual void Init ( const [InitSettings](API\Plugins\MLDeformerFrameworkEditor\FMLDeformerEditorModel\InitSettings) & Settings )


description: Initialize the bone include list of the runtime model to the set of bones that are animated. A bone is seen as animated if its animation data has keyframes that have a different value than the first keyframe. So if the bone's animation data has 1000 keyframes, and they are all the same value, it won't see it as animated.


description: Initialize the curve include list of the runtime model to the set of curves that are animated. A curve is seen as animated if its animation data has keyframes that have a different value than the first keyframe. So if the curve's animation data has 1000 keyframes, and they are all the same value, it won't see it as animated.


description: Initialize the input information, which basically describes what the inputs to the neural network are going to be. This contains things such as bone and curve names. The input info is used during both training and inference time. It is used to see what bone transforms and curve values to feed into the network inputs. Next to bones and curve reference it also stores the vertex counts of the base and target meshes, so we can later do some compatibility checks when applying this ML Deformer onto some character.

code: virtual void InitInputInfo ( [UMLDeformerInputInfo](API\Plugins\MLDeformerFramework\UMLDeformerInputInfo) * InputInfo )


className: InitSettings

description: The editor model initialization settings. This is used in the Init call.

code: struct InitSettings

Model

type: UMLDeformerMode...


description: Is the timeline displaying frames rather than seconds?

code: bool IsDisplayingFrames() const


description:
Perform some basic checks to see if the editor can be ready to train the model. This checks whether there is an anim sequence, target mesh, and skeletal mesh. It can be called inside the UpdateIsReadyForTrainingState method, which can then do additional checks afterwards.
Returns true when at least the basic required inputs have been selected, false if not.


description:
Check whether we are playing an animation or not. This looks at whether we are in training or testing mode. It will look at the correct anim sequence based on this mode. So if you are in training mode and the testing animation is playing, while the training sequence isn't playing, then it returns false. It would in that case only return true when the training anim sequence is playing. The same goes in testing mode, if we are in testing mode it will only return true when the test anim sequence is playing.
Returns true whether the mode specific animation sequence is playing.

code: virtual bool IsPlayingAnim() const


description:
Check whether our anim sequence is playing forward or backward. Just like the IsPlayingAnim method, it is specific to the mode we are in.
Returns true when we are playing the animation forwards, and not backward.

code: virtual bool IsPlayingForward() const


description: Check whether we are ready to train. The Train button in the UI will be enabled or disabled based on this return value.

code: bool IsReadyForTraining() const


description:
Check whether our model is trained or not. This is determined by looking whether the neural network pointer is nullptr or not.
Returns true when the model is trained already, or false if it hasn't been trained yet.

code: virtual bool IsTrained() const


description:
Load the default Optimus deformer graph to use on the skeletal mesh when using this model.
The mesh deformer graph.

code: virtual [UMeshDeformer](API\Runtime\Engine\Animation\UMeshDeformer) * LoadDefaultDeformerGraph() const


description: Load the trained network from an onnx file. The filename of the onnx file is determined by the GetTrainedNetworkOnnxFile method.

code: virtual bool LoadTrainedNetwork() const


description: This is called when training data inputs change. This includes changing things such as the Skeletal Mesh, training anim sequence and target mesh. It will re-initialize the components. For example a skeletal mesh change will update the skeletal mesh component to the new mesh.

code: virtual void OnInputAssetsChanged()


description: Called whenever an engine object is being modified. Use this to set the reinitialize assets flag. For example when a skeletal mesh or anim sequence change (being modified or reimported), we should set the bNeedsAssetReinit member to true, to trigger the actor components and UI etc to be reinitialized. The default implementation of this method will check for changes in the skeletal mesh and training and test anim sequence. If you want to check more things (your target mesh), you need to check for that.

code: virtual void OnObjectModified ( [UObject](API\Runtime\CoreUObject\UObject\UObject) * Object )


description: Executed when the user presses the play button in the timeline. On default this will start playing the anim sequence related to whether we are in training or testing mode.

code: virtual void OnPlayPressed()


description: Executed when a property changes by a change in the UI. This internally calls OnPropertyChanged.

code: void OnPostEditChangeProperty ( [FPropertyChangedEvent](API\Runtime\CoreUObject\UObject\FPropertyChangedEvent) & PropertyChangedEvent )


description: This is executed after the input assets have changed. On default this will refresh the deformer graphs, update the timeline ranges, select the right frames, modify the training button ready state, etc.

code: virtual void OnPostInputAssetChanged()


description: This method is executed after training.

code: virtual void OnPostTraining ( [ETrainingResult](API\Plugins\MLDeformerFrameworkEditor\ETrainingResult) TrainingResult, bool bUsePartiallyTrainedWhenAborted )


description: This is called just before we start the training process. You can use it to backup any specific values that might be modified by the training process. Sometimes you want to restore specific values when the user aborts the training, while the training already modified those values.

code: virtual void OnPreTraining()


description: This is called whenever a property value changes in the UI. The default implementation handles all the shared property changes already. You can overload this and call the base class method inside it, and then handle your own model specific property changes.

code: virtual void OnPropertyChanged ( [FPropertyChangedEvent](API\Runtime\CoreUObject\UObject\FPropertyChangedEvent) & PropertyChangedEvent )


description: This is executed when the timeline has been scrubbed. Sometimes this is also executed without user interaction, but to update the same data when there was scrubbed.

code: virtual void OnTimeSliderScrubPositionChanged ( double NewScrubTime, bool bIsScrubbing )