description: This is executed when the training process got aborted by the user. You can use this method to restore any values you had to backup during OnPreTraining for example.

code: virtual void OnTrainingAborted ( bool bUsePartiallyTrainedData )


description: This is triggered when the training frame is changed by the user. For example when they click the timeline in the editor, or enter a specific frame number. This happens only in training mode.

module: MLDeformerFrameworkEditor


description: Refresh the contents of the input widget. This includes the bone and curve list contents.

code: virtual void RefreshInputWidget()


description: Call the SetupComponent on every ML Deformer component on our editor actors and update the compatibility status of the deformer components. This gets triggered when some input assets change.


description: Render additional (debug) things in the viewport. This will draw the vertex deltas when we are in training mode and aren't playing the training data.

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


description: Sample the vertex deltas between the training base model and target model. This will initialize the sampler if needed and set the sampler space to post-skinning deltas, and then samples them using the sampler. So this will update the internal state of the Sampler member. It will use the current training frame number to sample from. If this number is somehow out of range it will automatically clamp it to be inside a valid range.

code: virtual void SampleDeltas()


description: This makes sure that the deformer graph selected in the visualization settings is not a nullptr. If the current graph hasn't been set, it will assign the default deformer graph to it.


description: Set if frames are displayed.

code: void SetDisplayFrames ( bool bDisplayFrames )


description: Specify whether the heat map material should be enabled or not. This will activate the heat map visualization, or deactivate it.

code: virtual void SetHeatMapMaterialEnabled ( bool bEnabled )


code: void SetInputWidget ( [TSharedPtr](API\Runtime\Core\Templates\TSharedPtr)< [SMLDeformerInputWidget](API\Plugins\MLDeformerFrameworkEditor\SMLDeformerInputWidget) > Widget )


description: Set whether we need to resample inputs or not. This can be used by the training code to determine if we need to resample inputs and outputs, or if some cache can be used. Resampling is generally needed when input assets change, or other specific settings.

code: void SetResamplingInputOutputsNeeded ( bool bNeeded )


description: Set the current scrub position.

code: void SetScrubPosition ( [FFrameTime](API\Runtime\Core\Misc\FFrameTime) NewScrubPostion )


description: Set the current scrub position.

code: void SetScrubPosition ( [FFrameNumber](API\Runtime\Core\Misc\FFrameNumber) NewScrubPostion )


description: Go to a given frame in the test data. Internally this will also call OnTimeSliderScrubPositionChanged, to go to the specific frame.

code: virtual void SetTestFrame ( int32 FrameNumber )


description: Go to a given frame in the training data. Internally this will also call OnTimeSliderScrubPositionChanged, to go to the specific frame.

code: virtual void SetTrainingFrame ( int32 FrameNumber )


description: Set the current view range.

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


description: Tick the editor viewport.

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


description:
Calling the TrainModel function inside will then trigger the Python train method to be called.
The training result.


description: This will call OnInputAssetsChanged first, followed by OnPostInputAssetChanged. It then will update the editor only flags for the assets, and then forces a refresh of the model details panel and optionally also the visualization settings panel.

code: void TriggerInputAssetChanged ( bool bRefreshVizSettings )


description: Update the transforms of all the editor actors. This should apply the mesh offsets to space the actors in the world/viewport.

code: virtual void UpdateActorTransforms()


description: Update the visibility status of the editor actors. This should hide test actors when the editor is in training mode for example, and the other way around.

code: virtual void UpdateActorVisibility()


description: This applies the right mesh deformer to the editor actors that have an ML Deformer component on them. Basically this just ensures that the heat map deformer graph is active when this is enabled. Otherwise the default mesh deformer is used.

code: virtual void UpdateDeformerGraph()


description: Update the editor's input info based on the current UI settings.

code: void UpdateEditorInputInfo()


description: Update the visibility of the labels, as well as their positions. For example labels of invisible actors should be made invisible as well.

code: virtual void UpdateLabels()


description: Update the state that is used to decide whether the Train button in the UI is enabled or not. One criteria could be to check whether we have all required inputs, such as a skeletal mesh, target mesh and anim sequence. This should set the bIsReadyForTraining bool to true when it is ready, or false if not.


description: Invalidate the memory usage, so it gets updated in the UI again.

code: void UpdateMemoryUsage()


description: Update the persona preview scene's actor, skeletal mesh component, mesh and anim asset. These are based on the current visualization mode.

code: virtual void UpdatePreviewScene()


description: Update the timeline related ranges, based on the length of the training or testing data.

code: void UpdateRanges()


description: Update the playback speed of the test data. This will iterate over all the editor actors, check whether they are test mode actors, and if so it will update the play speed. For example a linear skinned mesh will update its skeletal mesh component's play speed, while a geometry cache ground truth actor would update the play speed set on the geometry cache component.

code: virtual void UpdateTestAnimPlaySpeed()


description: Zero all deltas with a length equal to, or smaller than the threshold value.

code: void ZeroDeltasByThreshold ( [TArray](API\Runtime\Core\Containers\TArray)< FVector3f > & Deltas, float Threshold )


description: The destructor, which unregisters the instance of this editor model from the model registry. It also deletes the editor actors and unregisters from the OnPostEditChangeProperty delegate.

code: virtual ~FMLDeformerEditorModel()


className: FMLDeformerEditorModel

description: The base class for the editor side of an UMLDeformerModel. The editor model class handles most of the editor interactions, such as property changes, triggering the training process, creation of the viewport actors, and many more things. In most cases you will want to inherit your own editor model from eitherFMLDeformerGeomCacheEditorModelorFMLDeformerMorphModelEditorModelthough. These classes will already implement a lot of base functionality in case you work with geometry caches as ground truth data etc.

code: class FMLDeformerEditorModel : public [TSharedFromThis< FMLDeformerEditorModel >](API\Runtime\Core\Templates\TSharedFromThis), public [FGCObject](API\Runtime\CoreUObject\UObject\FGCObject)

bDisplayFrames

type: bool

description: Display frame numbers?

bIsReadyForTraining

description: Are we ready for training? The training button in the editor will be enabled or disabled based on this on default.

bNeedsAssetReinit

description: Set to true when on next tick we need to trigger an input assets changed event.

bNeedToResampleInputOutputs

description: Do we need to resample all input/output data?

CurrentTrainingFrame

description: The current training frame.

Editor

type: FMLDeformerEdit...

description: A pointer to the editor toolkit.

EditorActors

type: TArray<FMLDefo...

description: The set of actors that can appear inside the editor viewport.

EditorInputInfo

type: TObjectPtr<UML...

description: The input info as currently setup in the editor.

HeatMapDeformerGraph

type: TObjectPtr<UMe...

description: The heatmap deformer graph.

HeatMapMaterial

type: TObjectPtr<UMa...

description: The heatmap material.

InputObjectModifiedHandle

type: FDelegateHandle

description: The delegate that handles when an object got modified (any object).

InputObjectPropertyChangedHandle

description: The delegate that handles when an object property got changed (any object).

InputWidget

type: TSharedPtr<SML...

description: The inputs widget.

Model

type: TObjectPtr< UML...

description: The runtime model associated with this editor model.

PlaybackRange

type: TRange< double ...

description: The playback range of this model for each timeframe

PostEditPropertyDelegateHandle

description: The delegate handle to the post edit property event.

Sampler

type: FMLDeformerSamp...

description: A pointer to the sampler, which can sample target meshes to calculate deltas.

ScrubPosition

type: FFrameTime

description: The current scrub position.

ViewRange

description: The range we are currently viewing

WorkingRange

description: The working range of this model, encompassing the view range


description:
Get the editor model related to a given runtime model.
A pointer to the editor model object for this specific runtime model instance, or nullptr when not found.

code: [FMLDeformerEditorModel](API\Plugins\MLDeformerFrameworkEditor\FMLDeformerEditorModel) * GetEditorModel ( UMLDeformerModel * Model )


description:
Get the highest priority runtime model class. The model with the highest priority is created by default when creating a new ML Deformer Asset.
Returns the model class of the highest priority model, or nullptr when there are none.

code: [UClass](API\Runtime\CoreUObject\UObject\UClass) * GetHighestPriorityModel() const


description:
Get the highest priority model index into the map. It is the 'index'-th item in the array that you can iterate by doing something like: for (auto& Item : Map).
The highest priority model index.


description:
Get the read-only map that maps instanced models with their editor models.
The map that provides the editor model for a specific runtime model.

code: const [TMap](API\Runtime\Core\Containers\TMap)< UMLDeformerModel *, [FMLDeformerEditorModel](API\Plugins\MLDeformerFrameworkEditor\FMLDeformerEditorModel) * > & GetModelInstances() const


description:
Get the number of instanced models.
The number of instanced models.

code: int32 GetNumInstancedModels() const


description:
Get the number of registered models.
The number of models that have been registered through RegisterEditorModel.

code: int32 GetNumRegisteredModels() const


description:
Get the priority level for a given runtime model type.
The model priority level, or if it cannot be found it will return MIN_int32.

code: int32 GetPriorityForModel ( [UClass](API\Runtime\CoreUObject\UObject\UClass) * ModelType ) const


description: Register a new model. This is needed to make the model appear inside the UI of the editor as selectable model. Call this method in your editor module's StartupModule call.

code: void RegisterEditorModel ( [UClass](API\Runtime\CoreUObject\UObject\UClass) * ModelType, [FOnGetEditorModelInstance](API\Plugins\MLDeformerFrameworkEditor\FOnGetEditorModelInstance) Delegate, int32 ModelPriority )


description:
Get the read-only map of registered models.
The map of registered models that have been registered through RegisterEditorModel.

code: const [TMap](API\Runtime\Core\Containers\TMap)< [UClass](API\Runtime\CoreUObject\UObject\UClass) *, [FOnGetEditorModelInstance](API\Plugins\MLDeformerFrameworkEditor\FOnGetEditorModelInstance) > & GetRegisteredModels() const


description: Unregister the editor model. Call this method in your editor module's ShutdownModule call.

code: void UnregisterEditorModel ( const [UClass](API\Runtime\CoreUObject\UObject\UClass) * ModelType )


code: ~FMLDeformerEditorModelRegistry()


className: FMLDeformerEditorModelRegistry

description: The editor model registry, which keeps track of different types of runtime ML Deformer models and their related editor models. When you create a new ML Deformer model type, you register it to this registry using the RegisterEditorModel method. You typically do this in your editor module's StartupModule method. And you unregister it again in the editor module's ShutdownModule method. Models can have priorities. The one model with the highest priority level will be the model that is created by default when creating a new ML Deformer asset.

code: class FMLDeformerEditorModelRegistry


description:
Get a reference to the ML Deformer model registry. You use this to see what kind of model types ther are, register new models, or create editor models for specific types of runtime models.
A reference to the ML Deformer model registry.


code: const [FMLDeformerEditorModelRegistry](API\Plugins\MLDeformerFrameworkEditor\FMLDeformerEditorModelRegistry) & GetModelRegistry() const


description: Manually assign a new model registry. This can be used in some automated tests where we want to test with different registries, for example an empty one.

code: void SetModelRegistry ( const [FMLDeformerEditorModelRegistry](API\Plugins\MLDeformerFrameworkEditor\FMLDeformerEditorModelRegistry) & Registry )


description: FModuleManager::Get().LoadModuleChecked(TEXT("HTTP"));

code: virtual void StartupModule()


description: Called before the module is unloaded, right before the module object is destroyed. During normal shutdown, this is called in reverse order that modules finishStartupModule(). This means that, as long as a module references dependent modules in it'sStartupModule(), it can safely reference those dependencies inShutdownModule()as well.

code: virtual void ShutdownModule()


className: FMLDeformerEditorModule

description: The ML Deformer editor module. This registers the editor mode and custom property customizations. It also contains the model registry, which you will use to register your custom models to the editor.

code: class FMLDeformerEditorModule : public [IModuleInterface](API\Runtime\Core\Modules\IModuleInterface)


code: static [FMLDeformerEditorStyle](API\Plugins\MLDeformerFrameworkEditor\FMLDeformerEditorStyle) & Get()


code: FMLDeformerEditorStyle()


code: ~FMLDeformerEditorStyle()


className: FMLDeformerEditorStyle

description: The editor style class that describes specific UI style related settings for the ML Deformer editor.

code: class FMLDeformerEditorStyle : public [FSlateStyleSet](API\Runtime\SlateCore\Styling\FSlateStyleSet)


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 )


code: double CalcTimelinePosition() const


code: const [FMLDeformerEditorModel](API\Plugins\MLDeformerFrameworkEditor\FMLDeformerEditorModel) * GetActiveModel() const


description: Returns the localized name of this toolkit type (typically just "editor")

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


code: [IDetailsView](API\Editor\PropertyEditor\IDetailsView) * GetModelDetailsView() const


code: [UMLDeformerAsset](API\Plugins\MLDeformerFramework\UMLDeformerAsset) * GetDeformerAsset() const


code: [IPersonaToolkit](API\Editor\Persona\IPersonaToolkit) * GetPersonaToolkitPointer() const


description: Get the toolkit held by this object

code: virtual [TSharedRef](API\Runtime\Core\Templates\TSharedRef)< [IPersonaToolkit](API\Editor\Persona\IPersonaToolkit) > GetPersonaToolkit() const


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

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


description: Return the stat id to use for this tickable

code: virtual [TStatId](API\Runtime\Core\Stats\TStatId) GetStatId() const


description:
Virtual that can be overloaded by the inheriting class. It is used to determine whether an object will ever be able to tick, and if not, it will not get added to the tickable objects array. If the tickable tick type is Conditional then the virtual IsTickable will be called to determine whether to tick the object on each given frame
true if object will ever want to be ticked, false otherwise.

code: virtual ETickableTickType GetTickableTickType() const


description: Returns the invariant name of this toolkit type

code: virtual [FName](API\Runtime\Core\UObject\FName) GetToolkitFName() const


description: Returns the localized name of this toolkit

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


code: [TSharedPtr](API\Runtime\Core\Templates\TSharedPtr)< [IPersonaViewport](API\Editor\Persona\IPersonaViewport) > GetViewport() const


code: [IDetailsView](API\Editor\PropertyEditor\IDetailsView) * GetVizSettingsDetailsView() const


description: Returns the color and opacity to use for the color that appears behind the tab text for this toolkit's tab in world-centric mode.

code: virtual [FLinearColor](API\Runtime\Core\Math\FLinearColor) GetWorldCentricTabColorScale() const


description: Returns the localize prefix string to use for tab labels in world-centric mode.

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


description: Initialize the asset editor. This will register the application mode, init the preview scene, etc.

code: void InitAssetEditor ( const [EToolkitMode::Type](API\Editor\EditorFramework\Toolkits\EToolkitMode__Type) Mode, const [TSharedPtr](API\Runtime\Core\Templates\TSharedPtr)< [IToolkitHost](API\Editor\EditorFramework\Toolkits\IToolkitHost) > & InitToolkitHost, [UMLDeformerAsset](API\Plugins\MLDeformerFramework\UMLDeformerAsset) * InDeformerAsset )


code: SMLDeformerTimeline * GetTimeSlider() const


code: bool IsTrainButtonEnabled() const


code: bool IsTraining() const


code: void OnTimeSliderScrubPositionChanged ( double NewScrubTime, bool bIsScrubbing )


description: IToolkitinterface

code: virtual void RegisterTabSpawners ( const [TSharedRef](API\Runtime\Core\Templates\TSharedRef)< [FTabManager](API\Runtime\Slate\Framework\Docking\FTabManager) > & TabManager )


code: void SetTimeSlider ( [TSharedPtr](API\Runtime\Core\Templates\TSharedPtr)< SMLDeformerTimeline > InTimeSlider )


code: void SetTimeSliderRange ( double StartTime, double EndTime )


code: void SetVizSettingsDetailsView ( [TSharedPtr](API\Runtime\Core\Templates\TSharedPtr)< [IDetailsView](API\Editor\PropertyEditor\IDetailsView) > InDetailsView )


description:
Switch the editor to a given model type.
Returns true in case we successfully switched model types, or otherwise false is returned.

code: bool SwitchModelType ( [UClass](API\Runtime\CoreUObject\UObject\UClass) * ModelType, bool bForceChange )


description: Switch the editor's visualization mode. This essentially allows you to switch the UI between testing and training modes.

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


description: Pure virtual that must be overloaded by the inheriting class. It will be called from within LevelTick.cpp after ticking all actors or from the rendering thread (depending on bIsRenderingThreadObject)

code: virtual void Tick ( float DeltaTime )


code: bool Train ( bool bSuppressDialogs )


description: Unregister tabs that this toolkit can spawn

code: virtual void UnregisterTabSpawners ( const [TSharedRef](API\Runtime\Core\Templates\TSharedRef)< [FTabManager](API\Runtime\Slate\Framework\Docking\FTabManager) > & TabManager )


code: void UpdateTimeSliderRange()


code: ~FMLDeformerEditorToolkit()


className: FMLDeformerEditorToolkit

description: The ML Deformer asset editor toolkit. This is the editor that opens when you double click an ML Deformer asset.

code: class FMLDeformerEditorToolkit : public [FPersonaAssetEditorToolkit](API\Editor\Persona\FPersonaAssetEditorToolkit), public [IHasPersonaToolkit](API\Editor\Persona\IHasPersonaToolkit), public [FGCObject](API\Runtime\CoreUObject\UObject\FGCObject), public [FEditorUndoClient](API\Editor\UnrealEd\FEditorUndoClient), public [FTickableEditorObject](API\Editor\UnrealEd\FTickableEditorObject)


code: virtual FBox GetBoundingBox() const


code: [UGeometryCacheComponent](API\Plugins\GeometryCache\UGeometryCacheComponent) * GetGeometryCacheComponent() const


code: virtual float GetPlayPosition() const


code: virtual bool HasVisualMesh() const


code: virtual bool IsPlaying() const


code: virtual bool IsVisible() const


code: virtual void Pause ( bool bPaused )


code: void SetGeometryCacheComponent ( [UGeometryCacheComponent](API\Plugins\GeometryCache\UGeometryCacheComponent) * Component )


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


code: virtual void SetPlaySpeed ( float PlaySpeed )


description: Main methods you can override.

code: virtual void SetVisibility ( bool bIsVisible )


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


code: virtual ~FMLDeformerGeomCacheActor()


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: Creates a geometry cache editor actor (FMLDeformerGeomCacheActor) of a specific ID with a specific geometry cache and label. This will add a new editor actor to the list of editor actors.

code: void CreateGeomCacheActor ( [UWorld](API\Runtime\Engine\Engine\UWorld) * World, int32 ActorID, const [FName](API\Runtime\Core\UObject\FName) & Name, [UGeometryCache](API\Plugins\GeometryCache\UGeometryCache) * GeomCache, [FLinearColor](API\Runtime\Core\Math\FLinearColor) LabelColor, [FLinearColor](API\Runtime\Core\Math\FLinearColor) WireframeColor, const [FText](API\Runtime\Core\Internationalization\FText) & LabelText, bool bIsTrainingActor )


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 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 )


code: [UMLDeformerGeomCacheModel](API\Plugins\MLDeformerFramework\UMLDeformerGeomCacheModel) * GetGeomCacheModel() const


code: [FMLDeformerGeomCacheActor](API\Plugins\MLDeformerFrameworkEditor\FMLDeformerGeomCacheActor) * FindGeomCacheEditorActor ( int32 ID ) const


className: FMLDeformerGeomCacheActor

description: An editor actor with a geometry cache component on it. This can for example be used as ground truth viewport actors.

code: class FMLDeformerGeomCacheActor : public [UE::MLDeformer::FMLDeformerEditorActor](API\Plugins\MLDeformerFrameworkEditor\FMLDeformerEditorActor)

GeomCacheComponent

type: TObjectPtr<UGe...

description: The geometry cache component.


description: Helpers.


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: Overload this method to report a name for your referencer

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


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: 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: 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:
Calling the TrainModel function inside will then trigger the Python train method to be called.
The training result.


description: Update the state that is used to decide whether the Train button in the UI is enabled or not. One criteria could be to check whether we have all required inputs, such as a skeletal mesh, target mesh and anim sequence. This should set the bIsReadyForTraining bool to true when it is ready, or false if not.


className: FMLDeformerGeomCacheEditorModel

description: An editor model for the a model derived from theUMLDeformerGeomCacheModelruntime model. This editor model automatically handles sampling of the geometry caches to calculate deltas. It also handles the creation of ground truth models with a geometry cache on them.

code: class FMLDeformerGeomCacheEditorModel : public [UE::MLDeformer::FMLDeformerEditorModel](API\Plugins\MLDeformerFrameworkEditor\FMLDeformerEditorModel)


description: Add warnings to the UI about mesh mapping errors when mapping between geometry caches and a skeletal mesh.

code: void AddGeomCacheMeshMappingWarnings ( [IDetailCategoryBuilder](API\Editor\PropertyEditor\IDetailCategoryBuilder) * InTargetMeshCategoryBuilder, [USkeletalMesh](API\Runtime\Engine\Engine\USkeletalMesh) * SkeletalMesh, [UGeometryCache](API\Plugins\GeometryCache\UGeometryCache) * GeometryCache )


description: Add additional errors related to the training animation sequence.

code: virtual void AddAnimSequenceErrors()


description: Add the target mesh property. For example theFMLDeformerGeomCacheModelDetailsclass will add the geometry cache property here.

code: virtual void AddTargetMesh()


description: Update the class member pointers, which includes the pointer to the model, and its editor model.

code: virtual bool UpdateMemberPointers ( const [TArray](API\Runtime\Core\Containers\TArray)< [TWeakObjectPtr](API\Runtime\Core\UObject\TWeakObjectPtr)< [UObject](API\Runtime\CoreUObject\UObject\UObject) >> & Objects )


className: FMLDeformerGeomCacheModelDetails

description: The detail customization of a geometry cache based model. The model it customizes needs to be derived fromUMLDeformerGeomCacheModel. It will automatically insert some error when the geom cache doesn't match the animation sequence etc. If your model inherits from aUMLDeformerGeomCacheModelthen you can also inherit your model detail customization from thisFMLDeformerGeomCacheModelDetailsclass.

code: class FMLDeformerGeomCacheModelDetails : public [UE::MLDeformer::FMLDeformerModelDetails](API\Plugins\MLDeformerFrameworkEditor\FMLDeformerModelDetails)

GeomCacheEditorModel

type: FMLDeformerGeom...

description: The geometry cache based editor model.

GeomCacheModel

description: The geometry cache based runtime model.


description: Calculate the vertex deltas between the linear skinned mesh (skeletal mesh) and geometry cache. A delta cutoff length can be specified. Deltas with a length longer than this cutoff length will be ignored and set to zero. This can be useful in cases where for some reason due to some mesh errors some deltas are very long. Setting the DeltaCutoffLength to a very large value would essentially disable this filtering and always include all deltas. Typically a good value for the delta cutoff length seems to be 30.

code: void CalculateVertexDeltas ( const [TArray](API\Runtime\Core\Containers\TArray)< FVector3f > & SkinnedPositions, float DeltaCutoffLength, [TArray](API\Runtime\Core\Containers\TArray)< float > & OutVertexDeltas )


description:
Get the array of mesh names that we cannot do any sampling for. The reason for this can be that the sampler cannot find a matching mesh in the skeletal mesh for specific geometry cache tracks. For example if there is some geometry cache track that is named "Head", but there is no such mesh inside the skeletal mesh, then the returned array of names will include a string with the value "Head".
An array of geometry cache track names for which no mesh could be found inside the SkeletalMesh / linear skinned actor.

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


code: [UGeometryCacheComponent](API\Plugins\GeometryCache\UGeometryCacheComponent) * GetGeometryCacheComponent() const


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


description: Get the time in seconds, at a given frame index.

code: virtual float GetTimeAtFrame ( int32 InAnimFrameIndex ) const


description:
Executed when we need a pointer to the geometry cache object that we want to sample from.
A reference to the delegate.


description: Register the target mesh components.

code: virtual void RegisterTargetComponents()


description: Call this every time the frame changes. This will update all buffer contents.

code: virtual void Sample ( int32 AnimFrameIndex )


className: FMLDeformerGeomCacheSampler

description: The input data sampler, which is used to sample vertex positions from geometry caches. It can then also calculate deltas between the sampled skeletal mesh data and geometry cache data.

code: class FMLDeformerGeomCacheSampler : public [UE::MLDeformer::FMLDeformerSampler](API\Plugins\MLDeformerFrameworkEditor\FMLDeformerSampler)

FailedImportedMeshNames

type: TArray<FString...

description: Geom cache track names for which no mesh can be found inside the skeletal mesh.

GeomCacheMeshDatas

type: TArray<FGeomet...

description: The geometry cache mesh data reusable buffers. One for each MeshMapping.

GeometryCacheComponent

description: The geometry cache component used to sample the geometry cache.

GetGeometryCacheEvent

type: FMLDeformerGetG...

description: The function that grabs the geometry cache.

MeshMappings

description: Maps skeletal meshes imported meshes to geometry tracks.

VertexCountMisMatchNames

description: Imported mesh names in the skeletal mesh for which the geometry track had a different vertex count.


description: Add the ground truth test sequence property.

code: virtual void AddGroundTruth()


description: Update the class member pointers, which includes the pointer to the model, its editor model, and the viz settings.


className: FMLDeformerGeomCacheVizSettingsDetails

description: The visualization settings detail customization for a geometry cache based model. A geometry cache based model is one inherited from theUMLDeformerGeomCacheModelbase class. You can inherit your own model detail customization from this class if you also inherited your model from theUMLDeformerGeomCacheModelclass.

GeomCacheModel

description: The geometry cache based runtime model pointer.

GeomCacheVizSettings

description: A pointer to the geom cache based visualization settings.


className: FMLDeformerGetGeomCacheEvent

code: typedef TBaseDelegate_NoParams< [UGeometryCache](API\Plugins\GeometryCache\UGeometryCache) * > FMLDeformerGetGeomCacheEvent


description: Pure virtual to override; describe and instantiate the commands in here by using the UI COMMAND macro.

code: virtual void RegisterCommands()


code: FMLDeformerInputBonesWidgetCommands()


className: FMLDeformerInputBonesWidgetCommands

code: class FMLDeformerInputBonesWidgetCommands : public [TCommands< FMLDeformerInputBonesWidgetCommands >](API\Runtime\Slate\Framework\Commands\TCommands)

AddAnimatedBones

type: TSharedPtr<FUI...


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)< [FMLDeformerInputBoneTreeElement](API\Plugins\MLDeformerFrameworkEditor\FMLDeformerInputBoneTreeElement) > InTreeElement, [TSharedPtr](API\Runtime\Core\Templates\TSharedPtr)< [SMLDeformerInputBoneTreeWidget](API\Plugins\MLDeformerFrameworkEditor\SMLDeformerInputBoneTreeWidget) > InTreeWidget )


className: FMLDeformerInputBoneTreeElement

code: class FMLDeformerInputBoneTreeElement : public [TSharedFromThis< FMLDeformerInputBoneTreeElement >](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)< [FMLDeformerInputCurveListElement](API\Plugins\MLDeformerFrameworkEditor\FMLDeformerInputCurveListElement) > InTreeElement, [TSharedPtr](API\Runtime\Core\Templates\TSharedPtr)< [SMLDeformerInputCurveListWidget](API\Plugins\MLDeformerFrameworkEditor\SMLDeformerInputCurveListWidget) > InTreeWidget )


className: FMLDeformerInputCurveListElement

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


code: FMLDeformerInputCurvesWidgetCommands()


description: Add additional errors related to the training animation sequence.

code: virtual void AddAnimSequenceErrors()


description: Add additional errors related to the base mesh.

code: virtual void AddBaseMeshErrors()


description: Add additional errors related to bone inputs.

code: virtual void AddBoneInputErrors()


description: Add additional errors related to curve inputs.

code: virtual void AddCurveInputErrors()


description: Add the target mesh property. For example theFMLDeformerGeomCacheModelDetailsclass will add the geometry cache property here.

code: virtual void AddTargetMesh()


description: Add training input flags, which basically are things like the check boxes that specify whether bones or curves (or both) should be included.

code: virtual void AddTrainingInputFlags()


description: Add additional training input filters. Filters are things like a list of bones, or curves.

code: virtual void AddTrainingInputFilters()


description: Add additional training input errors.

code: virtual void AddTrainingInputErrors()


className: FMLDeformerInputCurvesWidgetCommands

code: class FMLDeformerInputCurvesWidgetCommands : public [TCommands< FMLDeformerInputCurvesWidgetCommands >](API\Runtime\Slate\Framework\Commands\TCommands)


description: Add training settings errors.


description: Create the categories that we can add properties to. This will update the category member pointers.

code: virtual void CreateCategories()


description: Called when details should be customized

code: virtual void CustomizeDetails ( [IDetailLayoutBuilder](API\Editor\PropertyEditor\IDetailLayoutBuilder) & DetailBuilder )


description: The filter that only shows anim sequences that are compatible with the given skeleton.

code: bool FilterAnimSequences ( const [FAssetData](API\Runtime\CoreUObject\AssetRegistry\FAssetData) & AssetData, [USkeleton](API\Runtime\Engine\Animation\USkeleton) * Skeleton )


description: Is the "include bones" checkbox visible?

code: virtual bool IsBonesFlagVisible() const


description: Is the "include curves" checkbox visible?

code: virtual bool IsCurvesFlagVisible() const


description: Executed when we press the Animated Bones Only button.


description: Executed when we press the Animated Curves Only button.


description: Update the class member pointers, which includes the pointer to the model, and its editor model.

code: virtual bool UpdateMemberPointers ( const [TArray](API\Runtime\Core\Containers\TArray)< [TWeakObjectPtr](API\Runtime\Core\UObject\TWeakObjectPtr)< [UObject](API\Runtime\CoreUObject\UObject\UObject) >> & Objects )


className: FMLDeformerModelDetails

description: The ML Deformer model detail customization base class. This adds the shared properties, inserts error messages, creates some groups, etc. Model detail customizations should all inherit from this class. If you use a geometry cache based model however, you will likely inherit from other classes such asFMLDeformerGeomCacheModelDetailsorFMLDeformerMorphModelDetails. Those classes are also inherited from this one though.

code: class FMLDeformerModelDetails : public [IDetailCustomization](API\Editor\PropertyEditor\IDetailCustomization)

BaseMeshCategoryBuilder

type: IDetailCategory...

description: The category related to the base mesh.

DetailLayoutBuilder

type: IDetailLayoutBu...

description: Associated detail layout builder.

EditorModel

type: FMLDeformerEdit...

description: A pointer to the editor model of the runtime model.

InputOutputCategoryBuilder

description: The category related to the inputs and outputs.

Model

description: A pointer to the model we are customizing details for.

TargetMeshCategoryBuilder

description: The category related to the target mesh.

TrainingSettingsCategoryBuilder

description: The training settings category. You most likely add your model properties to this.


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: static [TSharedRef](API\Runtime\Core\Templates\TSharedRef)< [IPropertyTypeCustomization](API\Editor\PropertyEditor\IPropertyTypeCustomization) > MakeInstance()


description: FMLDeformerMorphModelQualityLevel

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


description: Add bone influences to the mask. Every vertex that is linked to the specified bone will write its skinning weight to the mask buffer.

code: void ApplyBoneToMask ( int32 SkeletonBoneIndex, [TArrayView](API\Runtime\Core\Containers\TArrayView)< float > MaskBuffer )


className: FMLDeformerMorphModelDetails

description: The detail customization for models inherited from theUMLDeformerMorphModelclass. You can inherit the detail customization for your own model from this class if your model inherited from theUMLDeformerMorphModelclass.

MorphModel

type: TObjectPtr<UML...

description: A pointer to the morph model. This is updated when UpdateMemberPointers is called.

MorphModelEditorModel

type: FMLDeformerMorp...

description: A pointer to the editor model for the morph model.

MorphTargetCategoryBuilder

description: The morph settings category.


description: Add any required bone to the mask. For example when we have finger bones that are not included in the bone inputs to the ML model, we still have to add those to the mask of the closest bone that is included (likely the hand or lower arm). With closest we mean the closest up the hierarchy chain (traversing to the parent and the parent's parent, etc). We call those virtual parents in this context.

code: void AddRequiredBones ( const [FReferenceSkeleton](API\Runtime\Engine\FReferenceSkeleton) & RefSkel, int32 SkeletonBoneIndex, const [TArray](API\Runtime\Core\Containers\TArray)< int32 > & VirtualParentTable, [TArray](API\Runtime\Core\Containers\TArray)< int32 > & OutBonesAdded )


description:
Build a mapping table that tells us the virtual parent for each bone in the ref skeleton. For example if we have finger bones that are not in the ML Deformer inputs, we try to find the closest parent bone in the hierarchy. So for the fingers this might be the hand bone. The vertices touched by the fingers will then be added to the mask of the hand bone. The table works like this: "Table[FingerBoneIndex] == HandBoneIndex". When the bone is inside the bone input list of the ML Deformer, it will just return itself, and not its parent bone. Basically it just tells us to which bone's mask to write to for this specific bone.
Returns a mapping array with the length of number of bones in the reference skeleton. Each array element contains a bone index inside the reference skeleton as well.

code: [TArray](API\Runtime\Core\Containers\TArray)< int32 > BuildVirtualParentTable ( const [FReferenceSkeleton](API\Runtime\Engine\FReferenceSkeleton) & RefSkel, const [TArray](API\Runtime\Core\Containers\TArray)< [FName](API\Runtime\Core\UObject\FName) > & IncludedBoneNames ) const


description:
Calculate the global mask weight for a specific render vertex, using a color buffer and specified mask channel settings.
Returns the mask weight. A value of 1.0 is returned when the mask channel is set to disable the mask. The return value is always between 0 and 1.

code: float CalcGlobalMaskWeight ( int32 RenderVertexIndex, const [FColorVertexBuffer](API\Runtime\Engine\Rendering\FColorVertexBuffer) & ColorBuffer, [EMLDeformerMaskChannel](API\Plugins\MLDeformerFramework\EMLDeformerMaskChannel) MaskChannel, bool bInvertMaskChannel ) const


description: Calculate the normals for a given morph target. This method is deprecated, please use the one that takes more parameters instead.

code: virtual void CalcMorphTargetNormals ( 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: Calculate the delta normals for a given morph target.

code: virtual void CalcMorphTargetNormals ( int32 LOD, const [USkeletalMesh](API\Runtime\Engine\Engine\USkeletalMesh) * SkelMesh, int32 MorphTargetIndex, const [TArrayView](API\Runtime\Core\Containers\TArrayView)< const FVector3f > Deltas, const [TArrayView](API\Runtime\Core\Containers\TArrayView)< const FVector3f > BaseVertexPositions, const [TArrayView](API\Runtime\Core\Containers\TArrayView)< const FVector3f > BaseNormals, const [TArrayView](API\Runtime\Core\Containers\TArrayView)< const int32 > ImportedVertexToRenderVertexMapping, const [FColorVertexBuffer](API\Runtime\Engine\Rendering\FColorVertexBuffer) & ColorBuffer, [EMLDeformerMaskChannel](API\Plugins\MLDeformerFramework\EMLDeformerMaskChannel) MaskChannel, bool bInvertGlobalMaskChannel, [TArray](API\Runtime\Core\Containers\TArray)< FVector3f > & OutDeltaNormals )


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 CalcVertexNormals ( [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: Compress morph targets into GPU based morph buffers.

code: void CompressMorphTargets ( [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: Clamp the current morph target number inside the visualization settings to a valid range. This won't let the number of the morph target that we are visualizing go above the total number of morph targets.

code: void ClampMorphTargetNumber()


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

code: void CreateMorphTargets ( [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: Debug draw specific morph targets using lines and points. This can show the user what deltas are included in which morph target.

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


description: BuildVirtualParentTable.

code: int32 FindVirtualParentIndex ( const [FReferenceSkeleton](API\Runtime\Engine\FReferenceSkeleton) & RefSkel, int32 BoneIndex, const [TArray](API\Runtime\Core\Containers\TArray)< [FName](API\Runtime\Core\UObject\FName) > & IncludedBoneNames ) const


description: Fill the mask buffer for a given item with a specific value. An item can be a bone, curve, bone group or curve group. The number of values written is always Model->GetNumBaseMeshVerts().

code: void FillMaskValues ( [TArrayView](API\Runtime\Core\Containers\TArrayView)< float > ItemMaskBuffer, float Value ) 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 mask buffer for a given morph target.

code: virtual const [TArrayView](API\Runtime\Core\Containers\TArrayView)< const float > GetMaskForMorphTarget ( int32 MorphTargetIndex ) const


description: Helpers.

code: [UMLDeformerMorphModel](API\Plugins\MLDeformerFramework\UMLDeformerMorphModel) * GetMorphModel() const


description: Helpers.


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

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


description: Initialize a set of engine morph targets and compress them to GPU friendly buffers. These morph targets are initialized from a set of deltas. Each morph target needs to have Model->GetNumBaseVerts() number of deltas. All deltas are concatenated in one big array. So all deltas of all vertices for the second morph target are appended to the deltas for the first morph target, etc. In other words, the layout is: [morph0_deltas][morph1_deltas][morph2_deltas][...].

code: virtual void InitEngineMorphTargets ( const [TArray](API\Runtime\Core\Containers\TArray)< FVector3f > & Deltas )


description:
Check if input masking is supported in this model. This allows bones and curves to specify a given mask. These masks can be used during training. On default this is disabled.
Returns true if supported, or false otherwise.

code: virtual bool IsInputMaskingSupported() const


description: This method is executed after training.

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


description: We need to implement this static MakeInstance method.

code: static [FMLDeformerEditorModel](API\Plugins\MLDeformerFrameworkEditor\FMLDeformerEditorModel) * MakeInstance()


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:
Process and filter a vertex delta position and normal and apply scaling to it. The scaling of these deltas is based on a given morph mask weight, a global mask weight, and a delta zero threshold, which filters out small deltas entirely.
Returns true if this vertex should be included in the morph target, or false if it has been filtered out based on the provided delta threshold.

code: bool ProcessVertexDelta ( FVector3f & OutScaledDelta, FVector3f & OutScaledDeltaNormal, const FVector3f RawDelta, const FVector3f RawDeltaNormal, float DeltaThreshold, float MorphMaskWeight, float GlobalMaskWeight ) const


description: Recursively add bone masks for this bone and its parents. The number of parents is controlled by the MaxHierarchyDepth.

code: void RecursiveAddBoneToMaskUpwards ( const [FReferenceSkeleton](API\Runtime\Engine\FReferenceSkeleton) & RefSkel, int32 SkeletonBoneIndex, int32 MaxHierarchyDepth, const [TArray](API\Runtime\Core\Containers\TArray)< int32 > & VirtualParentTable, [TArray](API\Runtime\Core\Containers\TArray)< int32 > & OutBonesAdded, int32 CurHierarchyDepth )


description: Recursively add bone masks for this bone and its children. The number of child steps down the hierarchy is controlled by the MaxHierarchyDepth.

code: void RecursiveAddBoneToMaskDownwards ( const [FReferenceSkeleton](API\Runtime\Engine\FReferenceSkeleton) & RefSkel, int32 SkeletonBoneIndex, int32 MaxHierarchyDepth, const [TArray](API\Runtime\Core\Containers\TArray)< int32 > & VirtualParentTable, [TArray](API\Runtime\Core\Containers\TArray)< int32 > & OutBonesAdded, int32 CurHierarchyDepth )


description: Render additional (debug) things in the viewport. This will draw the vertex deltas when we are in training mode and aren't playing the training data.

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


description: Update the morph target error values. This assigns an error value for each morph target. Internally this calls SetMorphTargetsErrorOrder to set the actual order and errors.

code: void UpdateMorphErrorValues ( [TArrayView](API\Runtime\Core\Containers\TArrayView)< [UMorphTarget](API\Runtime\Engine\Animation\UMorphTarget) * > MorphTargets )


description: Zero all deltas with a length equal to, or smaller than the threshold value.

code: void ZeroDeltasByLengthThreshold ( [TArray](API\Runtime\Core\Containers\TArray)< FVector3f > & Deltas, float Threshold )


className: FMLDeformerMorphModelEditorModel

description: The editor model related to the runtimeUMLDeformerMorphModelclass, or models inherited from that.

InputItemMaskBufferBackup

type: TArray< float >

description: The backup of the input item mask buffer. This contains all the bone and bone group masks.

MorphTargetDeltasBackup

type: TArray< FVector...

description: The entire set of morph target deltas, 3 per vertex, for each morph target, as one flattened buffer.


description: Add any additional settings.

code: virtual void AddAdditionalSettings()


description: Add any statistics.

code: virtual void AddStatistics()


description: Is the morph target visualization option/checkbox enabled?

code: bool IsMorphTargetsEnabled() const


description: Update the class member pointers, which includes the pointer to the model, its editor model, and the viz settings.

code: virtual bool UpdateMemberPointers ( const [TArray](API\Runtime\Core\Containers\TArray)< [TWeakObjectPtr](API\Runtime\Core\UObject\TWeakObjectPtr)< [UObject](API\Runtime\CoreUObject\UObject\UObject) >> & Objects )


className: FMLDeformerMorphModelVizSettingsDetails

description: The visualization settings for models inherited from theUMLDeformerMorphModelclass.

MorphModel

description: A pointer to the runtime morph model. This is updated when UpdateMemberPointers is called.

MorphModelVizSettings

description: A pointer to the morph model visualization settings.


description: Calculate the inverse skinning transform, which is used to convert from post-skinning to pre-skinning space.

code: FMatrix44f CalcInverseSkinningTransform ( int32 VertexIndex, const [FSkeletalMeshLODRenderData](API\Runtime\Engine\Rendering\FSkeletalMeshLODRenderData) & SkelMeshLODData, const [FSkinWeightVertexBuffer](API\Runtime\Engine\Rendering\FSkinWeightVertexBuffer) & SkinWeightBuffer ) const


description: Calculate the memory usage of the sampler.


description: Create the actors used for sampling. This creates two actors, one for the base skeletal mesh and one for the target mesh.

code: virtual void CreateActors()


description: Extract the skinned vertex positions, of the skeletal mesh.

code: void ExtractSkinnedPositions ( int32 LODIndex, [TArray](API\Runtime\Core\Containers\TArray)< FMatrix44f > & InBoneMatrices, [TArray](API\Runtime\Core\Containers\TArray)< FVector3f > & TempPositions, [TArray](API\Runtime\Core\Containers\TArray)< FVector3f > & OutPositions ) const


description: Extract the unskinned vertex positions, of the skeletal mesh.

code: void ExtractUnskinnedPositions ( int32 LODIndex, [TArray](API\Runtime\Core\Containers\TArray)< FVector3f > & OutPositions ) const


description: Create a new actor with a specific name, in a specified world.

code: [AActor](API\Runtime\Engine\GameFramework\AActor) * CreateNewActor ( [UWorld](API\Runtime\Engine\Engine\UWorld) * InWorld, const [FName](API\Runtime\Core\UObject\FName) & Name ) const


description:
Get the current bone rotations that we can feed to a neural network. The number of floats in the buffer equals to NumBones * 6. The six floats represent two columns of the 3x3 rotation matrix of the bone.
The arrray of floats that we can pass to the neural network as inputs.

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


description: Get the float values for the curves. One float per curve.

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


description: Get the number of bones.

code: int32 GetNumBones() const


description: Get the number of floats per curve.

code: int32 GetNumFloatsPerCurve() const


description: Get the number of imported vertices.

code: int32 GetNumImportedVertices() const


description: Get the skinned vertex positions of the skeletal mesh.

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


description: Get the unskinned vertex positions of the skeletal mesh.

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


description: Get the time in seconds, at a given frame index.

code: virtual float GetTimeAtFrame ( int32 InAnimFrameIndex ) const


description: Get the calculated vertex deltas. The space they will be in depends on the setup vertex deltas space.

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


description: Get the space in which we will calculate the vertex deltas.


description: Call Init whenever assets or other relevant settings change.

code: virtual void Init ( [FMLDeformerEditorModel](API\Plugins\MLDeformerFrameworkEditor\FMLDeformerEditorModel) * Model )


description: Have we already initialized this sampler? Is it ready for sampling?

code: bool IsInitialized() const


description: Set the space in which we should calculate the vertex deltas.

code: void SetVertexDeltaSpace ( [EVertexDeltaSpace](API\Plugins\MLDeformerFrameworkEditor\UE__MLDeformer__EVertexDeltaSpac-) DeltaSpace )


description: Register the target mesh components.

code: virtual void RegisterTargetComponents()


description: Call this every time the frame changes. This will update all buffer contents.

code: virtual void Sample ( int32 AnimFrameIndex )


description: Set the number of floats used per curve. Values larger than 1 will cause padding with zeros. The first float is always the value. Floats that come after that will contain zeros on default.

code: void SetNumFloatsPerCurve ( int32 NumFloats )


description: Update the bone rotation buffers.

code: void UpdateBoneRotations()


description: Update the curve value buffers.

code: void UpdateCurveValues()


description: Update the skeletal mesh component's play position, and refresh its bone transforms internally.

code: void UpdateSkeletalMeshComponent()


description: Update the skinned vertex positions.

code: void UpdateSkinnedPositions()


code: virtual ~FMLDeformerSampler()


className: FMLDeformerSampler

description: The input data sampler. This class can sample bone rotations, curve values and vertex deltas. It does this by creating two temp actors, one with skeletal mesh component and one with geom cache component.

code: class FMLDeformerSampler

AnimFrameIndex

description: The animation frame we sampled the deltas for.

BoneMatrices

type: TArray< FMatrix...

description: The sampled bone matrices.

BoneRotations

description: The bone rotation floats.

CurveValues

description: A float for each Skeleton animation curve.

EditorModel

description: The vertex delta editor model used to sample.

Model

type: TObjectPtr< UML...

description: The vertex delta model associated with this sampler.

NumFloatsPerCurve

description: The number of floats per curve value.

NumImportedVertices

description: The number of imported vertices of the skeletal mesh and geometry cache. This will be 8 for a cube.

SampleTime

type: float

description: The current sample time, in seconds.

SkeletalMeshComponent

type: TObjectPtr<UDe...

description: The skeletal mesh component used to sample skinned positions.

SkelMeshActor

type: TObjectPtr<AAc...

description: The skeletal mesh actor used to sample the skinned vertex positions.

SkinnedVertexPositions

description: The skinned vertex positions.

TargetMeshActor

description: The actor used for the target mesh.

TempVertexPositions

description: A temp array to store vertex positions in.

UnskinnedVertexPositions

description: The unskinned vertex positions.

VertexDeltas

description: The vertex deltas as float buffer.

VertexDeltaSpace

type: EVertexDeltaSpa...

description: The vertex delta space (pre or post skinning) used when calculating the deltas.


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


code: bool IsValid() const


code: [FMLDeformerEditorToolkit](API\Plugins\MLDeformerFrameworkEditor\FMLDeformerEditorToolkit) * operator= ( const [FMLDeformerScopedEditor](API\Plugins\MLDeformerFrameworkEditor\FMLDeformerScopedEditor) & )


code: [FMLDeformerEditorToolkit](API\Plugins\MLDeformerFrameworkEditor\FMLDeformerEditorToolkit) * operator->() const


code: [FMLDeformerEditorToolkit](API\Plugins\MLDeformerFrameworkEditor\FMLDeformerEditorToolkit) * operator= ( const [FMLDeformerScopedEditor](API\Plugins\MLDeformerFrameworkEditor\FMLDeformerScopedEditor) && )


code: void SetCloseEditor ( bool bCloseOnDestroy )


code: FMLDeformerScopedEditor()


code: FMLDeformerScopedEditor ( [FMLDeformerScopedEditor](API\Plugins\MLDeformerFrameworkEditor\FMLDeformerScopedEditor) && )


code: FMLDeformerScopedEditor ( const [FMLDeformerScopedEditor](API\Plugins\MLDeformerFrameworkEditor\FMLDeformerScopedEditor) & )


code: FMLDeformerScopedEditor ( [FMLDeformerEditorToolkit](API\Plugins\MLDeformerFrameworkEditor\FMLDeformerEditorToolkit) * InEditor )


code: FMLDeformerScopedEditor ( [UMLDeformerAsset](API\Plugins\MLDeformerFramework\UMLDeformerAsset) * Asset )


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


code: ~FMLDeformerScopedEditor()


className: FMLDeformerScopedEditor

description: A scoped ML Deformer editor, which auto closes the window on destruction.

code: class FMLDeformerScopedEditor


description:
Open the asset editor for a given ML Deformer asset. This will log an error when something doesn't succeed.
A pointer to the editor toolkit, or nullptr when it didn't succeed.

code: static [FMLDeformerEditorToolkit](API\Plugins\MLDeformerFrameworkEditor\FMLDeformerEditorToolkit) * OpenAssetEditor ( [UMLDeformerAsset](API\Plugins\MLDeformerFramework\UMLDeformerAsset) * Asset )


description:
Open the asset editor for a given ML Deformer asset, by its package name. This will log an error when something doesn't succeed. Examples of failure cases are when the package cannot be loaded, or if it doesn't contain a valid ML Deformer asset.
A pointer to the editor toolkit, or nullptr when it didn't succeed.

code: static [FMLDeformerEditorToolkit](API\Plugins\MLDeformerFrameworkEditor\FMLDeformerEditorToolkit) * OpenAssetEditor ( const [FString](API\Runtime\Core\Containers\FString) & AssetName )


description:
Post an edit change event for a given property in the Model class.
Returns true if successfully emitted the PostEditChangeProperty call, or false if the property cannot be found.

code: static bool PostModelPropertyChanged ( UMLDeformerModel * Model, const [FName](API\Runtime\Core\UObject\FName) PropertyName )


className: FMLDeformerTestHelpers

description: Some helper functions for testing ML Deformer related things.

code: class FMLDeformerTestHelpers


description: Add any additional settings.

code: virtual void AddAdditionalSettings()


description: Add some error related to the deformer graph.

code: virtual void AddDeformerGraphErrors()


description: Add the ground truth test sequence property.

code: virtual void AddGroundTruth()


description: Add any statistics.

code: virtual void AddStatistics()


code: void AddStatsPerfRow ( [IDetailGroup](API\Editor\PropertyEditor\IDetailGroup) & Group, const [FText](API\Runtime\Core\Internationalization\FText) & Label, const [FMLDeformerEditorModel](API\Plugins\MLDeformerFrameworkEditor\FMLDeformerEditorModel) * InEditorModel, const [FNumberFormattingOptions](API\Runtime\Core\Internationalization\FNumberFormattingOptions) & Format, bool bHighlight, [TFunctionRef](API\Runtime\Core\GenericPlatform\TFunctionRef)< int32(const [FMLDeformerEditorModel](API\Plugins\MLDeformerFrameworkEditor\FMLDeformerEditorModel) *)> GetCyclesFunction )


description: Add some error message related to the test animation sequence.

code: virtual void AddTestSequenceErrors()


description: Create the categories to which we can add properties. Update the member category pointers to those.

code: virtual void CreateCategories()


description: Called when details should be customized

code: virtual void CustomizeDetails ( [IDetailLayoutBuilder](API\Editor\PropertyEditor\IDetailLayoutBuilder) & DetailBuilder )


description: The filter that only shows anim sequences that are compatible with the given skeleton.

code: bool FilterAnimSequences ( const [FAssetData](API\Runtime\CoreUObject\AssetRegistry\FAssetData) & AssetData, [USkeleton](API\Runtime\Engine\Animation\USkeleton) * Skeleton )


description: Get a pointer to the detail layout builder.

code: [IDetailLayoutBuilder](API\Editor\PropertyEditor\IDetailLayoutBuilder) * GetDetailLayoutBuilder() const


description: Check if the reset to default button next to the deformer graph property should be visible or not.

code: bool IsResetToDefaultDeformerGraphVisible ( [TSharedPtr](API\Runtime\Core\Templates\TSharedPtr)< [IPropertyHandle](API\Editor\PropertyEditor\IPropertyHandle) > PropertyHandle )


description: When we click the reset to default button next to the deformer graph property.

code: void OnResetToDefaultDeformerGraph ( [TSharedPtr](API\Runtime\Core\Templates\TSharedPtr)< [IPropertyHandle](API\Editor\PropertyEditor\IPropertyHandle) > PropertyHandle )


description: Update the class member pointers, which includes the pointer to the model, its editor model, and the viz settings.

code: virtual bool UpdateMemberPointers ( const [TArray](API\Runtime\Core\Containers\TArray)< [TWeakObjectPtr](API\Runtime\Core\UObject\TWeakObjectPtr)< [UObject](API\Runtime\CoreUObject\UObject\UObject) >> & Objects )


className: FMLDeformerVizSettingsDetails

description: The detail customization base class for anyUMLDeformerVizSettingsinherited object. This automatically adds the settings of theUMLDeformerVizSettingsclass to the UI and creates some groups, inserts error messages when needed, etc.

code: class FMLDeformerVizSettingsDetails : public [IDetailCustomization](API\Editor\PropertyEditor\IDetailCustomization)

DetailLayoutBuilder

description: Associated detail layout builder.

EditorModel

description: The editor model of the runtime model.

LiveSettingsCategory

description: A pointer to the live settings category.

MemUsageMetricFormat

type: FNumberFormatti...

description: Number format used for memory usage numbers.

Model

description: The ML deformer model that these visualization settings belong to.

PerformanceMetricFormat

description: Number format used for performance numbers.

SharedCategoryBuilder

description: A pointer to the shared settings category.

StatsCategoryBuilder

description: A pointer to the statistics category.

StatsGPUMemUsageGroup

type: IDetailGroup&#...

description: GPU memory usage subgroup.

StatsMainMemUsageGroup

description: Main memory usage subgroup.

StatsMemUsageGroup

description: The memory usage group inside the statistics category.

StatsPerformanceGroup

description: The performance group inside the statistics category.

TestAssetsCategory

description: A pointer to the test assets category.

TrainingMeshesCategoryBuilder

description: A pointer to the training mesh category. This is only visible in training mode.

VizSettings

description: The visualization settings we are viewing.


className: FOnCurveNamePicked

code: typedef TBaseDelegate_OneParam< void, const [FString](API\Runtime\Core\Containers\FString) & > FOnCurveNamePicked


className: FOnCurveSelectionChanged

code: typedef TBaseDelegate_OneParam< void, const [FString](API\Runtime\Core\Containers\FString) & > FOnCurveSelectionChanged


className: FOnGetEditorModelInstance

code: typedef TBaseDelegate_NoParams< [FMLDeformerEditorModel](API\Plugins\MLDeformerFrameworkEditor\FMLDeformerEditorModel) * > FOnGetEditorModelInstance


className: FOnGetSelectedCurve

code: typedef TBaseDelegate_NoParams< [FString](API\Runtime\Core\Containers\FString) > FOnGetSelectedCurve


className: FOnGetSkeleton

code: typedef TBaseDelegate_NoParams< [USkeleton](API\Runtime\Engine\Animation\USkeleton) * > FOnGetSkeleton


code: void Construct ( const [FArguments](API\Plugins\MLDeformerFrameworkEditor\SCurvePickerWidget\FArguments) & InArgs )


code: WidgetArgsType & OnCurveNamePicked &40; const FOnCurveNamePicked & InDelegate &41;


code: WidgetArgsType & OnGetSkeleton &40; const FOnGetSkeleton & InDelegate &41;


className: FArguments

code: struct FArguments : public [TSlateBaseNamedArgs< SCurvePickerWidget >](API\Runtime\SlateCore\Widgets\TSlateBaseNamedArgs)


code: [TSharedPtr](API\Runtime\Core\Templates\TSharedPtr)< [SSearchBox](API\Runtime\Slate\Widgets\Input\SSearchBox) > GetFilterTextWidget() const


className: SCurvePickerWidget

description: The curve picker widget for the ML Deformer editor.

code: class SCurvePickerWidget : public [SCompoundWidget](API\Runtime\SlateCore\Widgets\SCompoundWidget)


code: void Construct ( const [FArguments](API\Plugins\MLDeformerFrameworkEditor\SCurveSelectionWidget\FArguments) & InArgs )


code: WidgetArgsType & OnCurveSelectionChanged &40; const FOnCurveSelectionChanged & InDelegate &41;


code: WidgetArgsType & OnGetSelectedCurve &40; const FOnGetSelectedCurve & InDelegate &41;


className: WidgetArgsType

code: typedef FArguments WidgetArgsType


code: struct FArguments : public [TSlateBaseNamedArgs< SCurveSelectionWidget >](API\Runtime\SlateCore\Widgets\TSlateBaseNamedArgs)


className: SCurveSelectionWidget

description: The curve selection widget for the ML Deformer.

code: class SCurveSelectionWidget : public [SCompoundWidget](API\Runtime\SlateCore\Widgets\SCompoundWidget)


code: void Construct ( const [FArguments](API\Plugins\MLDeformerFrameworkEditor\SMLDeformerBonePickerDialog\FArguments) & InArgs )


code: WidgetArgsType & AllowMultiSelect &40; bool InArg &41;


code: WidgetArgsType & HighlightBoneNames &40; TArray< FName > InArg &41;


code: WidgetArgsType & ExtraWidget &40; TSharedPtr< SWidget > InArg &41;


code: WidgetArgsType & IncludeList &40; TArray< FName > InArg &41;


code: WidgetArgsType & HighlightBoneNamesColor &40; FSlateColor InArg &41;


code: WidgetArgsType & RefSkeleton &40; FReferenceSkeleton &42; InArg &41;


code: WidgetArgsType & Title &40; FText InArg &41;


code: struct FArguments : public [TSlateBaseNamedArgs< SMLDeformerBonePickerDialog >](API\Runtime\SlateCore\Widgets\TSlateBaseNamedArgs)


description:
Get the array of picked bone names. This will be an empty list when nothing got selected, which means we basically cancelled.
The array of selected bone names. Empty if cancelled or if no bones were there to begin with.

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


className: SMLDeformerBonePickerDialog

description: A bone picker dialog window. This allows users to select one or more bones.

code: class SMLDeformerBonePickerDialog : public [SCustomDialog](API\Developer\ToolWidgets\Dialog\SCustomDialog)


code: void Construct ( const [FArguments](API\Runtime\Slate\Widgets\Layout\SBorder\FArguments) & InArgs, const [TSharedRef](API\Runtime\Core\Templates\TSharedRef)< [STableViewBase](API\Runtime\Slate\Widgets\Views\STableViewBase) > & OwnerTable, [TSharedRef](API\Runtime\Core\Templates\TSharedRef)< [FMLDeformerBonePickerTreeElement](API\Plugins\MLDeformerFrameworkEditor\FMLDeformerBonePickerTreeElement) > InTreeElement, [TSharedPtr](API\Runtime\Core\Templates\TSharedPtr)< [SMLDeformerBonePickerTreeWidget](API\Plugins\MLDeformerFrameworkEditor\SMLDeformerBonePickerTreeWidget) > InTreeView )


code: void AddElement ( [TSharedPtr](API\Runtime\Core\Templates\TSharedPtr)< [FMLDeformerBonePickerTreeElement](API\Plugins\MLDeformerFrameworkEditor\FMLDeformerBonePickerTreeElement) > Element, [TSharedPtr](API\Runtime\Core\Templates\TSharedPtr)< [FMLDeformerBonePickerTreeElement](API\Plugins\MLDeformerFrameworkEditor\FMLDeformerBonePickerTreeElement) > ParentElement )


className: SMLDeformerBonePickerTreeRowWidget

code: class SMLDeformerBonePickerTreeRowWidget : public [STableRow< TSharedPtr< FMLDeformerBonePickerTreeElement > >](API\Runtime\Slate\Widgets\Views\STableRow)


code: void Construct ( const [FArguments](API\Plugins\MLDeformerFrameworkEditor\SMLDeformerBonePickerTreeWidget\FArguments) & InArgs )


code: WidgetArgsType & PickerWidget &40; TSharedPtr< SMLDeformerBonePickerDialog > InArg &41;


code: typedef FArguments WidgetArgsType


code: struct FArguments : public [TSlateBaseNamedArgs< SMLDeformerBonePickerTreeWidget >](API\Runtime\SlateCore\Widgets\TSlateBaseNamedArgs)


code: const [TArray](API\Runtime\Core\Containers\TArray)< [TSharedPtr](API\Runtime\Core\Templates\TSharedPtr)< [FMLDeformerBonePickerTreeElement](API\Plugins\MLDeformerFrameworkEditor\FMLDeformerBonePickerTreeElement) > > & GetRootElements() const


className: SMLDeformerBonePickerTreeWidget

code: class SMLDeformerBonePickerTreeWidget : public [STreeView< TSharedPtr< FMLDeformerBonePickerTreeElement > >](API\Editor\UnrealEd\STreeView)


code: void Construct ( const [FArguments](API\Plugins\MLDeformerFrameworkEditor\SMLDeformerCurvePickerDialog\FArguments) & InArgs )


code: WidgetArgsType & AllowMultiSelect &40; bool InArg &41;


code: WidgetArgsType & HighlightCurveNames &40; TArray< FName > InArg &41;


code: WidgetArgsType & HighlightCurveNamesColor &40; FSlateColor InArg &41;


code: WidgetArgsType & IncludeList &40; TArray< FName > InArg &41;


code: WidgetArgsType & Skeleton &40; USkeleton &42; InArg &41;


code: WidgetArgsType & Title &40; FText InArg &41;


code: struct FArguments : public [TSlateBaseNamedArgs< SMLDeformerCurvePickerDialog >](API\Runtime\SlateCore\Widgets\TSlateBaseNamedArgs)


description:
Get the array of picked curves names. This will be an empty list when nothing got selected, which means we basically cancelled.
The array of selected curves names. Empty if cancelled or if no curves were there to begin with.

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


code: void AddElement ( [TSharedPtr](API\Runtime\Core\Templates\TSharedPtr)< [FMLDeformerCurvePickerElement](API\Plugins\MLDeformerFrameworkEditor\FMLDeformerCurvePickerElement) > Element )


className: SMLDeformerCurvePickerDialog

code: class SMLDeformerCurvePickerDialog : public [SCustomDialog](API\Developer\ToolWidgets\Dialog\SCustomDialog)


code: void Construct ( const [FArguments](API\Plugins\MLDeformerFrameworkEditor\SMLDeformerCurvePickerListView\FArguments) & InArgs )


code: WidgetArgsType & PickerDialog &40; TSharedPtr< SMLDeformerCurvePickerDialog > InArg &41;


code: typedef FArguments WidgetArgsType


code: struct FArguments : public [TSlateBaseNamedArgs< SMLDeformerCurvePickerListView >](API\Runtime\SlateCore\Widgets\TSlateBaseNamedArgs)


className: SMLDeformerCurvePickerListView

code: class SMLDeformerCurvePickerListView : public [SListView< TSharedPtr< FMLDeformerCurvePickerElement > >](API\Editor\UnrealEd\Editor\SListView)


code: void Construct ( const [FArguments](API\Runtime\Slate\Widgets\Layout\SBorder\FArguments) & InArgs, const [TSharedRef](API\Runtime\Core\Templates\TSharedRef)< [STableViewBase](API\Runtime\Slate\Widgets\Views\STableViewBase) > & OwnerTable, [TSharedRef](API\Runtime\Core\Templates\TSharedRef)< [FMLDeformerCurvePickerElement](API\Plugins\MLDeformerFrameworkEditor\FMLDeformerCurvePickerElement) > InTreeElement, [TSharedPtr](API\Runtime\Core\Templates\TSharedPtr)< [SMLDeformerCurvePickerListView](API\Plugins\MLDeformerFrameworkEditor\SMLDeformerCurvePickerListView) > InListView )


className: SMLDeformerCurvePickerRowWidget

code: class SMLDeformerCurvePickerRowWidget : public [STableRow< TSharedPtr< FMLDeformerCurvePickerElement > >](API\Runtime\Slate\Widgets\Views\STableRow)


code: void BindCommands ( [TSharedPtr](API\Runtime\Core\Templates\TSharedPtr)< [FUICommandList](API\Runtime\Slate\Framework\Commands\FUICommandList) > CommandList )


code: void Construct ( const [FArguments](API\Plugins\MLDeformerFrameworkEditor\SMLDeformerInputBonesWidget\FArguments) & InArgs )


code: WidgetArgsType & InputWidget &40; TSharedPtr< SMLDeformerInputWidget > InArg &41;


code: WidgetArgsType & EditorModel &40; FMLDeformerEditorModel &42; InArg &41;


code: struct FArguments : public [TSlateBaseNamedArgs< SMLDeformerInputBonesWidget >](API\Runtime\SlateCore\Widgets\TSlateBaseNamedArgs)


className: SMLDeformerInputBonesWidget

code: class SMLDeformerInputBonesWidget : public [SCompoundWidget](API\Runtime\SlateCore\Widgets\SCompoundWidget)


code: void Construct ( const [FArguments](API\Runtime\Slate\Widgets\Layout\SBorder\FArguments) & InArgs, const [TSharedRef](API\Runtime\Core\Templates\TSharedRef)< [STableViewBase](API\Runtime\Slate\Widgets\Views\STableViewBase) > & OwnerTable, [TSharedRef](API\Runtime\Core\Templates\TSharedRef)< [FMLDeformerInputBoneTreeElement](API\Plugins\MLDeformerFrameworkEditor\FMLDeformerInputBoneTreeElement) > InTreeElement, [TSharedPtr](API\Runtime\Core\Templates\TSharedPtr)< [SMLDeformerInputBoneTreeWidget](API\Plugins\MLDeformerFrameworkEditor\SMLDeformerInputBoneTreeWidget) > InTreeView )


className: SMLDeformerInputBoneTreeRowWidget

code: class SMLDeformerInputBoneTreeRowWidget : public [STableRow< TSharedPtr< FMLDeformerInputBoneTreeElement > >](API\Runtime\Slate\Widgets\Views\STableRow)


code: void AddElement ( [TSharedPtr](API\Runtime\Core\Templates\TSharedPtr)< [FMLDeformerInputBoneTreeElement](API\Plugins\MLDeformerFrameworkEditor\FMLDeformerInputBoneTreeElement) > Element, [TSharedPtr](API\Runtime\Core\Templates\TSharedPtr)< [FMLDeformerInputBoneTreeElement](API\Plugins\MLDeformerFrameworkEditor\FMLDeformerInputBoneTreeElement) > ParentElement )


code: void Construct ( const [FArguments](API\Plugins\MLDeformerFrameworkEditor\SMLDeformerInputBoneTreeWidget\FArguments) & InArgs )


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


code: WidgetArgsType & InputBonesWidget &40; TSharedPtr< SMLDeformerInputBonesWidget > InArg &41;


code: typedef FArguments WidgetArgsType


code: struct FArguments : public [TSlateBaseNamedArgs< SMLDeformerInputBoneTreeWidget >](API\Runtime\SlateCore\Widgets\TSlateBaseNamedArgs)


code: const [TArray](API\Runtime\Core\Containers\TArray)< [TSharedPtr](API\Runtime\Core\Templates\TSharedPtr)< [FMLDeformerInputBoneTreeElement](API\Plugins\MLDeformerFrameworkEditor\FMLDeformerInputBoneTreeElement) > > & GetRootElements() const


code: void RefreshElements ( const [TArray](API\Runtime\Core\Containers\TArray)< [FName](API\Runtime\Core\UObject\FName) > & BoneNames, const [FReferenceSkeleton](API\Runtime\Engine\FReferenceSkeleton) * RefSkeleton )


className: SMLDeformerInputCurveListRowWidget

code: class SMLDeformerInputCurveListRowWidget : public [STableRow< TSharedPtr< FMLDeformerInputCurveListElement > >](API\Runtime\Slate\Widgets\Views\STableRow)


className: SMLDeformerInputBoneTreeWidget

code: class SMLDeformerInputBoneTreeWidget : public [STreeView< TSharedPtr< FMLDeformerInputBoneTreeElement > >](API\Editor\UnrealEd\STreeView)


code: void Construct ( const [FArguments](API\Runtime\Slate\Widgets\Layout\SBorder\FArguments) & InArgs, const [TSharedRef](API\Runtime\Core\Templates\TSharedRef)< [STableViewBase](API\Runtime\Slate\Widgets\Views\STableViewBase) > & OwnerTable, [TSharedRef](API\Runtime\Core\Templates\TSharedRef)< [FMLDeformerInputCurveListElement](API\Plugins\MLDeformerFrameworkEditor\FMLDeformerInputCurveListElement) > InElement, [TSharedPtr](API\Runtime\Core\Templates\TSharedPtr)< [SMLDeformerInputCurveListWidget](API\Plugins\MLDeformerFrameworkEditor\SMLDeformerInputCurveListWidget) > InListView )


code: void AddElement ( [TSharedPtr](API\Runtime\Core\Templates\TSharedPtr)< [FMLDeformerInputCurveListElement](API\Plugins\MLDeformerFrameworkEditor\FMLDeformerInputCurveListElement) > Element )


code: void Construct ( const [FArguments](API\Plugins\MLDeformerFrameworkEditor\SMLDeformerInputCurveListWidget\FArguments) & InArgs )


code: WidgetArgsType & InputCurvesWidget &40; TSharedPtr< SMLDeformerInputCurvesWidget > InArg &41;


code: struct FArguments : public [TSlateBaseNamedArgs< SMLDeformerInputCurveListWidget >](API\Runtime\SlateCore\Widgets\TSlateBaseNamedArgs)


code: const [TArray](API\Runtime\Core\Containers\TArray)< [TSharedPtr](API\Runtime\Core\Templates\TSharedPtr)< [FMLDeformerInputCurveListElement](API\Plugins\MLDeformerFrameworkEditor\FMLDeformerInputCurveListElement) > > & GetElements() const


code: void RefreshElements ( const [TArray](API\Runtime\Core\Containers\TArray)< [FName](API\Runtime\Core\UObject\FName) > & CurveNames, const [USkeleton](API\Runtime\Engine\Animation\USkeleton) * Skeleton )


className: SMLDeformerInputCurveListWidget

code: class SMLDeformerInputCurveListWidget : public [SListView< TSharedPtr< FMLDeformerInputCurveListElement > >](API\Editor\UnrealEd\Editor\SListView)


code: void BindCommands ( [TSharedPtr](API\Runtime\Core\Templates\TSharedPtr)< [FUICommandList](API\Runtime\Slate\Framework\Commands\FUICommandList) > CommandList )


code: void Construct ( const [FArguments](API\Plugins\MLDeformerFrameworkEditor\SMLDeformerInputCurvesWidget\FArguments) & InArgs )


code: WidgetArgsType & EditorModel &40; FMLDeformerEditorModel &42; InArg &41;


code: WidgetArgsType & InputWidget &40; TSharedPtr< SMLDeformerInputWidget > InArg &41;


code: typedef FArguments WidgetArgsType


code: struct FArguments : public [TSlateBaseNamedArgs< SMLDeformerInputCurvesWidget >](API\Runtime\SlateCore\Widgets\TSlateBaseNamedArgs)


className: SMLDeformerInputCurvesWidget

code: class SMLDeformerInputCurvesWidget : public [SCompoundWidget](API\Runtime\SlateCore\Widgets\SCompoundWidget)


code: virtual void AddInputBonesPlusIconMenuItems ( [FMenuBuilder](API\Runtime\Slate\Framework\MultiBox\FMenuBuilder) & MenuBuilder )


code: virtual void AddInputBonesMenuItems ( [FMenuBuilder](API\Runtime\Slate\Framework\MultiBox\FMenuBuilder) & MenuBuilder )


code: virtual void AddInputCurvesMenuItems ( [FMenuBuilder](API\Runtime\Slate\Framework\MultiBox\FMenuBuilder) & MenuBuilder )


code: virtual void AddInputCurvesPlusIconMenuItems ( [FMenuBuilder](API\Runtime\Slate\Framework\MultiBox\FMenuBuilder) & MenuBuilder )


code: void AddSection ( [TSharedPtr](API\Runtime\Core\Templates\TSharedPtr)< [SWidget](API\Runtime\SlateCore\Widgets\SWidget) > Widget, const [FSectionInfo](API\Plugins\MLDeformerFrameworkEditor\SMLDeformerInputWidget\FSectionInfo) & SectionInfo )


code: void AddSectionSeparator()


code: virtual void ClearSelectionForAllWidgetsExceptThis ( [TSharedPtr](API\Runtime\Core\Templates\TSharedPtr)< [SWidget](API\Runtime\SlateCore\Widgets\SWidget) > ExceptThisWidget )


code: void Construct ( const [FArguments](API\Plugins\MLDeformerFrameworkEditor\SMLDeformerInputWidget\FArguments) & InArgs )


code: void CreateBonesWidget()


code: void CreateCurvesWidget()


code: struct FArguments : public [TSlateBaseNamedArgs< SMLDeformerInputWidget >](API\Runtime\SlateCore\Widgets\TSlateBaseNamedArgs)


className: FSectionInfo

code: struct FSectionInfo

PlusButtonPressed

type: FOnClicked

PlusButtonTooltip

type: TAttribute<FTe...


code: [TSharedPtr](API\Runtime\Core\Templates\TSharedPtr)< [FUICommandList](API\Runtime\Slate\Framework\Commands\FUICommandList) > GetCurvesCommandList() const


code: [TSharedPtr](API\Runtime\Core\Templates\TSharedPtr)< [FUICommandList](API\Runtime\Slate\Framework\Commands\FUICommandList) > GetBonesCommandList() const


code: virtual [TSharedPtr](API\Runtime\Core\Templates\TSharedPtr)< [SWidget](API\Runtime\SlateCore\Widgets\SWidget) > GetExtraBonePickerWidget()


code: virtual void OnAddAnimatedBones()


code: virtual void OnAddAnimatedCurves()


code: virtual void OnAddInputCurves ( const [TArray](API\Runtime\Core\Containers\TArray)< [FName](API\Runtime\Core\UObject\FName) > & Names )


code: virtual void OnAddInputBones ( const [TArray](API\Runtime\Core\Containers\TArray)< [FName](API\Runtime\Core\UObject\FName) > & Names )


code: virtual void OnClearInputBones()


code: virtual void OnClearInputCurves()


code: virtual void OnDeleteInputBones ( const [TArray](API\Runtime\Core\Containers\TArray)< [FName](API\Runtime\Core\UObject\FName) > & Names )


code: virtual void OnDeleteInputCurves ( const [TArray](API\Runtime\Core\Containers\TArray)< [FName](API\Runtime\Core\UObject\FName) > & Names )


code: virtual void OnSelectInputBone ( [FName](API\Runtime\Core\UObject\FName) BoneName )


code: virtual void OnSelectInputCurve ( [FName](API\Runtime\Core\UObject\FName) BoneName )


description: Refresh all sub-widget contents.

code: virtual void Refresh()


description: Registers the commands that are being executed by the different widgets.

code: static void RegisterCommands()


className: SMLDeformerInputWidget

code: class SMLDeformerInputWidget : public [SCompoundWidget](API\Runtime\SlateCore\Widgets\SCompoundWidget)

BonesCommandList

type: TSharedPtr<FUI...

InputBonesWidget

type: TSharedPtr<SML...

SectionVerticalBox

type: TSharedPtr<SVe...


description: The default ID's for editor actors. You can assign any ID to the editor actors, although some code in the editor model classes will assume that some of these exist. You can always overload certain methods to change that behavior though.

code: namespace UE { namespace MLDeformer { enum { ActorID_Train_Base, ActorID_Train_GroundTruth, ActorID_Test_Base, ActorID_Test_MLDeformed, ActorID_Test_GroundTruth, } } }


description: The space in which the sampler will calculate its vertex deltas.

code: namespace UE { namespace MLDeformer { enum EVertexDeltaSpace { PreSkinning, PostSkinning, } } }


description: Train the model. This will execute the train function inside your python code. Provide theUMLDeformerTrainingModelinherited class type as template argument.

code: namespace UE { namespace MLDeformer { template<class TrainingModelClass> [ETrainingResult](API\Plugins\MLDeformerFrameworkEditor\ETrainingResult) UE::MLDeformer::TrainModel ( [FMLDeformerEditorModel](API\Plugins\MLDeformerFrameworkEditor\FMLDeformerEditorModel) * EditorModel ) } }


description: Get a pointer to the editor model.


description: Get the runtime ML Deformer model object.

code: [UFUNCTION](Programming/UnrealArchitecture/Reference/Functions)(BlueprintPure, Category="Training Data") UMLDeformerModel * GetModel() const


description:
Check whether we need to resample the inputs and outputs, or if we can use a cached version. This will return true if any inputs changed, that indicate that we should regenerate any cached data.
Returns true when we need to regenerate any cached data, otherwise false is returned.

code: [UFUNCTION](Programming/UnrealArchitecture/Reference/Functions)(BlueprintCallable, Category="Training Data") bool GetNeedsResampling() const


description: Get number of input curves.

code: [UFUNCTION](Programming/UnrealArchitecture/Reference/Functions)(BlueprintPure, Category="Training Data") int32 GetNumberSampleCurves() const


description: Get the number of vertex deltas.

code: [UFUNCTION](Programming/UnrealArchitecture/Reference/Functions)(BlueprintPure, Category="Training Data") int32 GetNumberSampleDeltas() const


description: Get the number of input transforms. This is the number of bones.

code: [UFUNCTION](Programming/UnrealArchitecture/Reference/Functions)(BlueprintPure, Category="Training Data") int32 GetNumberSampleTransforms() const


description: Initialize the training model. This is automatically called by the editor.

code: virtual void Init ( [UE::MLDeformer::FMLDeformerEditorModel](API\Plugins\MLDeformerFrameworkEditor\FMLDeformerEditorModel) * InEditorModel )


description: Get the number of samples in this data set. This is the number of sample frames we want to train on.

code: [UFUNCTION](Programming/UnrealArchitecture/Reference/Functions)(BlueprintPure, Category="Training Data") int32 NumSamples() const


description: This updates the sample deltas, curves, and bone rotations.

code: virtual bool SampleFrame ( int32 Index )


description:
Set the current sample frame. This will internally call the SampleFrame method, which will update the deltas, curve values and bone rotations. You call this before getting the input bone/curve and vertex delta values.
Returns true when successful, or false when the specified sample index is out of range.

code: [UFUNCTION](Programming/UnrealArchitecture/Reference/Functions)(BlueprintCallable, Category="Training Data") bool SetCurrentSampleIndex ( int32 Index )


description: Change the pointer to the editor model.

code: void SetEditorModel ( [UE::MLDeformer::FMLDeformerEditorModel](API\Plugins\MLDeformerFrameworkEditor\FMLDeformerEditorModel) * InModel )


description: Set the number of floats per curve. On default this is one.

code: [UFUNCTION](Programming/UnrealArchitecture/Reference/Functions)(BlueprintCallable, Category="Training Data") void SetNumFloatsPerCurve ( int32 NumFloatsPerCurve )


description: Specify whether we need to resample any cached data or not, because our input assets, or any other relevant settings changed that would invalidate the cached data.

code: [UFUNCTION](Programming/UnrealArchitecture/Reference/Functions)(BlueprintCallable, Category="Training Data") void SetNeedsResampling ( bool bNeedsResampling )


className: UMLDeformerTrainingModel

description: The editor will execute the Train method, which will trigger the "train" method in your Python class to be executed. Keep in mind that in Unreal Engine all python code is lower case. So a "Train" method inside c++ will need to be called "train" inside the python code. Or if you have something called "PerformMyTraining" it will need to be called "perform_my_training" inside Python.

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

EditorModel

description: A pointer to the editor model from which we use the sampler.

SampleBoneRotations

description: The bone rotations in bone (local) space for this sample. This is updated after SetCurrentSampleIndex is called and is 6 floats per bone (2 columns of 3x3 rotation matrix).

SampleCurveValues

description: The curve weights. This is updated after SetCurrentSampleIndex is called.

SampleDeltas

description: The delta values per vertex for this sample. This is updated after SetCurrentSampleIndex is called. Contains an xyz (3 floats) for each vertex.


description: Called before the module is unloaded, right before the module object is destroyed. During normal shutdown, this is called in reverse order that modules finishStartupModule(). This means that, as long as a module references dependent modules in it'sStartupModule(), it can safely reference those dependencies inShutdownModule()as well.

module: MobileFSR

code: virtual void ShutdownModule()


description: FModuleManager::Get().LoadModuleChecked(TEXT("HTTP"));

code: virtual void StartupModule()


className: FMobileFSRModule

code: class FMobileFSRModule : public [IModuleInterface](API\Runtime\Core\Modules\IModuleInterface)

ViewExtension

type: TSharedPtr<FMo...


description: Called on game thread when view family is about to be rendered.

code: virtual void BeginRenderViewFamily ( [FSceneViewFamily](API\Runtime\Engine\FSceneViewFamily) & InViewFamily )


description: Deprecated APIs - These are no longer called and must be converted to restore functionality.

code: virtual void PreRenderViewFamily_RenderThread ( [FRHICommandListImmediate](API\Runtime\RHI\FRHICommandListImmediate) & RHICmdList, [FSceneViewFamily](API\Runtime\Engine\FSceneViewFamily) & InViewFamily )


description: Called on game thread when creating the view.

code: virtual void SetupView ( [FSceneViewFamily](API\Runtime\Engine\FSceneViewFamily) & InViewFamily, [FSceneView](API\Runtime\Engine\FSceneView) & InView )


description: Called on game thread when creating the view family.

code: virtual void SetupViewFamily ( [FSceneViewFamily](API\Runtime\Engine\FSceneViewFamily) & InViewFamily )


code: FMobileFSRViewExtension ( const [FAutoRegister](API\Runtime\Engine\FAutoRegister) & AutoRegister )


className: FMobileFSRViewExtension

code: class FMobileFSRViewExtension : public [FSceneViewExtensionBase](API\Runtime\Engine\FSceneViewExtensionBase)


description:
Singleton-like access to this module's interface. This is just for convenience! Beware of calling this during the shutdown phase, though. Your module might have been unloaded already.
Returns singleton instance, loading the module on demand if needed

module: MobileLauncherProfileWizard


description:
Checks to see if this module is loaded and ready. It is only valid to callGet()ifIsAvailable()returns true.
True if the module is loaded and ready to use

code: static bool IsAvailable()


className: IMobileLauncherProfileWizardModule

description: The public interface to this module. In most cases, this interface is only public to sibling modules within this plugin.

code: class IMobileLauncherProfileWizardModule : public [IModuleInterface](API\Runtime\Core\Modules\IModuleInterface)


className: APreviewMeshActor

description: No constructors are accessible with public or protected access.

module: ModelingComponents

code: [UCLASS](Programming/UnrealArchitecture/Reference/Classes#classdeclaration)(Transient, NotPlaceable, Hidden, NotBlueprintable, NotBlueprintType) class APreviewMeshActor : public [AInternalToolFrameworkActor](API\Runtime\InteractiveToolsFramework\AInternalToolFrameworkActor)


className: FStaticMeshBuildSettingChange

description: Set of changes to apply to StaticMesh Build Settings

code: struct FStaticMeshBuildSettingChange

AutoGeneratedNormals

type: EBuildSettingBo...


className: FStaticMeshLODMaterialSetInfo

description: The GetStaticMeshAssetMaterials() function can be used to build this data structure for a given StaticMesh LOD.

code: struct FStaticMeshLODMaterialSetInfo

LODIndex

description: LODIndexthe data below refers to

MaterialSlots

type: TArray<FStatic...

description: MaterialSlots array is a copy of the UStaticMesh::StaticMaterials array/data

NumSections

description: Number of Sections on the mesh LOD

SectionMaterials

type: TArray<UMateri...

description: The Material assigned to each Section, in linear order

SectionSlotIndexes

type: TArray< int32 >

description: The index into MaterialSlots array of the Material assigned to each Section, in linear order


className: FStaticMeshMaterialSlot

description: Information about a mesh material slot (eg aFStaticMaterial)

code: struct FStaticMeshMaterialSlot

Material

type: UMaterialInterf...

SlotName

type: FName


description: Create a newUTexture2Dof the given TextureType from the given SourceImage

code: template<typename PixelType> static [UTexture2D](API\Runtime\Engine\Engine\UTexture2D) * BuildTextureFromImage ( const [TImageBuilder](API\Runtime\GeometryCore\Image\TImageBuilder)< PixelType > & SourceImage, [FTexture2DBuilder::ETextureType](API\Plugins\ModelingComponents\AssetUtils\FTexture2DBuilder\ETextureType) TextureType, const bool bConvertToSRGB, bool bPopulateSourceData )


description: Cancel active editing and unlock the texture data

code: void Cancel()


description: Clear all texels in the current Mip to the clear/default color for the texture build type

code: void Clear()


description: Clear all texels in the current Mip to the given ClearColor

code: void Clear ( const [FColor](API\Runtime\Core\Math\FColor) & ClearColor )


code: void Clear ( const [FFloat16Color](API\Runtime\Core\Math\FFloat16Color) & ClearColor )


description: Unlock the Mip 0 buffer and update the texture rendering data. This does not PostEditChange() so any materials using this texture may not be updated, the caller must do that.

code: void Commit ( bool bUpdateSourceData )


description: Populate texel values from floating-point SourceImage

code: bool Copy ( const [TImageBuilder](API\Runtime\GeometryCore\Image\TImageBuilder)< FVector3f > & SourceImage, const bool bConvertToSRGB )


description: Populate texel values from floating-point SourceImage.

code: bool Copy ( const [TImageBuilder](API\Runtime\GeometryCore\Image\TImageBuilder)< FVector4f > & SourceImage, const bool bConvertToSRGB )


description: Use aFTexture2DBuilderto copy the PlatformData to theUTexture2DSource data, so it can be saved as an Asset

code: static bool CopyPlatformDataToSourceData ( [UTexture2D](API\Runtime\Engine\Engine\UTexture2D) * Texture, [ETextureType](API\Plugins\ModelingComponents\AssetUtils\FTexture2DBuilder\ETextureType) TextureType )


description: Populate Source Data texel values from a floating point SourceImage

code: bool CopyImageToSourceData ( const [TImageBuilder](API\Runtime\GeometryCore\Image\TImageBuilder)< FVector4f > & SourceImage, const ETextureSourceFormat SourceDataFormat, const bool bConvertToSRGB )


description: Copy texel value from one linear index to another

code: void CopyTexel ( int64 FromLinearIndex, int64 ToLinearIndex )