// 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" /** Face Contour Tracker Asset * * Contains trackers for different facial features * Used in MetaHuman Identity and Performance assets * **/ UCLASS(BlueprintType) class METAHUMANFACECONTOURTRACKER_API UMetaHumanFaceContourTrackerAsset : public UObject { GENERATED_BODY() public: //~Begin UObject interface #if WITH_EDITOR virtual void PostEditChangeProperty(struct FPropertyChangedEvent& InPropertyChangedEvent) override; virtual void PostTransacted(const FTransactionObjectEvent& InTransactionEvent) override; #endif 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: bool CanProcess() const; void LoadTrackers(bool bInShowProgressNotification, TFunction&& Callback); void CancelLoadTrackers(); bool LoadTrackersSynchronous(); bool IsLoadingTrackers() const; private: UPROPERTY(Transient) TArray> LoadedTrackerModelData; TArray> LoadedTrackerModels; TWeakPtr LoadNotification; TSharedPtr TrackersLoadHandle; TArray> GetTrackerModelData() const; TArray> GetTrackerModels() const; bool SetTrackerModels(); TArray GetTrackerModelDataAsSoftObjectPaths() const; bool AreTrackerModelsLoaded() const; bool CreateTrackerModels(); };