// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "MetaHumanCharacter.h" class FMetaHumanFaceTextureSynthesizer; class UMaterialInstanceDynamic; // Helper class providing stateless static functions for managing body textures class FMetaHumanCharacterBodyTextureUtils { public: static int32 GetSkinToneIndex(const FMetaHumanCharacterSkinProperties& InSkinProperties); static int32 GetBodySurfaceMapId(const FMetaHumanCharacterSkinProperties& InSkinProperties); static void InitBodyTextureData(const FMetaHumanCharacterSkinProperties& InSkinProperties, const TMap& InTextureInfo, TMap>& OutBodyTextures); static void UpdateBodyTextureSet(const TOptional& InCharacterSkinSettings, const FMetaHumanCharacterSkinProperties& InSkinProperties, TMap& InOutTextureInfo, TMap>& InOutBodyTextures); static void UpdateBodySkinBiasGain(const FMetaHumanFaceTextureSynthesizer& InFaceTextureSynthesizer, FMetaHumanCharacterSkinProperties& InOutSkinProperties); /** * Get the skin tone and update the body material with rgb bias parameters and textures. Updates the rgb bias and textures for the chest in the face material to match */ static void GetSkinToneAndUpdateMaterials(const FMetaHumanCharacterSkinProperties& InSkinProperties, const FMetaHumanFaceTextureSynthesizer& InFaceTextureSynthesizer, const TMap>& InBodyTextures, const struct FMetaHumanCharacterFaceMaterialSet& InFaceMaterialSet, TNotNull InBodyMID); static UTexture2D* CreateBodyTexture(EBodyTextureType InTextureType, int32 InSizeX, int32 InSizeY); };