Browse Source

Matched Plugins with Avatar Base

master
Tillman Staffen 2 weeks ago
parent
commit
6b0a1da19a
  1. BIN
      Unreal/Content/Project/BP/BP_Project_Manager.uasset
  2. 5
      Unreal/Plugins/AvatarCore_AI/Source/AvatarCore_AI/Private/AIBaseManager.cpp
  3. 5
      Unreal/Plugins/AvatarCore_AI/Source/AvatarCore_AI/Public/AIBaseManager.h
  4. 12
      Unreal/Plugins/AvatarCore_AI/Source/AvatarCore_AI/Public/RealtimeAPI/AvatarCoreAIRealtime.h
  5. 54
      Unreal/Plugins/AvatarCore_AI/Source/ThirdParty/MCPServer/FastMCP/AddDocumentsToDatabase.py
  6. 12
      Unreal/Plugins/AvatarCore_AI/Source/ThirdParty/MCPServer/FastMCP/FastMCPServer.py
  7. 8
      Unreal/Plugins/AvatarCore_AI/Source/ThirdParty/MCPServer/FastMCP/TestSearchDatabase.py
  8. 3
      Unreal/Plugins/AvatarCore_AI/Source/ThirdParty/MCPServer/FastMCP/WipeDatabase.bat
  9. 229
      Unreal/Plugins/AvatarCore_AI/Source/ThirdParty/MCPServer/FastMCP/document_vectordb.py
  10. BIN
      Unreal/Plugins/AvatarCore_AI/Source/ThirdParty/MCPServer/FastMCP/lancedb/documents.lance/_transactions/0-7032d51b-cf75-439d-b546-8a49bd9f7c9c.txn
  11. BIN
      Unreal/Plugins/AvatarCore_AI/Source/ThirdParty/MCPServer/FastMCP/lancedb/documents.lance/_transactions/1-e4aac62e-df93-4f1b-a546-43a8516937ae.txn
  12. BIN
      Unreal/Plugins/AvatarCore_AI/Source/ThirdParty/MCPServer/FastMCP/lancedb/documents.lance/_versions/1.manifest
  13. BIN
      Unreal/Plugins/AvatarCore_AI/Source/ThirdParty/MCPServer/FastMCP/lancedb/documents.lance/_versions/2.manifest
  14. BIN
      Unreal/Plugins/AvatarCore_AI/Source/ThirdParty/MCPServer/FastMCP/lancedb/documents.lance/data/3e53aab5-bc5c-4db7-9f2c-31cdd3423b52.lance
  15. 3
      Unreal/Plugins/AvatarCore_AI/Source/ThirdParty/MCPServer/FastMCP/requirements.txt
  16. BIN
      Unreal/Plugins/AvatarCore_Manager/Content/AvatarCoreLogging.uasset
  17. BIN
      Unreal/Plugins/AvatarCore_Manager/Content/AvatarCoreManager.uasset
  18. BIN
      Unreal/Plugins/AvatarCore_Manager/Content/PlaceableCamera_BP.uasset
  19. BIN
      Unreal/Plugins/AvatarCore_Manager/Content/S_AvatarCoreSettings.uasset
  20. BIN
      Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/BFL_ProjectHelper.uasset
  21. BIN
      Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/BP_StateManager.uasset
  22. BIN
      Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/S_StateProcedure.uasset
  23. BIN
      Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/S_WidgetConfigs.uasset
  24. BIN
      Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/W_BaseWidget.uasset
  25. BIN
      Unreal/Plugins/AvatarCore_Manager/Content/UnrealCommands/AICommand_CurrentTime.uasset
  26. BIN
      Unreal/Plugins/AvatarCore_Manager/Content/Widgets/Debug/Pages/W_DebugAvatarCoreAI.uasset
  27. BIN
      Unreal/Plugins/AvatarCore_Manager/Content/Widgets/Debug/Pages/W_DebugAvatarCoreAnimation.uasset
  28. BIN
      Unreal/Plugins/AvatarCore_Manager/Content/Widgets/Debug/Pages/W_DebugAvatarCoreSTT.uasset
  29. BIN
      Unreal/Plugins/AvatarCore_Manager/Content/Widgets/Debug/Pages/W_DebugAvatarCoreStat.uasset
  30. BIN
      Unreal/Plugins/AvatarCore_Manager/Content/Widgets/Debug/Pages/W_DebugAvatarCoreTTS.uasset
  31. BIN
      Unreal/Plugins/AvatarCore_Manager/Content/Widgets/Debug/Pages/W_DebugProjectStates.uasset
  32. 6
      Unreal/Plugins/AvatarCore_Manager/Source/AvatarCore_Manager/AvatarCore_Manager.Build.cs
  33. 9
      Unreal/Plugins/AvatarCore_Manager/Source/AvatarCore_Manager/Private/AvatarCoreSettings.cpp
  34. 11
      Unreal/Plugins/AvatarCore_Manager/Source/AvatarCore_Manager/Private/AvatarCore_Manager.cpp
  35. 23
      Unreal/Plugins/AvatarCore_Manager/Source/AvatarCore_Manager/Public/AvatarCoreSettings.h
  36. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/AnimBPs/AvatarCore_AnimInst_Body.uasset
  37. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/AnimBPs/AvatarCore_AnimInst_BodyRetarget.uasset
  38. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/AnimBPs/AvatarCore_AnimInst_Face.uasset
  39. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/AnimBPs/Curves/CF_AvatarCore_Animation_LookAt_Macro_Strength.uasset
  40. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/AnimBPs/Curves/CF_AvatarCore_Animation_LookAt_Micro_Timer.uasset
  41. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/AnimBPs/Curves/CF_AvatarCore_Animation_PupilConstriction.uasset
  42. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/AnimBPs/Interface/BI_AvatarAnimBP.uasset
  43. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/AnimationConfigs/AnimationConfig.uasset
  44. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/AnimationConfigs/AnimationConfig_Base.uasset
  45. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/DefaultIdle/AS_M_Idle_Breath_2_Looped.uasset
  46. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/DefaultIdle/M_Idle_Breath_2_Looped.uasset
  47. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Idle/AS_LL_JG_01_Idle_02_adjusted.uasset
  48. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Idle/AS_LL_JG_01_Idle_03_adjusted.uasset
  49. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Idle/AS_LL_JG_01_Idle_04_adjusted.uasset
  50. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Idle/AS_LL_JG_01_Idle_06_adjusted.uasset
  51. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Idle/AS_LL_JG_01_Idle_09_adjusted.uasset
  52. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Idle/AS_LL_JG_01_Idle_16.uasset
  53. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Idle/AS_LL_JG_01_Idle_23_adjusted.uasset
  54. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Idle/AS_LL_JG_01_Idle_25_adjusted.uasset
  55. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Idle/M_Idle_Head_eyes_1.uasset
  56. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Idle/M_Idle_breath_2.uasset
  57. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Idle/M_Idle_cross_arms_long.uasset
  58. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Idle/M_Listening_Smiling_02.uasset
  59. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Listening/AS_LL_JG_01_Listening_02_adjusted.uasset
  60. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Listening/AS_LL_JG_01_Listening_03_adjusted.uasset
  61. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Listening/AS_LL_JG_01_Listening_04_adjusted.uasset
  62. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Listening/AS_LL_JG_01_Listening_05_adjusted.uasset
  63. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Listening/AS_LL_JG_01_Listening_06_adjusted.uasset
  64. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Listening/AS_LL_JG_01_Listening_09_adjusted.uasset
  65. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Listening/AS_LL_JG_01_Listening_15_adjusted.uasset
  66. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Listening/AS_LL_JG_01_Listening_16_adjusted.uasset
  67. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Listening/AS_LL_JG_01_Listening_17_adjusted.uasset
  68. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Listening/M_Listening_Nod.uasset
  69. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Listening/M_Listening_Smiling_02.uasset
  70. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Listening/M_Listening_Surprise.uasset
  71. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Talking/AS_LL_JG_02_Talking_01.uasset
  72. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Talking/AS_LL_JG_02_Talking_02.uasset
  73. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Talking/AS_LL_JG_02_Talking_03.uasset
  74. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Talking/AS_LL_JG_02_Talking_04.uasset
  75. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Talking/AS_LL_JG_02_Talking_05_01_adjusted.uasset
  76. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Talking/AS_LL_JG_02_Talking_05_02_adjusted.uasset
  77. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Talking/AS_LL_JG_02_Talking_06.uasset
  78. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Talking/AS_MC_Tim_01_Take01_Anim01_Cascadeur.uasset
  79. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Talking/AS_MC_Tim_01_Take01_Anim02_Cascadeur.uasset
  80. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Talking/AS_MC_Tim_01_Take01_Anim03_Cascadeur.uasset
  81. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Talking/AS_MC_Tim_01_Take01_Anim04_Cascadeur.uasset
  82. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Talking/AS_MC_Tim_01_Take02_Anim01_Cascadeur.uasset
  83. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Talking/AS_MC_Tim_01_Take02_Anim02_Cascadeur.uasset
  84. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Talking/AS_MC_Tim_01_Take02_Anim03_Cascadeur.uasset
  85. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Talking/AS_MC_Tim_01_Take02_Anim04_Cascadeur.uasset
  86. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Talking/AS_MC_Tim_01_Take03_Anim01_Cascadeur.uasset
  87. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Talking/AS_MC_Tim_01_Take03_Anim02_Cascadeur.uasset
  88. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Talking/AS_MC_Tim_01_Take03_Anim03_Cascadeur.uasset
  89. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Thinking/AS_LL_JG_01_Thinking_01_adjusted.uasset
  90. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Thinking/AS_LL_JG_01_Thinking_02_adjusted.uasset
  91. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Thinking/AS_LL_JG_01_Thinking_03_adjusted.uasset
  92. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Thinking/AS_LL_JG_01_Thinking_04_adjusted.uasset
  93. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Thinking/AS_LL_JG_01_Thinking_05_adjusted.uasset
  94. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Thinking/AS_LL_JG_01_Thinking_06_adjusted.uasset
  95. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Thinking/AS_LL_JG_01_Thinking_07_adjusted.uasset
  96. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Thinking/AS_LL_JG_01_Thinking_08_adjusted.uasset
  97. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Thinking/AS_LL_JG_01_Thinking_09_adjusted.uasset
  98. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Thinking/AS_LL_JG_01_Thinking_10_adjusted.uasset
  99. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Thinking/AS_LL_JG_01_Thinking_11_adjusted.uasset
  100. BIN
      Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Thinking/AS_LL_JG_01_Thinking_12_adjusted.uasset

BIN
Unreal/Content/Project/BP/BP_Project_Manager.uasset (Stored with Git LFS)

Binary file not shown.

5
Unreal/Plugins/AvatarCore_AI/Source/AvatarCore_AI/Private/AIBaseManager.cpp

@ -434,6 +434,11 @@ void UAIBaseManager::OnRequestTimeout()
SetNewState(EAvatarCoreAIState::Error); SetNewState(EAvatarCoreAIState::Error);
} }
UMCPBaseManager* UAIBaseManager::GetMCPManager()
{
return MCPManager;
}
// MCP Event Handler Implementations // MCP Event Handler Implementations
void UAIBaseManager::OnMCPLogReceived(const FString& LogMessage) void UAIBaseManager::OnMCPLogReceived(const FString& LogMessage)
{ {

5
Unreal/Plugins/AvatarCore_AI/Source/AvatarCore_AI/Public/AIBaseManager.h

@ -17,6 +17,7 @@ DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOnAIError, FString, ErrorMessage,
DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FMulticastDelegateRealtimeAPIAudioChunk, const TArray<uint8>, PCMData, bool, IsFinal); DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FMulticastDelegateRealtimeAPIAudioChunk, const TArray<uint8>, PCMData, bool, IsFinal);
DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOnAIDelayedAnswer); DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOnAIDelayedAnswer);
class UMCPManager;
UCLASS(Abstract, Blueprintable, BlueprintType) UCLASS(Abstract, Blueprintable, BlueprintType)
class AVATARCORE_AI_API UAIBaseManager : public UObject class AVATARCORE_AI_API UAIBaseManager : public UObject
@ -154,6 +155,10 @@ public:
UFUNCTION() UFUNCTION()
void OnRequestTimeout(); void OnRequestTimeout();
// Add a command at runtime (handles AddToRoot)
UFUNCTION(BlueprintCallable, Category = "AvatarCoreAI|MCP")
UMCPBaseManager* GetMCPManager();
// Add a command at runtime (handles AddToRoot) // Add a command at runtime (handles AddToRoot)
UFUNCTION(BlueprintCallable, Category = "AvatarCoreAI|MCP Commands") UFUNCTION(BlueprintCallable, Category = "AvatarCoreAI|MCP Commands")
void AddUnrealCommand(UMCPUnrealCommand* Command); void AddUnrealCommand(UMCPUnrealCommand* Command);

12
Unreal/Plugins/AvatarCore_AI/Source/AvatarCore_AI/Public/RealtimeAPI/AvatarCoreAIRealtime.h

@ -95,22 +95,22 @@ struct FOpenAIRateLimit
GENERATED_USTRUCT_BODY() GENERATED_USTRUCT_BODY()
UPROPERTY(EditAnywhere, BlueprintReadWrite) UPROPERTY(EditAnywhere, BlueprintReadWrite)
int32 requestsLimit; int32 requestsLimit = 0;
UPROPERTY(EditAnywhere, BlueprintReadWrite) UPROPERTY(EditAnywhere, BlueprintReadWrite)
int32 requestsRemaining; int32 requestsRemaining = 0;
UPROPERTY(EditAnywhere, BlueprintReadWrite) UPROPERTY(EditAnywhere, BlueprintReadWrite)
int32 requestsResetTimeRemaining; int32 requestsResetTimeRemaining = 0;
UPROPERTY(EditAnywhere, BlueprintReadWrite) UPROPERTY(EditAnywhere, BlueprintReadWrite)
int32 tokensLimit; int32 tokensLimit = 0;
UPROPERTY(EditAnywhere, BlueprintReadWrite) UPROPERTY(EditAnywhere, BlueprintReadWrite)
int32 tokensRemaining; int32 tokensRemaining = 0;
UPROPERTY(EditAnywhere, BlueprintReadWrite) UPROPERTY(EditAnywhere, BlueprintReadWrite)
int32 tokensResetTimeRemaining; int32 tokensResetTimeRemaining = 0;
}; };
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FMulticastDelegateRealtimeAPIMessageReceived, FString, ReceivedMessage); DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FMulticastDelegateRealtimeAPIMessageReceived, FString, ReceivedMessage);

54
Unreal/Plugins/AvatarCore_AI/Source/ThirdParty/MCPServer/FastMCP/AddDocumentsToDatabase.py

@ -1,10 +1,20 @@
# setup_db.py # setup_db.py
import os import os
import re
from document_vectordb import DocumentVectorDB from document_vectordb import DocumentVectorDB
from colorama import Fore
def _sanitize_table_name(name: str) -> str:
name = name.strip().lower()
name = re.sub(r'[^a-z0-9]+', '_', name)
name = name.strip('_')
if not name:
return "documents"
return name
def setup_database(): def setup_database():
print("Initializing database...") print(Fore.GREEN + "Initializing database...")
db = DocumentVectorDB() db = DocumentVectorDB()
db.create_table() db.create_table()
@ -15,30 +25,44 @@ def setup_database():
if not os.path.exists(document_add_folder): if not os.path.exists(document_add_folder):
os.makedirs(document_add_folder) os.makedirs(document_add_folder)
print(f"Created {document_add_folder} directory. Please add your PDF/text files there.") print(Fore.GREEN + f"Created {document_add_folder} directory. Please add your PDF/text files there.")
return return
if not os.path.exists(document_added_folder): if not os.path.exists(document_added_folder):
os.makedirs(document_added_folder) os.makedirs(document_added_folder)
files_added = 0 files_added = 0
for filename in os.listdir(document_add_folder): for root, dirs, files in os.walk(document_add_folder):
if filename.endswith(('.pdf', '.txt')): rel_root = os.path.relpath(root, document_add_folder)
file_path = os.path.join(document_add_folder, filename) if rel_root == ".":
copy_file_path = os.path.join(document_added_folder, filename) current_table = "documents"
print(f"Adding {filename}...") else:
try: first_folder = rel_root.split(os.sep)[0]
db.add_document(file_path) current_table = _sanitize_table_name(first_folder)
files_added += 1 for filename in files:
os.rename(file_path, copy_file_path) if filename.endswith(('.pdf', '.txt')):
except Exception as e: file_path = os.path.join(root, filename)
print(f"Error adding {filename}: {e}") if rel_root == ".":
target_root = document_added_folder
else:
target_root = os.path.join(document_added_folder, rel_root)
if not os.path.exists(target_root):
os.makedirs(target_root)
copy_file_path = os.path.join(target_root, filename)
print(Fore.GREEN +f"Adding {file_path} to table {current_table}...")
try:
db.add_document(file_path, table_name=current_table)
files_added += 1
os.rename(file_path, copy_file_path)
except Exception as e:
print(Fore.RED + f"Error adding {file_path}: {e}")
db.finalize_db() db.finalize_db()
print(f"Database setup complete! Added {files_added} documents.") print(Fore.GREEN + f"Database setup complete! Added {files_added} documents.")
# Show stats # Show stats
stats = db.get_stats() stats = db.get_stats()
print(f"Database stats: {stats}") print(Fore.GREEN + f"Database stats: {stats}")
if __name__ == "__main__": if __name__ == "__main__":
setup_database() setup_database()

12
Unreal/Plugins/AvatarCore_AI/Source/ThirdParty/MCPServer/FastMCP/FastMCPServer.py

@ -2,6 +2,8 @@ from fastmcp import FastMCP
from typing import List, Dict, Any from typing import List, Dict, Any
from document_vectordb import DocumentVectorDB from document_vectordb import DocumentVectorDB
import json import json
import re
mcp = FastMCP("AvatarCoreMCP_1_0", stateless_http=True) mcp = FastMCP("AvatarCoreMCP_1_0", stateless_http=True)
@ -10,10 +12,14 @@ db = DocumentVectorDB()
db.create_table() db.create_table()
@mcp.tool() @mcp.tool()
def search_information_in_database(query: str) -> List[Dict[str, Any]]: def search_information(query: str) -> List[Dict[str, Any]]:
"""If you need more information search this database.""" """If you need more information about search this database."""
try: try:
results = db.search(query, 10, True, 48, 12) #Boolean for Cuda based ReRanking query = re.sub('Green Hydrogen Hub Stuttgart', '', query)
query = re.sub('Green Hydrogen Hub', '', query)
query = re.sub('GHH', '', query)
print(query)
results = db.search(query, 3,"documents", True, 48, 12) #Boolean for Cuda based ReRanking
return results return results
except Exception as e: except Exception as e:
return [{"error": f"Search failed: {str(e)}"}] return [{"error": f"Search failed: {str(e)}"}]

8
Unreal/Plugins/AvatarCore_AI/Source/ThirdParty/MCPServer/FastMCP/TestSearchDatabase.py

@ -2,11 +2,15 @@ from document_vectordb import DocumentVectorDB
import traceback import traceback
import time import time
table = "documents"
def DoSearch(): def DoSearch():
global table
print("-------------------------", flush=True) print("-------------------------", flush=True)
print(f'Which table to search? (empty for {table})', flush=True)
table = input() or table
print('What do you wanna search?', flush=True) print('What do you wanna search?', flush=True)
query = input() query = input()
#query = "Usability 101"
if query == "": if query == "":
exit(); exit();
@ -14,7 +18,7 @@ def DoSearch():
try: try:
start_time = time.time() start_time = time.time()
print("Calling db.search...", flush=True) print("Calling db.search...", flush=True)
results = db.search(query, limit=10, rerank=True, candidates=48, batch_size=12) results = db.search(query, limit=3, table_name=table, rerank=True, candidates=48, batch_size=12)
print(f"db.search returned list of length: {len(results) if results is not None else 'None'}", flush=True) print(f"db.search returned list of length: {len(results) if results is not None else 'None'}", flush=True)
except Exception as e: except Exception as e:
print("Search raised an exception:", flush=True) print("Search raised an exception:", flush=True)

3
Unreal/Plugins/AvatarCore_AI/Source/ThirdParty/MCPServer/FastMCP/WipeDatabase.bat

@ -1,7 +1,8 @@
@echo off @echo off
cd /d "%~dp0" cd /d "%~dp0"
robocopy documents_added documents_to_add /MOV robocopy documents_added documents_to_add /MOV /S
rmdir /S /Q lancedb rmdir /S /Q lancedb
rmdir /S /Q documents_added
echo ----------------------------------------- echo -----------------------------------------
echo Farewall, my old friend! echo Farewall, my old friend!
echo ----------------------------------------- echo -----------------------------------------

229
Unreal/Plugins/AvatarCore_AI/Source/ThirdParty/MCPServer/FastMCP/document_vectordb.py

@ -2,10 +2,13 @@ import lancedb
import pandas as pd import pandas as pd
from sentence_transformers import SentenceTransformer from sentence_transformers import SentenceTransformer
from sentence_transformers import CrossEncoder from sentence_transformers import CrossEncoder
import PyPDF2 from pdfminer.high_level import extract_text
from langchain_text_splitters import RecursiveCharacterTextSplitter
import pyarrow as pa import pyarrow as pa
import os import os
import torch import torch
import time
from colorama import Fore
from typing import List, Dict from typing import List, Dict
import re import re
from hashlib import sha1 from hashlib import sha1
@ -14,11 +17,17 @@ class DocumentVectorDB:
def __init__(self, db_path: str = "./lancedb"): def __init__(self, db_path: str = "./lancedb"):
self.db = lancedb.connect(db_path) self.db = lancedb.connect(db_path)
# Model will be initialized in create_table() based on table vector dimension # Model will be initialized in create_table() based on table vector dimension
#Debug Variables
self.start_time = None
self.end_time = None
self.model = None self.model = None
self.model_dim = None self.model_dim = None
self.model_name = None self.model_name = None
self.table_name = "documents" self.table_name = "documents"
self.reranker = None # lazy self.reranker = None
self._load_reranker()
def _load_reranker(self, model_name: str = "cross-encoder/ms-marco-MiniLM-L-6-v2"): def _load_reranker(self, model_name: str = "cross-encoder/ms-marco-MiniLM-L-6-v2"):
if self.reranker is None: if self.reranker is None:
@ -63,17 +72,11 @@ class DocumentVectorDB:
# Default if undetectable # Default if undetectable
return 384 return 384
def create_table(self): def _ensure_table(self, table_name: str):
# Create table schema if getattr(self, "table", None) is not None and self.table_name == table_name and self.model is not None:
schema = { return
"id": str, self.table_name = table_name
"content": str, if table_name not in self.db.table_names():
"source": str,
"vector": list
}
# Create empty table if it doesn't exist
if self.table_name not in self.db.table_names():
# Initialize a default 384-d model for a fresh table # Initialize a default 384-d model for a fresh table
self._load_model_for_dim(384) self._load_model_for_dim(384)
emb_dim = self.model.get_sentence_embedding_dimension() emb_dim = self.model.get_sentence_embedding_dimension()
@ -86,61 +89,95 @@ class DocumentVectorDB:
"doc_id": "sample.txt", "doc_id": "sample.txt",
"chunk_index": 0 "chunk_index": 0
}]) }])
self.table = self.db.create_table(self.table_name, sample_data) self.table = self.db.create_table(table_name, sample_data)
# Delete the sample data # Delete the sample data
self.table.delete("id = 'sample'") self.table.delete("id = 'sample'")
else: else:
self.table = self.db.open_table(self.table_name) self.table = self.db.open_table(table_name)
# Infer vector dimension from existing table and load matching model # Infer vector dimension from existing table and load matching model
dim = self._infer_table_vector_dim() dim = self._infer_table_vector_dim()
self._load_model_for_dim(dim) self._load_model_for_dim(dim)
def create_table(self, table_name: str = "documents"):
# Create table schema
schema = {
"id": str,
"content": str,
"source": str,
"vector": list
}
self._ensure_table(table_name)
def _create_index_for_current_table(self):
try:
row_count = self.table.count_rows()
except Exception:
row_count = 0
if row_count < 100:
return
if row_count < 1000:
num_partitions = 1
num_sub_vectors = 8
elif row_count < 10000:
num_partitions = 8
num_sub_vectors = 16
elif row_count < 100000:
num_partitions = 32
num_sub_vectors = 64
else:
num_partitions = 90
num_sub_vectors = 96
try:
self.table.create_index(
vector_column_name="vector",
index_type="IVF_PQ",
metric="cosine",
num_partitions=num_partitions,
num_sub_vectors=num_sub_vectors
)
except Exception:
pass
def clean_extracted_text(self, text: str) -> str:
"""
Cleans up common PDF extraction artifacts:
1. Removes line-break hyphens.
2. Replaces excessive whitespace and newlines.
"""
text = re.sub(r'([a-z])-(\n\s*)(\n?)', r'\1', text, flags=re.IGNORECASE)
text = re.sub(r'\s+', ' ', text).strip()
return text
def extract_text_from_pdf(self, pdf_path: str) -> str: def extract_text_from_pdf(self, pdf_path: str) -> str:
text = "" text = ""
with open(pdf_path, 'rb') as file: # pdfminer.six is often more tolerant of broken PDF structure
pdf_reader = PyPDF2.PdfReader(file) try:
for page in pdf_reader.pages: text = self.clean_extracted_text(extract_text(pdf_path))
text += page.extract_text() or "" return text
return text except Exception as e:
print(f"pdfminer.six failed on {pdf_path}: {e}")
return "" # Or try pypdf as a fallback here
def chunk_text(self, text: str, chunk_size: int = 512, overlap: int = 50) -> List[str]:
# Use characters (tokens) for chunking, not just words
splitter = RecursiveCharacterTextSplitter(
chunk_size=512, # Set chunk size to token/char count, not word count
chunk_overlap=50,
length_function=len, # Use character length
separators=["\n\n", "\n", ". ", " ", ""] # Hierarchical splitting
)
# The splitters are highly optimized and handle the logic efficiently
chunks = splitter.split_text(text)
return chunks
def chunk_text(self, text: str, chunk_size: int = 150, overlap: int = 25) -> List[str]: def add_document(self, file_path: str, doc_type: str = "auto", table_name: str = "documents"):
sentences = re.split(r'(?<=[\.\!\?])\s+', text.strip()) if text else []
chunks = []
current = []
current_len = 0
for s in sentences:
w = s.split()
if current_len + len(w) > chunk_size and current:
chunks.append(' '.join(current))
if overlap > 0 and chunks:
back = []
words_acc = 0
for sent in reversed(current):
ws = sent.split()
if words_acc + len(ws) > overlap:
break
back.insert(0, sent)
words_acc += len(ws)
current = back
current_len = sum(len(x.split()) for x in current)
else:
current = []
current_len = 0
current.append(s)
current_len += len(w)
if current:
chunks.append(' '.join(current))
return [c for c in chunks if c.strip()]
def add_document(self, file_path: str, doc_type: str = "auto"):
# Ensure model is initialized (in case add_document is used without create_table()) # Ensure model is initialized (in case add_document is used without create_table())
if self.model is None: self._ensure_table(table_name)
if self.table_name in self.db.table_names():
self.table = self.db.open_table(self.table_name)
dim = self._infer_table_vector_dim()
self._load_model_for_dim(dim)
else:
self._load_model_for_dim(384)
# Extract text based on file type # Extract text based on file type
if doc_type == "auto": if doc_type == "auto":
@ -155,6 +192,9 @@ class DocumentVectorDB:
# Chunk the text # Chunk the text
chunks = self.chunk_text(text) chunks = self.chunk_text(text)
print(Fore.GREEN + f"{len(chunks)} chunks added.")
print(Fore.BLUE + chunks[0])
# Create embeddings and store # Create embeddings and store
data_to_add = [] data_to_add = []
if chunks: if chunks:
@ -166,6 +206,8 @@ class DocumentVectorDB:
) )
base = os.path.basename(file_path) base = os.path.basename(file_path)
for i, (chunk, emb) in enumerate(zip(chunks, embeddings)): for i, (chunk, emb) in enumerate(zip(chunks, embeddings)):
if len(chunk) < 1:
continue
did = sha1(f"{base}|{i}|{len(chunk)}".encode("utf-8")).hexdigest()[:16] did = sha1(f"{base}|{i}|{len(chunk)}".encode("utf-8")).hexdigest()[:16]
doc_data = { doc_data = {
"id": did, "id": did,
@ -181,30 +223,21 @@ class DocumentVectorDB:
if data_to_add: if data_to_add:
df = pd.DataFrame(data_to_add) df = pd.DataFrame(data_to_add)
self.table.add(df) self.table.add(df)
try: self._create_index_for_current_table()
self.table.create_index(metric="cosine", num_partitions=90, num_sub_vectors=96)
except Exception:
pass
def finalize_db(self): def finalize_db(self):
self.table.create_index( self._create_index_for_current_table()
vector_column_name="vector", # or your actual vector column name
index_type="IVF_PQ",
metric="cosine",
num_partitions=90, # tune by data size
num_sub_vectors=96 # tune by recall/latency
)
def search(self, query: str, limit: int = 5, rerank: bool = False, candidates: int = 100, batch_size: int = 64) -> List[Dict]: def DebugTimeIt(self, TimedLabel=""):
# Ensure model is initialized if self.start_time is not None:
if self.model is None: self.end_time = time.time()
if self.table_name in self.db.table_names(): elapsed_time = self.end_time - self.start_time
self.table = self.db.open_table(self.table_name) print(f"{TimedLabel}: Elapsed time {elapsed_time}")
dim = self._infer_table_vector_dim() self.start_time = time.time()
self._load_model_for_dim(dim)
else:
self._load_model_for_dim(384)
def search(self, query: str, limit: int = 5, table_name: str = "documents", rerank: bool = False, candidates: int = 100, batch_size: int = 64) -> List[Dict]:
# Ensure model is initialized
self._ensure_table(table_name)
query_embedding = self.model.encode(query, normalize_embeddings=True).tolist() query_embedding = self.model.encode(query, normalize_embeddings=True).tolist()
if rerank: if rerank:
@ -217,6 +250,7 @@ class DocumentVectorDB:
.limit(candidates) .limit(candidates)
.to_pandas() .to_pandas()
) )
if raw is None or raw.empty: if raw is None or raw.empty:
return [] return []
@ -288,15 +322,46 @@ class DocumentVectorDB:
def get_stats(self) -> Dict: def get_stats(self) -> Dict:
try: try:
count = self.table.count_rows() tables_info = []
table_names = list(self.db.table_names())
old_table = getattr(self, "table", None)
old_table_name = getattr(self, "table_name", None)
for name in table_names:
try:
tbl = self.db.open_table(name)
self.table = tbl
self.table_name = name
count = tbl.count_rows()
vector_dim = self._infer_table_vector_dim()
tables_info.append({
"table_name": name,
"total_chunks": count,
"vector_dim": vector_dim,
})
except Exception as inner_e:
tables_info.append({
"table_name": name,
"error": str(inner_e),
})
if old_table is not None:
self.table = old_table
if old_table_name is not None:
self.table_name = old_table_name
return { return {
"lancedb_version": lancedb.__version__, "lancedb_version": lancedb.__version__,
"pyarrow_version": pa.__version__, "pyarrow_version": pa.__version__,
"torch_version": torch.__version__, "torch_version": torch.__version__,
"total_chunks": count, "tables": tables_info,
"table_name": self.table_name,
"model": self.model_name,
"vector_dim": self.model_dim,
} }
except Exception as e: except Exception as e:
return {"error": str(e)} return {"error": str(e)}
def get_tables(self) -> List[str]:
try:
return list(self.db.table_names())
except Exception:
return []

BIN
Unreal/Plugins/AvatarCore_AI/Source/ThirdParty/MCPServer/FastMCP/lancedb/documents.lance/_transactions/0-7032d51b-cf75-439d-b546-8a49bd9f7c9c.txn

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_AI/Source/ThirdParty/MCPServer/FastMCP/lancedb/documents.lance/_transactions/1-e4aac62e-df93-4f1b-a546-43a8516937ae.txn

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_AI/Source/ThirdParty/MCPServer/FastMCP/lancedb/documents.lance/_versions/1.manifest

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_AI/Source/ThirdParty/MCPServer/FastMCP/lancedb/documents.lance/_versions/2.manifest

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_AI/Source/ThirdParty/MCPServer/FastMCP/lancedb/documents.lance/data/3e53aab5-bc5c-4db7-9f2c-31cdd3423b52.lance

Binary file not shown.

3
Unreal/Plugins/AvatarCore_AI/Source/ThirdParty/MCPServer/FastMCP/requirements.txt

@ -8,7 +8,7 @@ fastmcp==2.10.6
lancedb==0.25.3 lancedb==0.25.3
pandas==2.3.1 pandas==2.3.1
sentence-transformers==5.1.0 sentence-transformers==5.1.0
PyPDF2==3.0.1 pdfminer.six==20251107
torch==2.9.0+cu128 torch==2.9.0+cu128
transformers==4.55.0 transformers==4.55.0
huggingface-hub==0.34.4 huggingface-hub==0.34.4
@ -28,4 +28,5 @@ httpx==0.28.1
httpx-sse==0.4.1 httpx-sse==0.4.1
pydantic==2.11.7 pydantic==2.11.7
pydantic-settings==2.10.1 pydantic-settings==2.10.1
langchain-text-splitters==1.0.0
PyYAML==6.0.2 PyYAML==6.0.2

BIN
Unreal/Plugins/AvatarCore_Manager/Content/AvatarCoreLogging.uasset

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_Manager/Content/AvatarCoreManager.uasset

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_Manager/Content/PlaceableCamera_BP.uasset

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_Manager/Content/S_AvatarCoreSettings.uasset

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/BFL_ProjectHelper.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/BP_StateManager.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/S_StateProcedure.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/S_WidgetConfigs.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_Manager/Content/StateManagement/W_BaseWidget.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_Manager/Content/UnrealCommands/AICommand_CurrentTime.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_Manager/Content/Widgets/Debug/Pages/W_DebugAvatarCoreAI.uasset

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_Manager/Content/Widgets/Debug/Pages/W_DebugAvatarCoreAnimation.uasset

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_Manager/Content/Widgets/Debug/Pages/W_DebugAvatarCoreSTT.uasset

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_Manager/Content/Widgets/Debug/Pages/W_DebugAvatarCoreStat.uasset

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_Manager/Content/Widgets/Debug/Pages/W_DebugAvatarCoreTTS.uasset

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_Manager/Content/Widgets/Debug/Pages/W_DebugProjectStates.uasset (Stored with Git LFS)

Binary file not shown.

6
Unreal/Plugins/AvatarCore_Manager/Source/AvatarCore_Manager/AvatarCore_Manager.Build.cs

@ -25,7 +25,8 @@ public class AvatarCore_Manager : ModuleRules
PublicDependencyModuleNames.AddRange( PublicDependencyModuleNames.AddRange(
new string[] new string[]
{ {
"Core" "Core",
"GameplayTags"
// ... add other public dependencies that you statically link with here ... // ... add other public dependencies that you statically link with here ...
} }
); );
@ -40,7 +41,8 @@ public class AvatarCore_Manager : ModuleRules
"SlateCore", "SlateCore",
"AvatarCore_TTS", "AvatarCore_TTS",
"AvatarCore_STT", "AvatarCore_STT",
"AvatarCore_AI" "AvatarCore_AI",
"DeveloperSettings"
// ... add private dependencies that you statically link with here ... // ... add private dependencies that you statically link with here ...
} }
); );

9
Unreal/Plugins/AvatarCore_Manager/Source/AvatarCore_Manager/Private/AvatarCoreSettings.cpp

@ -0,0 +1,9 @@
// Fill out your copyright notice in the Description page of Project Settings.
#include "AvatarCoreSettings.h"
UAvatarCoreSettings::UAvatarCoreSettings(const FObjectInitializer& ObjectInitializer)
{
}

11
Unreal/Plugins/AvatarCore_Manager/Source/AvatarCore_Manager/Private/AvatarCore_Manager.cpp

@ -1,5 +1,7 @@
// Copyright Epic Games, Inc. All Rights Reserved. // Copyright Epic Games, Inc. All Rights Reserved.
#include "AvatarCoreSettings.h"
#include "Developer/Settings/Public/ISettingsModule.h"
#include "AvatarCore_Manager.h" #include "AvatarCore_Manager.h"
#define LOCTEXT_NAMESPACE "FAvatarCore_ManagerModule" #define LOCTEXT_NAMESPACE "FAvatarCore_ManagerModule"
@ -7,6 +9,15 @@
void FAvatarCore_ManagerModule::StartupModule() void FAvatarCore_ManagerModule::StartupModule()
{ {
// This code will execute after your module is loaded into memory; the exact timing is specified in the .uplugin file per-module // This code will execute after your module is loaded into memory; the exact timing is specified in the .uplugin file per-module
ISettingsModule* SettingsModule = FModuleManager::GetModulePtr<ISettingsModule>("Settings");
if (SettingsModule)
{
SettingsModule->RegisterSettings("Project", "Plugins", "Avatar Core Manager",
LOCTEXT("RuntimeSettingsName", "AvatarCoreManager"),
LOCTEXT("RuntimeSettingsDescription", "Configure the Avatar Core Manager plug-in"),
GetMutableDefault<UAvatarCoreSettings>()
);
}
} }
void FAvatarCore_ManagerModule::ShutdownModule() void FAvatarCore_ManagerModule::ShutdownModule()

23
Unreal/Plugins/AvatarCore_Manager/Source/AvatarCore_Manager/Public/AvatarCoreSettings.h

@ -0,0 +1,23 @@
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "UObject/NoExportTypes.h"
#include "GameplayTagContainer.h"
#include "AvatarCoreSettings.generated.h"
/**
*
*/
UCLASS(config = Engine, defaultconfig)
class AVATARCORE_MANAGER_API UAvatarCoreSettings : public UDeveloperSettings
{
GENERATED_BODY()
public:
explicit UAvatarCoreSettings(const FObjectInitializer& ObjectInitializer);
UPROPERTY(Config, EditAnywhere, Category = "AvatarCoreSettings", meta = (ConfigRestartRequired = true, ToolTip = "All available states of this project."))
TArray<FGameplayTag> States;
};

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/AnimBPs/AvatarCore_AnimInst_Body.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/AnimBPs/AvatarCore_AnimInst_BodyRetarget.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/AnimBPs/AvatarCore_AnimInst_Face.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/AnimBPs/Curves/CF_AvatarCore_Animation_LookAt_Macro_Strength.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/AnimBPs/Curves/CF_AvatarCore_Animation_LookAt_Micro_Timer.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/AnimBPs/Curves/CF_AvatarCore_Animation_PupilConstriction.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/AnimBPs/Interface/BI_AvatarAnimBP.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/AnimationConfigs/AnimationConfig.uasset

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/AnimationConfigs/AnimationConfig_Base.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/DefaultIdle/AS_M_Idle_Breath_2_Looped.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/DefaultIdle/M_Idle_Breath_2_Looped.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Idle/AS_LL_JG_01_Idle_02_adjusted.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Idle/AS_LL_JG_01_Idle_03_adjusted.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Idle/AS_LL_JG_01_Idle_04_adjusted.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Idle/AS_LL_JG_01_Idle_06_adjusted.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Idle/AS_LL_JG_01_Idle_09_adjusted.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Idle/AS_LL_JG_01_Idle_16.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Idle/AS_LL_JG_01_Idle_23_adjusted.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Idle/AS_LL_JG_01_Idle_25_adjusted.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Idle/M_Idle_Head_eyes_1.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Idle/M_Idle_breath_2.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Idle/M_Idle_cross_arms_long.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Idle/M_Listening_Smiling_02.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Listening/AS_LL_JG_01_Listening_02_adjusted.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Listening/AS_LL_JG_01_Listening_03_adjusted.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Listening/AS_LL_JG_01_Listening_04_adjusted.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Listening/AS_LL_JG_01_Listening_05_adjusted.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Listening/AS_LL_JG_01_Listening_06_adjusted.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Listening/AS_LL_JG_01_Listening_09_adjusted.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Listening/AS_LL_JG_01_Listening_15_adjusted.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Listening/AS_LL_JG_01_Listening_16_adjusted.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Listening/AS_LL_JG_01_Listening_17_adjusted.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Listening/M_Listening_Nod.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Listening/M_Listening_Smiling_02.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Listening/M_Listening_Surprise.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Talking/AS_LL_JG_02_Talking_01.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Talking/AS_LL_JG_02_Talking_02.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Talking/AS_LL_JG_02_Talking_03.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Talking/AS_LL_JG_02_Talking_04.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Talking/AS_LL_JG_02_Talking_05_01_adjusted.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Talking/AS_LL_JG_02_Talking_05_02_adjusted.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Talking/AS_LL_JG_02_Talking_06.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Talking/AS_MC_Tim_01_Take01_Anim01_Cascadeur.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Talking/AS_MC_Tim_01_Take01_Anim02_Cascadeur.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Talking/AS_MC_Tim_01_Take01_Anim03_Cascadeur.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Talking/AS_MC_Tim_01_Take01_Anim04_Cascadeur.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Talking/AS_MC_Tim_01_Take02_Anim01_Cascadeur.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Talking/AS_MC_Tim_01_Take02_Anim02_Cascadeur.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Talking/AS_MC_Tim_01_Take02_Anim03_Cascadeur.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Talking/AS_MC_Tim_01_Take02_Anim04_Cascadeur.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Talking/AS_MC_Tim_01_Take03_Anim01_Cascadeur.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Talking/AS_MC_Tim_01_Take03_Anim02_Cascadeur.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Talking/AS_MC_Tim_01_Take03_Anim03_Cascadeur.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Thinking/AS_LL_JG_01_Thinking_01_adjusted.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Thinking/AS_LL_JG_01_Thinking_02_adjusted.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Thinking/AS_LL_JG_01_Thinking_03_adjusted.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Thinking/AS_LL_JG_01_Thinking_04_adjusted.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Thinking/AS_LL_JG_01_Thinking_05_adjusted.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Thinking/AS_LL_JG_01_Thinking_06_adjusted.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Thinking/AS_LL_JG_01_Thinking_07_adjusted.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Thinking/AS_LL_JG_01_Thinking_08_adjusted.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Thinking/AS_LL_JG_01_Thinking_09_adjusted.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Thinking/AS_LL_JG_01_Thinking_10_adjusted.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Thinking/AS_LL_JG_01_Thinking_11_adjusted.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Unreal/Plugins/AvatarCore_MetaHuman/Content/Animation/Animations/Thinking/AS_LL_JG_01_Thinking_12_adjusted.uasset (Stored with Git LFS)

Binary file not shown.

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save