// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "CoreMinimal.h" #include "NNE.h" #include "NNEModelData.h" #include "NNERuntimeGPU.h" #include "MetaHumanFaceContourTrackerAsset.generated.h" #define UE_API METAHUMANFACECONTOURTRACKER_API /** Face Contour Tracker Asset * * Contains trackers for different facial features * Used in MetaHuman Identity and Performance assets * **/ UCLASS(MinimalAPI, BlueprintType) class UMetaHumanFaceContourTrackerAsset : public UObject { GENERATED_BODY() public: //~Begin UObject interface #if WITH_EDITOR UE_API virtual void PostEditChangeProperty(struct FPropertyChangedEvent& InPropertyChangedEvent) override; UE_API virtual void PostTransacted(const FTransactionObjectEvent& InTransactionEvent) override; #endif UE_API virtual void PostLoad() override; //~End UObject interface TSharedPtr FaceDetector; TSharedPtr FullFaceTracker; TSharedPtr BrowsDenseTracker; TSharedPtr EyesDenseTracker; TSharedPtr NasioLabialsDenseTracker; TSharedPtr MouthDenseTracker; TSharedPtr LipzipDenseTracker; TSharedPtr ChinDenseTracker; TSharedPtr TeethDenseTracker; TSharedPtr TeethConfidenceTracker; public: UPROPERTY(EditAnywhere, Category = TrackerModels) TSoftObjectPtr FaceDetectorModelData; UPROPERTY(EditAnywhere, Category = TrackerModels) TSoftObjectPtr FullFaceTrackerModelData; UPROPERTY(EditAnywhere, Category = TrackerModels) TSoftObjectPtr BrowsDenseTrackerModelData; UPROPERTY(EditAnywhere, Category = TrackerModels) TSoftObjectPtr EyesDenseTrackerModelData; UPROPERTY(EditAnywhere, Category = TrackerModels) TSoftObjectPtr NasioLabialsDenseTrackerModelData; UPROPERTY(EditAnywhere, Category = TrackerModels) TSoftObjectPtr MouthDenseTrackerModelData; UPROPERTY(EditAnywhere, Category = TrackerModels) TSoftObjectPtr LipzipDenseTrackerModelData; UPROPERTY(EditAnywhere, Category = TrackerModels) TSoftObjectPtr ChinDenseTrackerModelData; UPROPERTY(EditAnywhere, Category = TrackerModels) TSoftObjectPtr TeethDenseTrackerModelData; UPROPERTY(EditAnywhere, Category = TrackerModels) TSoftObjectPtr TeethConfidenceTrackerModelData; public: UE_API bool CanProcess() const; UE_API void LoadTrackers(bool bInShowProgressNotification, TFunction&& Callback); UE_API void CancelLoadTrackers(); UE_API bool LoadTrackersSynchronous(); UE_API bool IsLoadingTrackers() const; private: UPROPERTY(Transient) TArray> LoadedTrackerModelData; TArray> LoadedTrackerModels; TWeakPtr LoadNotification; TSharedPtr TrackersLoadHandle; UE_API TArray> GetTrackerModelData() const; UE_API TArray> GetTrackerModels() const; UE_API bool SetTrackerModels(); UE_API TArray GetTrackerModelDataAsSoftObjectPaths() const; UE_API bool AreTrackerModelsLoaded() const; UE_API bool CreateTrackerModels(); }; #undef UE_API