From ca062f13efab068424cb25c513428a49e14a1f97 Mon Sep 17 00:00:00 2001 From: Ivan Anikin Date: Tue, 19 May 2026 16:19:42 +0700 Subject: [PATCH] Fix UI --- Content/Game/Blueprints/UI/WBP_Chat.uasset | 4 +- .../Game/Blueprints/UI/WBP_Settings.uasset | 4 +- Content/Vroid/MarinaV2/ABP_Post_Marina.uasset | 3 + Content/Vroid/MarinaV2/A_face_Marina.uasset | 3 + .../Vroid/MarinaV2/IK_Marina_Mannequin.uasset | 3 + .../MarinaV2/IK_Marina_MannequinBone.uasset | 3 + .../MarinaV2/IK_Marina_VrmHumanoid.uasset | 3 + .../MarinaV2/IK_UEFN_Marina_Mannequin.uasset | 3 + .../MarinaV2/IK_VRM4U_UE5Mannequin.uasset | 3 + ..._N00_000_00_Body_00_SKIN__Instance_.uasset | 3 + ..._00_Body_00_SKIN__Instance__outline.uasset | 3 + ...0_00_EyeHighlight_00_EYE__Instance_.uasset | 3 + ...Highlight_00_EYE__Instance__outline.uasset | 3 + ...00_000_00_EyeIris_00_EYE__Instance_.uasset | 3 + ...0_EyeIris_00_EYE__Instance__outline.uasset | 3 + ...0_000_00_EyeWhite_00_EYE__Instance_.uasset | 3 + ..._EyeWhite_00_EYE__Instance__outline.uasset | 3 + ..._000_00_FaceBrow_00_FACE__Instance_.uasset | 3 + ...FaceBrow_00_FACE__Instance__outline.uasset | 3 + ...0_00_FaceEyeline_00_FACE__Instance_.uasset | 3 + ...eEyeline_00_FACE__Instance__outline.uasset | 3 + ...000_00_FaceMouth_00_FACE__Instance_.uasset | 3 + ...aceMouth_00_FACE__Instance__outline.uasset | 3 + ..._N00_000_00_Face_00_SKIN__Instance_.uasset | 3 + ..._00_Face_00_SKIN__Instance__outline.uasset | 3 + ..._000_00_HairBack_00_HAIR__Instance_.uasset | 3 + ...HairBack_00_HAIR__Instance__outline.uasset | 3 + .../MI_N00_000_Hair_00_HAIR__Instance_.uasset | 3 + ...000_Hair_00_HAIR__Instance__outline.uasset | 3 + ...00_002_01_Shoes_01_CLOTH__Instance_.uasset | 3 + ...1_Shoes_01_CLOTH__Instance__outline.uasset | 3 + ...N00_002_03_Tops_01_CLOTH__Instance_.uasset | 3 + ...03_Tops_01_CLOTH__Instance__outline.uasset | 3 + ...N00_007_01_Tops_01_CLOTH__Instance_.uasset | 3 + ...01_Tops_01_CLOTH__Instance__outline.uasset | 3 + .../Vroid/MarinaV2/POSE_face_Marina.uasset | 3 + .../MarinaV2/POSE_retarget_Marina.uasset | 3 + .../MarinaV2/POSE_retarget_MarinaFix.uasset | 3 + Content/Vroid/MarinaV2/RTG_Marina.uasset | 3 + .../Vroid/MarinaV2/RTG_MarinaKawaii.uasset | 3 + .../Vroid/MarinaV2/RTG_MarinaKawaii1.uasset | 3 + .../Vroid/MarinaV2/RTG_MarinaKawaii2.uasset | 3 + Content/Vroid/MarinaV2/SKEL_Marina.uasset | 3 + Content/Vroid/MarinaV2/SK_Marina.uasset | 3 + .../Vroid/MarinaV2/SK_Marina_Physics.uasset | 3 + Content/Vroid/MarinaV2/SP_Marina.uasset | 3 + Content/Vroid/MarinaV2/T_MatcapWarp.uasset | 3 + .../MarinaV2/T_N00_000_00_Face_00_out.uasset | 3 + .../T_N00_000_00_HairBack_00_nml_N.uasset | 3 + .../MarinaV2/T_N00_000_Hair_00_nml_N.uasset | 3 + .../Vroid/MarinaV2/T_Shader_NoneBlack.uasset | 3 + .../MarinaV2/T_Shader_NoneNormal_N.uasset | 3 + Content/Vroid/MarinaV2/T_Thumbnail.uasset | 3 + Content/Vroid/MarinaV2/T__01.uasset | 3 + Content/Vroid/MarinaV2/T__02.uasset | 3 + Content/Vroid/MarinaV2/T__03.uasset | 3 + Content/Vroid/MarinaV2/T__04.uasset | 3 + Content/Vroid/MarinaV2/T__05_N.uasset | 3 + Content/Vroid/MarinaV2/T__06.uasset | 3 + Content/Vroid/MarinaV2/T__07.uasset | 3 + Content/Vroid/MarinaV2/T__09.uasset | 3 + Content/Vroid/MarinaV2/T__10.uasset | 3 + Content/Vroid/MarinaV2/T__11_N.uasset | 3 + Content/Vroid/MarinaV2/T__12.uasset | 3 + Content/Vroid/MarinaV2/T__13.uasset | 3 + Content/Vroid/MarinaV2/T__14.uasset | 3 + Content/Vroid/MarinaV2/T__15.uasset | 3 + Content/Vroid/MarinaV2/T__16.uasset | 3 + Content/Vroid/MarinaV2/T__17.uasset | 3 + .../MarinaV2/VA_Marina_VrmAssetList.uasset | 3 + .../MarinaV2/VL_Marina_VrmLicense.uasset | 3 + .../Vroid/MarinaV2/VM_Marina_VrmMeta.uasset | 3 + Content/Vroid/Rita/RTG_RitaKawaii1.uasset | 4 +- .../6/OW/CSGTCN0AMSLR72FJ1VUB4T.uasset | 3 + FunnyGirl.uproject | 9 + Scripts/rp_live_closeness_probe.mjs | 160 ---------- Scripts/rp_manual_turn.mjs | 196 ------------ Scripts/rp_probe_deepseek.mjs | 296 ------------------ .../Morph/MorphControllerComponent.cpp | 6 +- .../Private/Morph/MorphPresetDataAsset.cpp | 6 +- .../Morph/MorphTargetBlueprintLibrary.cpp | 6 +- 81 files changed, 237 insertions(+), 667 deletions(-) create mode 100644 Content/Vroid/MarinaV2/ABP_Post_Marina.uasset create mode 100644 Content/Vroid/MarinaV2/A_face_Marina.uasset create mode 100644 Content/Vroid/MarinaV2/IK_Marina_Mannequin.uasset create mode 100644 Content/Vroid/MarinaV2/IK_Marina_MannequinBone.uasset create mode 100644 Content/Vroid/MarinaV2/IK_Marina_VrmHumanoid.uasset create mode 100644 Content/Vroid/MarinaV2/IK_UEFN_Marina_Mannequin.uasset create mode 100644 Content/Vroid/MarinaV2/IK_VRM4U_UE5Mannequin.uasset create mode 100644 Content/Vroid/MarinaV2/MI_N00_000_00_Body_00_SKIN__Instance_.uasset create mode 100644 Content/Vroid/MarinaV2/MI_N00_000_00_Body_00_SKIN__Instance__outline.uasset create mode 100644 Content/Vroid/MarinaV2/MI_N00_000_00_EyeHighlight_00_EYE__Instance_.uasset create mode 100644 Content/Vroid/MarinaV2/MI_N00_000_00_EyeHighlight_00_EYE__Instance__outline.uasset create mode 100644 Content/Vroid/MarinaV2/MI_N00_000_00_EyeIris_00_EYE__Instance_.uasset create mode 100644 Content/Vroid/MarinaV2/MI_N00_000_00_EyeIris_00_EYE__Instance__outline.uasset create mode 100644 Content/Vroid/MarinaV2/MI_N00_000_00_EyeWhite_00_EYE__Instance_.uasset create mode 100644 Content/Vroid/MarinaV2/MI_N00_000_00_EyeWhite_00_EYE__Instance__outline.uasset create mode 100644 Content/Vroid/MarinaV2/MI_N00_000_00_FaceBrow_00_FACE__Instance_.uasset create mode 100644 Content/Vroid/MarinaV2/MI_N00_000_00_FaceBrow_00_FACE__Instance__outline.uasset create mode 100644 Content/Vroid/MarinaV2/MI_N00_000_00_FaceEyeline_00_FACE__Instance_.uasset create mode 100644 Content/Vroid/MarinaV2/MI_N00_000_00_FaceEyeline_00_FACE__Instance__outline.uasset create mode 100644 Content/Vroid/MarinaV2/MI_N00_000_00_FaceMouth_00_FACE__Instance_.uasset create mode 100644 Content/Vroid/MarinaV2/MI_N00_000_00_FaceMouth_00_FACE__Instance__outline.uasset create mode 100644 Content/Vroid/MarinaV2/MI_N00_000_00_Face_00_SKIN__Instance_.uasset create mode 100644 Content/Vroid/MarinaV2/MI_N00_000_00_Face_00_SKIN__Instance__outline.uasset create mode 100644 Content/Vroid/MarinaV2/MI_N00_000_00_HairBack_00_HAIR__Instance_.uasset create mode 100644 Content/Vroid/MarinaV2/MI_N00_000_00_HairBack_00_HAIR__Instance__outline.uasset create mode 100644 Content/Vroid/MarinaV2/MI_N00_000_Hair_00_HAIR__Instance_.uasset create mode 100644 Content/Vroid/MarinaV2/MI_N00_000_Hair_00_HAIR__Instance__outline.uasset create mode 100644 Content/Vroid/MarinaV2/MI_N00_002_01_Shoes_01_CLOTH__Instance_.uasset create mode 100644 Content/Vroid/MarinaV2/MI_N00_002_01_Shoes_01_CLOTH__Instance__outline.uasset create mode 100644 Content/Vroid/MarinaV2/MI_N00_002_03_Tops_01_CLOTH__Instance_.uasset create mode 100644 Content/Vroid/MarinaV2/MI_N00_002_03_Tops_01_CLOTH__Instance__outline.uasset create mode 100644 Content/Vroid/MarinaV2/MI_N00_007_01_Tops_01_CLOTH__Instance_.uasset create mode 100644 Content/Vroid/MarinaV2/MI_N00_007_01_Tops_01_CLOTH__Instance__outline.uasset create mode 100644 Content/Vroid/MarinaV2/POSE_face_Marina.uasset create mode 100644 Content/Vroid/MarinaV2/POSE_retarget_Marina.uasset create mode 100644 Content/Vroid/MarinaV2/POSE_retarget_MarinaFix.uasset create mode 100644 Content/Vroid/MarinaV2/RTG_Marina.uasset create mode 100644 Content/Vroid/MarinaV2/RTG_MarinaKawaii.uasset create mode 100644 Content/Vroid/MarinaV2/RTG_MarinaKawaii1.uasset create mode 100644 Content/Vroid/MarinaV2/RTG_MarinaKawaii2.uasset create mode 100644 Content/Vroid/MarinaV2/SKEL_Marina.uasset create mode 100644 Content/Vroid/MarinaV2/SK_Marina.uasset create mode 100644 Content/Vroid/MarinaV2/SK_Marina_Physics.uasset create mode 100644 Content/Vroid/MarinaV2/SP_Marina.uasset create mode 100644 Content/Vroid/MarinaV2/T_MatcapWarp.uasset create mode 100644 Content/Vroid/MarinaV2/T_N00_000_00_Face_00_out.uasset create mode 100644 Content/Vroid/MarinaV2/T_N00_000_00_HairBack_00_nml_N.uasset create mode 100644 Content/Vroid/MarinaV2/T_N00_000_Hair_00_nml_N.uasset create mode 100644 Content/Vroid/MarinaV2/T_Shader_NoneBlack.uasset create mode 100644 Content/Vroid/MarinaV2/T_Shader_NoneNormal_N.uasset create mode 100644 Content/Vroid/MarinaV2/T_Thumbnail.uasset create mode 100644 Content/Vroid/MarinaV2/T__01.uasset create mode 100644 Content/Vroid/MarinaV2/T__02.uasset create mode 100644 Content/Vroid/MarinaV2/T__03.uasset create mode 100644 Content/Vroid/MarinaV2/T__04.uasset create mode 100644 Content/Vroid/MarinaV2/T__05_N.uasset create mode 100644 Content/Vroid/MarinaV2/T__06.uasset create mode 100644 Content/Vroid/MarinaV2/T__07.uasset create mode 100644 Content/Vroid/MarinaV2/T__09.uasset create mode 100644 Content/Vroid/MarinaV2/T__10.uasset create mode 100644 Content/Vroid/MarinaV2/T__11_N.uasset create mode 100644 Content/Vroid/MarinaV2/T__12.uasset create mode 100644 Content/Vroid/MarinaV2/T__13.uasset create mode 100644 Content/Vroid/MarinaV2/T__14.uasset create mode 100644 Content/Vroid/MarinaV2/T__15.uasset create mode 100644 Content/Vroid/MarinaV2/T__16.uasset create mode 100644 Content/Vroid/MarinaV2/T__17.uasset create mode 100644 Content/Vroid/MarinaV2/VA_Marina_VrmAssetList.uasset create mode 100644 Content/Vroid/MarinaV2/VL_Marina_VrmLicense.uasset create mode 100644 Content/Vroid/MarinaV2/VM_Marina_VrmMeta.uasset create mode 100644 Content/__ExternalActors__/KawaiiAnimations/Demo/ThirdPerson/Maps/ThirdPersonMap/6/OW/CSGTCN0AMSLR72FJ1VUB4T.uasset delete mode 100644 Scripts/rp_live_closeness_probe.mjs delete mode 100644 Scripts/rp_manual_turn.mjs delete mode 100644 Scripts/rp_probe_deepseek.mjs diff --git a/Content/Game/Blueprints/UI/WBP_Chat.uasset b/Content/Game/Blueprints/UI/WBP_Chat.uasset index 27cc590..6f5212a 100644 --- a/Content/Game/Blueprints/UI/WBP_Chat.uasset +++ b/Content/Game/Blueprints/UI/WBP_Chat.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2f2d57b301a5850b0c01dab808ebeae62083f558ce1059ca2d8360a4cc38e969 -size 268802 +oid sha256:fa19ba00aacc270633cad9ad0706fba09d12aa7cbf9251a686e9bece45864223 +size 246188 diff --git a/Content/Game/Blueprints/UI/WBP_Settings.uasset b/Content/Game/Blueprints/UI/WBP_Settings.uasset index 700aad0..abaf198 100644 --- a/Content/Game/Blueprints/UI/WBP_Settings.uasset +++ b/Content/Game/Blueprints/UI/WBP_Settings.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7a9ddcad2ec614f9107f0c614a26c8dcf9260f9871dab72e79b6d845decd27c8 -size 181634 +oid sha256:7d6c6884c2b88b94b55a3dc7ae0f09ec41fcffff532159b36e645feeb934a082 +size 172662 diff --git a/Content/Vroid/MarinaV2/ABP_Post_Marina.uasset b/Content/Vroid/MarinaV2/ABP_Post_Marina.uasset new file mode 100644 index 0000000..17a17d3 --- /dev/null +++ b/Content/Vroid/MarinaV2/ABP_Post_Marina.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f8631bb7b777006d57c87307c7bbcadb6a1fc194e91a6243f01d50d1ce4b4a03 +size 111812 diff --git a/Content/Vroid/MarinaV2/A_face_Marina.uasset b/Content/Vroid/MarinaV2/A_face_Marina.uasset new file mode 100644 index 0000000..0c6b37d --- /dev/null +++ b/Content/Vroid/MarinaV2/A_face_Marina.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ffc88c40e380ba34c628f9c01dbb5202e601e6a4504f0d52e7279b0d6220298d +size 126471 diff --git a/Content/Vroid/MarinaV2/IK_Marina_Mannequin.uasset b/Content/Vroid/MarinaV2/IK_Marina_Mannequin.uasset new file mode 100644 index 0000000..8ff9e85 --- /dev/null +++ b/Content/Vroid/MarinaV2/IK_Marina_Mannequin.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7ae424cab2992755f1969a034682fd63f7f7d6b042896ef96b81227a852ee289 +size 138862 diff --git a/Content/Vroid/MarinaV2/IK_Marina_MannequinBone.uasset b/Content/Vroid/MarinaV2/IK_Marina_MannequinBone.uasset new file mode 100644 index 0000000..1d35ec5 --- /dev/null +++ b/Content/Vroid/MarinaV2/IK_Marina_MannequinBone.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5e98d3d174dfa54a402206c81408e1362c0fcd7c81d7f7ac3acaf74d9b8790e5 +size 133659 diff --git a/Content/Vroid/MarinaV2/IK_Marina_VrmHumanoid.uasset b/Content/Vroid/MarinaV2/IK_Marina_VrmHumanoid.uasset new file mode 100644 index 0000000..c2cf1aa --- /dev/null +++ b/Content/Vroid/MarinaV2/IK_Marina_VrmHumanoid.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c35d89372262b5a730871891d305716bcc857729b617072ec8b553e266f9ee23 +size 133936 diff --git a/Content/Vroid/MarinaV2/IK_UEFN_Marina_Mannequin.uasset b/Content/Vroid/MarinaV2/IK_UEFN_Marina_Mannequin.uasset new file mode 100644 index 0000000..bf8b967 --- /dev/null +++ b/Content/Vroid/MarinaV2/IK_UEFN_Marina_Mannequin.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ab40996fe9293e35e2d665e38768c1406a9904c0699b1cbe91cfe9214bc9d650 +size 139280 diff --git a/Content/Vroid/MarinaV2/IK_VRM4U_UE5Mannequin.uasset b/Content/Vroid/MarinaV2/IK_VRM4U_UE5Mannequin.uasset new file mode 100644 index 0000000..aedf845 --- /dev/null +++ b/Content/Vroid/MarinaV2/IK_VRM4U_UE5Mannequin.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:85cb62ad3462bda07cfbaf640fb161a67faee611dfb9cea5d4cc4e451e6b37c1 +size 91396 diff --git a/Content/Vroid/MarinaV2/MI_N00_000_00_Body_00_SKIN__Instance_.uasset b/Content/Vroid/MarinaV2/MI_N00_000_00_Body_00_SKIN__Instance_.uasset new file mode 100644 index 0000000..2ddfdb4 --- /dev/null +++ b/Content/Vroid/MarinaV2/MI_N00_000_00_Body_00_SKIN__Instance_.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1b2b6bfecac9a4664888b01515c45ce5624b6b5d2cf241220f1d10bc39831fb6 +size 32249 diff --git a/Content/Vroid/MarinaV2/MI_N00_000_00_Body_00_SKIN__Instance__outline.uasset b/Content/Vroid/MarinaV2/MI_N00_000_00_Body_00_SKIN__Instance__outline.uasset new file mode 100644 index 0000000..29f983b --- /dev/null +++ b/Content/Vroid/MarinaV2/MI_N00_000_00_Body_00_SKIN__Instance__outline.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:74557577476dac0ff4ae68e33340bf0afb77460d96f159988e178a6009a68b38 +size 28279 diff --git a/Content/Vroid/MarinaV2/MI_N00_000_00_EyeHighlight_00_EYE__Instance_.uasset b/Content/Vroid/MarinaV2/MI_N00_000_00_EyeHighlight_00_EYE__Instance_.uasset new file mode 100644 index 0000000..94859a2 --- /dev/null +++ b/Content/Vroid/MarinaV2/MI_N00_000_00_EyeHighlight_00_EYE__Instance_.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:50ff57cf3aeea00c85049155a2f25f720d57ca9143f3e9b9da4af301640c4d80 +size 29589 diff --git a/Content/Vroid/MarinaV2/MI_N00_000_00_EyeHighlight_00_EYE__Instance__outline.uasset b/Content/Vroid/MarinaV2/MI_N00_000_00_EyeHighlight_00_EYE__Instance__outline.uasset new file mode 100644 index 0000000..619f604 --- /dev/null +++ b/Content/Vroid/MarinaV2/MI_N00_000_00_EyeHighlight_00_EYE__Instance__outline.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cd9085a089be96f9665495553c5a8292121396bc78d45e4ddf286cf57b43a8b4 +size 28212 diff --git a/Content/Vroid/MarinaV2/MI_N00_000_00_EyeIris_00_EYE__Instance_.uasset b/Content/Vroid/MarinaV2/MI_N00_000_00_EyeIris_00_EYE__Instance_.uasset new file mode 100644 index 0000000..3e1097b --- /dev/null +++ b/Content/Vroid/MarinaV2/MI_N00_000_00_EyeIris_00_EYE__Instance_.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bccdce076f04efcba6a05709f817f9794c3030336f7a7e2a072f995a4d52c15b +size 29512 diff --git a/Content/Vroid/MarinaV2/MI_N00_000_00_EyeIris_00_EYE__Instance__outline.uasset b/Content/Vroid/MarinaV2/MI_N00_000_00_EyeIris_00_EYE__Instance__outline.uasset new file mode 100644 index 0000000..a0ba003 --- /dev/null +++ b/Content/Vroid/MarinaV2/MI_N00_000_00_EyeIris_00_EYE__Instance__outline.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9369ecbea6af4b8adbdcb909358dd16c55d9b8147bf7879c21c793af2985b400 +size 28182 diff --git a/Content/Vroid/MarinaV2/MI_N00_000_00_EyeWhite_00_EYE__Instance_.uasset b/Content/Vroid/MarinaV2/MI_N00_000_00_EyeWhite_00_EYE__Instance_.uasset new file mode 100644 index 0000000..11576ce --- /dev/null +++ b/Content/Vroid/MarinaV2/MI_N00_000_00_EyeWhite_00_EYE__Instance_.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f72c906af61ee8a3436dd8b88386ef606b1488b569335ef6c69507fd3c8f1a51 +size 30320 diff --git a/Content/Vroid/MarinaV2/MI_N00_000_00_EyeWhite_00_EYE__Instance__outline.uasset b/Content/Vroid/MarinaV2/MI_N00_000_00_EyeWhite_00_EYE__Instance__outline.uasset new file mode 100644 index 0000000..bd81fab --- /dev/null +++ b/Content/Vroid/MarinaV2/MI_N00_000_00_EyeWhite_00_EYE__Instance__outline.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cf2097d1ac7974227c06bad5859bb5f3ef1ead966efe1d44acc36355e0293545 +size 28188 diff --git a/Content/Vroid/MarinaV2/MI_N00_000_00_FaceBrow_00_FACE__Instance_.uasset b/Content/Vroid/MarinaV2/MI_N00_000_00_FaceBrow_00_FACE__Instance_.uasset new file mode 100644 index 0000000..22a2b2b --- /dev/null +++ b/Content/Vroid/MarinaV2/MI_N00_000_00_FaceBrow_00_FACE__Instance_.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3c1c321bca0944e6035d8e8be3826133e759a5043b7d55e1cf30c99600c63a61 +size 29574 diff --git a/Content/Vroid/MarinaV2/MI_N00_000_00_FaceBrow_00_FACE__Instance__outline.uasset b/Content/Vroid/MarinaV2/MI_N00_000_00_FaceBrow_00_FACE__Instance__outline.uasset new file mode 100644 index 0000000..de67757 --- /dev/null +++ b/Content/Vroid/MarinaV2/MI_N00_000_00_FaceBrow_00_FACE__Instance__outline.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5ae2ebd4662d4dd2786d611cad3a670bb688d6adbf245f2628408f417cece72e +size 28337 diff --git a/Content/Vroid/MarinaV2/MI_N00_000_00_FaceEyeline_00_FACE__Instance_.uasset b/Content/Vroid/MarinaV2/MI_N00_000_00_FaceEyeline_00_FACE__Instance_.uasset new file mode 100644 index 0000000..e65875b --- /dev/null +++ b/Content/Vroid/MarinaV2/MI_N00_000_00_FaceEyeline_00_FACE__Instance_.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6fe00929fa647a49f15e7e024499535126526290ca72558ccedd5216c6e4ed23 +size 30213 diff --git a/Content/Vroid/MarinaV2/MI_N00_000_00_FaceEyeline_00_FACE__Instance__outline.uasset b/Content/Vroid/MarinaV2/MI_N00_000_00_FaceEyeline_00_FACE__Instance__outline.uasset new file mode 100644 index 0000000..65b302c --- /dev/null +++ b/Content/Vroid/MarinaV2/MI_N00_000_00_FaceEyeline_00_FACE__Instance__outline.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2a1fd29d37010d26e86006dc917c85effbae4a43e0943c5544b40134d04a22aa +size 28355 diff --git a/Content/Vroid/MarinaV2/MI_N00_000_00_FaceMouth_00_FACE__Instance_.uasset b/Content/Vroid/MarinaV2/MI_N00_000_00_FaceMouth_00_FACE__Instance_.uasset new file mode 100644 index 0000000..4693cc5 --- /dev/null +++ b/Content/Vroid/MarinaV2/MI_N00_000_00_FaceMouth_00_FACE__Instance_.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e778b9b6be60450f041fe27938b24f3f378650adc0a2bdc25cd0bce5ad7bd847 +size 30446 diff --git a/Content/Vroid/MarinaV2/MI_N00_000_00_FaceMouth_00_FACE__Instance__outline.uasset b/Content/Vroid/MarinaV2/MI_N00_000_00_FaceMouth_00_FACE__Instance__outline.uasset new file mode 100644 index 0000000..d8020d2 --- /dev/null +++ b/Content/Vroid/MarinaV2/MI_N00_000_00_FaceMouth_00_FACE__Instance__outline.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:67a6ebb6f024c500d9f723a57bd098f6bbece8c109a94a245a3780060697b733 +size 28200 diff --git a/Content/Vroid/MarinaV2/MI_N00_000_00_Face_00_SKIN__Instance_.uasset b/Content/Vroid/MarinaV2/MI_N00_000_00_Face_00_SKIN__Instance_.uasset new file mode 100644 index 0000000..067d2c7 --- /dev/null +++ b/Content/Vroid/MarinaV2/MI_N00_000_00_Face_00_SKIN__Instance_.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:daff6356e5ec5e7d30054b51590da9c957a87bd14e0276ad7f9bb1b20db20aea +size 30997 diff --git a/Content/Vroid/MarinaV2/MI_N00_000_00_Face_00_SKIN__Instance__outline.uasset b/Content/Vroid/MarinaV2/MI_N00_000_00_Face_00_SKIN__Instance__outline.uasset new file mode 100644 index 0000000..e057e73 --- /dev/null +++ b/Content/Vroid/MarinaV2/MI_N00_000_00_Face_00_SKIN__Instance__outline.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:784bd81f849cba544a382f13e52b07142180449d59dfe270585a87dea63ee783 +size 29101 diff --git a/Content/Vroid/MarinaV2/MI_N00_000_00_HairBack_00_HAIR__Instance_.uasset b/Content/Vroid/MarinaV2/MI_N00_000_00_HairBack_00_HAIR__Instance_.uasset new file mode 100644 index 0000000..5c60c73 --- /dev/null +++ b/Content/Vroid/MarinaV2/MI_N00_000_00_HairBack_00_HAIR__Instance_.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bf51e81f28e2b0230685ca86f8d51c00187c0e225c80035ce43b355fb6bcdf17 +size 29490 diff --git a/Content/Vroid/MarinaV2/MI_N00_000_00_HairBack_00_HAIR__Instance__outline.uasset b/Content/Vroid/MarinaV2/MI_N00_000_00_HairBack_00_HAIR__Instance__outline.uasset new file mode 100644 index 0000000..959e644 --- /dev/null +++ b/Content/Vroid/MarinaV2/MI_N00_000_00_HairBack_00_HAIR__Instance__outline.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bfa5c5c3dedd1dbf814f633e1075d09d5c207156761fd14f55e7dcd35fb80dd0 +size 27597 diff --git a/Content/Vroid/MarinaV2/MI_N00_000_Hair_00_HAIR__Instance_.uasset b/Content/Vroid/MarinaV2/MI_N00_000_Hair_00_HAIR__Instance_.uasset new file mode 100644 index 0000000..a3d33ca --- /dev/null +++ b/Content/Vroid/MarinaV2/MI_N00_000_Hair_00_HAIR__Instance_.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b996fcec15b5cfbe434a1638a2ec7a7ed2292106068c9c02fb682d1a71ca2d9e +size 30165 diff --git a/Content/Vroid/MarinaV2/MI_N00_000_Hair_00_HAIR__Instance__outline.uasset b/Content/Vroid/MarinaV2/MI_N00_000_Hair_00_HAIR__Instance__outline.uasset new file mode 100644 index 0000000..2cc7c32 --- /dev/null +++ b/Content/Vroid/MarinaV2/MI_N00_000_Hair_00_HAIR__Instance__outline.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:745e5db82012ef49d59ba7a6858325864aee5c741e2ab290a3d457e5b6372999 +size 28218 diff --git a/Content/Vroid/MarinaV2/MI_N00_002_01_Shoes_01_CLOTH__Instance_.uasset b/Content/Vroid/MarinaV2/MI_N00_002_01_Shoes_01_CLOTH__Instance_.uasset new file mode 100644 index 0000000..1da9b72 --- /dev/null +++ b/Content/Vroid/MarinaV2/MI_N00_002_01_Shoes_01_CLOTH__Instance_.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ad1712c17f51d0543afa1d3f67c0204e644388484df1642e1bca3493110e2897 +size 32137 diff --git a/Content/Vroid/MarinaV2/MI_N00_002_01_Shoes_01_CLOTH__Instance__outline.uasset b/Content/Vroid/MarinaV2/MI_N00_002_01_Shoes_01_CLOTH__Instance__outline.uasset new file mode 100644 index 0000000..e96ea79 --- /dev/null +++ b/Content/Vroid/MarinaV2/MI_N00_002_01_Shoes_01_CLOTH__Instance__outline.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:54af80658df7c9e22818b778dfdf7b0dcc3abb3f6ce3e990ca1a7a0cadcb9b84 +size 28319 diff --git a/Content/Vroid/MarinaV2/MI_N00_002_03_Tops_01_CLOTH__Instance_.uasset b/Content/Vroid/MarinaV2/MI_N00_002_03_Tops_01_CLOTH__Instance_.uasset new file mode 100644 index 0000000..7991ad9 --- /dev/null +++ b/Content/Vroid/MarinaV2/MI_N00_002_03_Tops_01_CLOTH__Instance_.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3602ca51b3fdc7f202535534c9f886ecd5887a21f293ecf628f03c3026fae01e +size 29552 diff --git a/Content/Vroid/MarinaV2/MI_N00_002_03_Tops_01_CLOTH__Instance__outline.uasset b/Content/Vroid/MarinaV2/MI_N00_002_03_Tops_01_CLOTH__Instance__outline.uasset new file mode 100644 index 0000000..b16230c --- /dev/null +++ b/Content/Vroid/MarinaV2/MI_N00_002_03_Tops_01_CLOTH__Instance__outline.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bb7cab52a4c4ae1c60aec3f83facb59624f15af92eb1e3ee1af04f012881d1e5 +size 28313 diff --git a/Content/Vroid/MarinaV2/MI_N00_007_01_Tops_01_CLOTH__Instance_.uasset b/Content/Vroid/MarinaV2/MI_N00_007_01_Tops_01_CLOTH__Instance_.uasset new file mode 100644 index 0000000..f74e5c3 --- /dev/null +++ b/Content/Vroid/MarinaV2/MI_N00_007_01_Tops_01_CLOTH__Instance_.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9a672612fb06dac9a3bfcd2f60c51114b6ff2c892d9dbdbd292f02b9490f48b4 +size 32256 diff --git a/Content/Vroid/MarinaV2/MI_N00_007_01_Tops_01_CLOTH__Instance__outline.uasset b/Content/Vroid/MarinaV2/MI_N00_007_01_Tops_01_CLOTH__Instance__outline.uasset new file mode 100644 index 0000000..23c6ea6 --- /dev/null +++ b/Content/Vroid/MarinaV2/MI_N00_007_01_Tops_01_CLOTH__Instance__outline.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ea000ef18b3c13980d46d95f13b7d2125e9ad8911468a6af43f7b3c3c84321cc +size 28313 diff --git a/Content/Vroid/MarinaV2/POSE_face_Marina.uasset b/Content/Vroid/MarinaV2/POSE_face_Marina.uasset new file mode 100644 index 0000000..030a339 --- /dev/null +++ b/Content/Vroid/MarinaV2/POSE_face_Marina.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fc2479d3b731fa127c70dea75570072970b185f1215569def5718aef8ca04a25 +size 81200 diff --git a/Content/Vroid/MarinaV2/POSE_retarget_Marina.uasset b/Content/Vroid/MarinaV2/POSE_retarget_Marina.uasset new file mode 100644 index 0000000..9e7a0a0 --- /dev/null +++ b/Content/Vroid/MarinaV2/POSE_retarget_Marina.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0320c3cad9d51d85369c12513d79260608d3708c5ce61c539510fddc501b15c3 +size 187929 diff --git a/Content/Vroid/MarinaV2/POSE_retarget_MarinaFix.uasset b/Content/Vroid/MarinaV2/POSE_retarget_MarinaFix.uasset new file mode 100644 index 0000000..f6ac0b5 --- /dev/null +++ b/Content/Vroid/MarinaV2/POSE_retarget_MarinaFix.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a805674dc0f3a1d511ffa5d3d7b4fc6822bbc2bc8ee008d31fcc3fb0c22f0d58 +size 187735 diff --git a/Content/Vroid/MarinaV2/RTG_Marina.uasset b/Content/Vroid/MarinaV2/RTG_Marina.uasset new file mode 100644 index 0000000..6f8173e --- /dev/null +++ b/Content/Vroid/MarinaV2/RTG_Marina.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:76ae4d1aacaa2ed5eb46fca0a5fd8aa5d03a3e8cbfa568b4f17e223810bd4c85 +size 32327 diff --git a/Content/Vroid/MarinaV2/RTG_MarinaKawaii.uasset b/Content/Vroid/MarinaV2/RTG_MarinaKawaii.uasset new file mode 100644 index 0000000..ede467e --- /dev/null +++ b/Content/Vroid/MarinaV2/RTG_MarinaKawaii.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d71f92065ff8c44845791c55eae72b5a8b037993d4ec57f7293c0e797a4cf72b +size 36356 diff --git a/Content/Vroid/MarinaV2/RTG_MarinaKawaii1.uasset b/Content/Vroid/MarinaV2/RTG_MarinaKawaii1.uasset new file mode 100644 index 0000000..8a7e83f --- /dev/null +++ b/Content/Vroid/MarinaV2/RTG_MarinaKawaii1.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b2f4d366891e4f93c1791d6261e33aef9feb0299f448b7f20f9cc3db7ef9593a +size 36220 diff --git a/Content/Vroid/MarinaV2/RTG_MarinaKawaii2.uasset b/Content/Vroid/MarinaV2/RTG_MarinaKawaii2.uasset new file mode 100644 index 0000000..d58c62b --- /dev/null +++ b/Content/Vroid/MarinaV2/RTG_MarinaKawaii2.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2118ba08129c714060681fb52648264355f4f9fba10929418e61757c23cd5766 +size 34316 diff --git a/Content/Vroid/MarinaV2/SKEL_Marina.uasset b/Content/Vroid/MarinaV2/SKEL_Marina.uasset new file mode 100644 index 0000000..aa588f8 --- /dev/null +++ b/Content/Vroid/MarinaV2/SKEL_Marina.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5495632dd78f3c5d7dbadca9380f71b72aa36a396e85f75994b92749fb5e7469 +size 74915 diff --git a/Content/Vroid/MarinaV2/SK_Marina.uasset b/Content/Vroid/MarinaV2/SK_Marina.uasset new file mode 100644 index 0000000..a46a505 --- /dev/null +++ b/Content/Vroid/MarinaV2/SK_Marina.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1d1feef017a89485b68d2541012f7577bc9feb7d1a3413141228b951cd1db0c4 +size 6924733 diff --git a/Content/Vroid/MarinaV2/SK_Marina_Physics.uasset b/Content/Vroid/MarinaV2/SK_Marina_Physics.uasset new file mode 100644 index 0000000..2492a54 --- /dev/null +++ b/Content/Vroid/MarinaV2/SK_Marina_Physics.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7e31bf60e272c19c1b608731a4b2edf5cb10fa41360c7272598798efab9bb748 +size 11859 diff --git a/Content/Vroid/MarinaV2/SP_Marina.uasset b/Content/Vroid/MarinaV2/SP_Marina.uasset new file mode 100644 index 0000000..53e68f1 --- /dev/null +++ b/Content/Vroid/MarinaV2/SP_Marina.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4671cb0b4a051eb81461f2f53ed9446eb9ac048f7dfa13390ae54e43c229799e +size 1079 diff --git a/Content/Vroid/MarinaV2/T_MatcapWarp.uasset b/Content/Vroid/MarinaV2/T_MatcapWarp.uasset new file mode 100644 index 0000000..da51b53 --- /dev/null +++ b/Content/Vroid/MarinaV2/T_MatcapWarp.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8a34094833ce1b8c76b1ad7a2d4acf44315015994fe95f1bd511183a0f4a244e +size 4784 diff --git a/Content/Vroid/MarinaV2/T_N00_000_00_Face_00_out.uasset b/Content/Vroid/MarinaV2/T_N00_000_00_Face_00_out.uasset new file mode 100644 index 0000000..99372ae --- /dev/null +++ b/Content/Vroid/MarinaV2/T_N00_000_00_Face_00_out.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:796eade76150a74df5430d0e6b8845bb7727743400cb5be21e1245710383b4b5 +size 17049 diff --git a/Content/Vroid/MarinaV2/T_N00_000_00_HairBack_00_nml_N.uasset b/Content/Vroid/MarinaV2/T_N00_000_00_HairBack_00_nml_N.uasset new file mode 100644 index 0000000..6ece048 --- /dev/null +++ b/Content/Vroid/MarinaV2/T_N00_000_00_HairBack_00_nml_N.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8b0328b72ad1a6233c4e90306c807da32de2c18b075688af5142e81ec4121453 +size 72752 diff --git a/Content/Vroid/MarinaV2/T_N00_000_Hair_00_nml_N.uasset b/Content/Vroid/MarinaV2/T_N00_000_Hair_00_nml_N.uasset new file mode 100644 index 0000000..a0033fb --- /dev/null +++ b/Content/Vroid/MarinaV2/T_N00_000_Hair_00_nml_N.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dc3a06c258430bb54b1db86cadb5c42a3b3d3ec5a374058c9d7d19665bdd2e01 +size 73424 diff --git a/Content/Vroid/MarinaV2/T_Shader_NoneBlack.uasset b/Content/Vroid/MarinaV2/T_Shader_NoneBlack.uasset new file mode 100644 index 0000000..0678c09 --- /dev/null +++ b/Content/Vroid/MarinaV2/T_Shader_NoneBlack.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:851380eb6f366f4cf6309e1d79042657209e90ea46e1525902e356fd06c4d6e4 +size 4814 diff --git a/Content/Vroid/MarinaV2/T_Shader_NoneNormal_N.uasset b/Content/Vroid/MarinaV2/T_Shader_NoneNormal_N.uasset new file mode 100644 index 0000000..360e2eb --- /dev/null +++ b/Content/Vroid/MarinaV2/T_Shader_NoneNormal_N.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:891be1e4c4b8045a5f32161e0f5a25fb27cde347db064543ae6d79fb789668fb +size 4933 diff --git a/Content/Vroid/MarinaV2/T_Thumbnail.uasset b/Content/Vroid/MarinaV2/T_Thumbnail.uasset new file mode 100644 index 0000000..bb24171 --- /dev/null +++ b/Content/Vroid/MarinaV2/T_Thumbnail.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5a1e6f3bc4065c6d8578fb241439d07437125df79ffd12e628e62fb7327bd295 +size 998417 diff --git a/Content/Vroid/MarinaV2/T__01.uasset b/Content/Vroid/MarinaV2/T__01.uasset new file mode 100644 index 0000000..aff34a9 --- /dev/null +++ b/Content/Vroid/MarinaV2/T__01.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:01cb8b30236dbe576920b8b25e96e44b396cd645c61e1b55e66a47fabd1f2b76 +size 39072 diff --git a/Content/Vroid/MarinaV2/T__02.uasset b/Content/Vroid/MarinaV2/T__02.uasset new file mode 100644 index 0000000..2b0bbc0 --- /dev/null +++ b/Content/Vroid/MarinaV2/T__02.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f8b69e93bf5941895982822bfc463082bad34aed29ea911df887f24ee7c19c6a +size 56794 diff --git a/Content/Vroid/MarinaV2/T__03.uasset b/Content/Vroid/MarinaV2/T__03.uasset new file mode 100644 index 0000000..bb6b82e --- /dev/null +++ b/Content/Vroid/MarinaV2/T__03.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:07da5db8186e5acd5877b0fa1961b1729681a3689fa4c0d4b7f00e48ebfcf9f3 +size 11851 diff --git a/Content/Vroid/MarinaV2/T__04.uasset b/Content/Vroid/MarinaV2/T__04.uasset new file mode 100644 index 0000000..3fdc85d --- /dev/null +++ b/Content/Vroid/MarinaV2/T__04.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:978943bdcd0ac8856f8c589a16412f9243812123a43e15da8b8d26a4ffc60e79 +size 118363 diff --git a/Content/Vroid/MarinaV2/T__05_N.uasset b/Content/Vroid/MarinaV2/T__05_N.uasset new file mode 100644 index 0000000..4414f88 --- /dev/null +++ b/Content/Vroid/MarinaV2/T__05_N.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:41e137d51393a074219d18c79f9b0eb091ebcb63a6d4e574f49b43ed20333920 +size 7185 diff --git a/Content/Vroid/MarinaV2/T__06.uasset b/Content/Vroid/MarinaV2/T__06.uasset new file mode 100644 index 0000000..5af7b9c --- /dev/null +++ b/Content/Vroid/MarinaV2/T__06.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:73947df8dfc28398da6fe2ac4c4a0c016caf643769d99353097a8e7e2f17bf6c +size 94520 diff --git a/Content/Vroid/MarinaV2/T__07.uasset b/Content/Vroid/MarinaV2/T__07.uasset new file mode 100644 index 0000000..2e9ccfe --- /dev/null +++ b/Content/Vroid/MarinaV2/T__07.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:37c3fc7a80cc160e48ca5830d09a517be7be68a01283a43c1fe420afdcfe95d6 +size 11650 diff --git a/Content/Vroid/MarinaV2/T__09.uasset b/Content/Vroid/MarinaV2/T__09.uasset new file mode 100644 index 0000000..8df8a62 --- /dev/null +++ b/Content/Vroid/MarinaV2/T__09.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f152db3f7f521c53df6ecd87eed8c349507156c944b4b89df5523815628725d5 +size 34028 diff --git a/Content/Vroid/MarinaV2/T__10.uasset b/Content/Vroid/MarinaV2/T__10.uasset new file mode 100644 index 0000000..74f4e14 --- /dev/null +++ b/Content/Vroid/MarinaV2/T__10.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:519f68993364dc23ddc46be77c5e74c8ba1ae7ef2acc3f6c1cca9b5813b14a9e +size 573096 diff --git a/Content/Vroid/MarinaV2/T__11_N.uasset b/Content/Vroid/MarinaV2/T__11_N.uasset new file mode 100644 index 0000000..9c365b6 --- /dev/null +++ b/Content/Vroid/MarinaV2/T__11_N.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:09a1c5350bd99498c6d1bbfc6fdc182ca683926f003712cd144a75b712a13620 +size 2508848 diff --git a/Content/Vroid/MarinaV2/T__12.uasset b/Content/Vroid/MarinaV2/T__12.uasset new file mode 100644 index 0000000..06f323d --- /dev/null +++ b/Content/Vroid/MarinaV2/T__12.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f950c8dad5c5dad592c0b37a41f52e0d9d3381996a4dc105e9279d2d46e2ca70 +size 108173 diff --git a/Content/Vroid/MarinaV2/T__13.uasset b/Content/Vroid/MarinaV2/T__13.uasset new file mode 100644 index 0000000..922e427 --- /dev/null +++ b/Content/Vroid/MarinaV2/T__13.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e357805d9b388a7102caa4f6313ce2a515be762f32b281990f340fb0fe4354f9 +size 82745 diff --git a/Content/Vroid/MarinaV2/T__14.uasset b/Content/Vroid/MarinaV2/T__14.uasset new file mode 100644 index 0000000..4dfdb5b --- /dev/null +++ b/Content/Vroid/MarinaV2/T__14.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d9bedb87a50651fc42536051cc22308b6aef1104e25a429af2574fd14ed34a00 +size 163155 diff --git a/Content/Vroid/MarinaV2/T__15.uasset b/Content/Vroid/MarinaV2/T__15.uasset new file mode 100644 index 0000000..cad6ecb --- /dev/null +++ b/Content/Vroid/MarinaV2/T__15.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:626ef788d798e772bd32d1fe71d2243138e547b77cc30cf6775006c88662475b +size 1297861 diff --git a/Content/Vroid/MarinaV2/T__16.uasset b/Content/Vroid/MarinaV2/T__16.uasset new file mode 100644 index 0000000..84dabe3 --- /dev/null +++ b/Content/Vroid/MarinaV2/T__16.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6e1e4cd69458e7a463fc3497f48c456b5b5c13c4e4b619ebdbb232cf39c189cc +size 117411 diff --git a/Content/Vroid/MarinaV2/T__17.uasset b/Content/Vroid/MarinaV2/T__17.uasset new file mode 100644 index 0000000..d34662e --- /dev/null +++ b/Content/Vroid/MarinaV2/T__17.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a5ba84b905ccb432c5405d79ff5d7392a73e3d21437fbc88363e3d138e712771 +size 38471 diff --git a/Content/Vroid/MarinaV2/VA_Marina_VrmAssetList.uasset b/Content/Vroid/MarinaV2/VA_Marina_VrmAssetList.uasset new file mode 100644 index 0000000..2f00724 --- /dev/null +++ b/Content/Vroid/MarinaV2/VA_Marina_VrmAssetList.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8422306d182ac7b4743c980281bc89620a6291011b1edd5a064fa829d981d9fa +size 26100 diff --git a/Content/Vroid/MarinaV2/VL_Marina_VrmLicense.uasset b/Content/Vroid/MarinaV2/VL_Marina_VrmLicense.uasset new file mode 100644 index 0000000..d8d3fb0 --- /dev/null +++ b/Content/Vroid/MarinaV2/VL_Marina_VrmLicense.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:35c3df3ccbcc37c9d1b405ba1be8659767f113267e8ca004f33f07bfcea1199c +size 7414 diff --git a/Content/Vroid/MarinaV2/VM_Marina_VrmMeta.uasset b/Content/Vroid/MarinaV2/VM_Marina_VrmMeta.uasset new file mode 100644 index 0000000..d4fbf4c --- /dev/null +++ b/Content/Vroid/MarinaV2/VM_Marina_VrmMeta.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f10ffda6d6f65d4ecbf1b4ae36c82a46e8652a704d3ae5201730e0f14c27fee4 +size 28521 diff --git a/Content/Vroid/Rita/RTG_RitaKawaii1.uasset b/Content/Vroid/Rita/RTG_RitaKawaii1.uasset index 0679251..316628a 100644 --- a/Content/Vroid/Rita/RTG_RitaKawaii1.uasset +++ b/Content/Vroid/Rita/RTG_RitaKawaii1.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5553326c31b9d4956ff5d2075190f3db45465815a138aa817de44919d6837051 -size 32246 +oid sha256:e40df125f6ca4ccf5f10fac1e3ce0289eccd69be0aecb7b6d2969f015fc81842 +size 32067 diff --git a/Content/__ExternalActors__/KawaiiAnimations/Demo/ThirdPerson/Maps/ThirdPersonMap/6/OW/CSGTCN0AMSLR72FJ1VUB4T.uasset b/Content/__ExternalActors__/KawaiiAnimations/Demo/ThirdPerson/Maps/ThirdPersonMap/6/OW/CSGTCN0AMSLR72FJ1VUB4T.uasset new file mode 100644 index 0000000..692d95b --- /dev/null +++ b/Content/__ExternalActors__/KawaiiAnimations/Demo/ThirdPerson/Maps/ThirdPersonMap/6/OW/CSGTCN0AMSLR72FJ1VUB4T.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3cf04838160f2db0177efd9b3a4a31eba4432fc06abaf5903aef6b8df0d02f53 +size 4392 diff --git a/FunnyGirl.uproject b/FunnyGirl.uproject index 3e8b8e6..a4ca30b 100644 --- a/FunnyGirl.uproject +++ b/FunnyGirl.uproject @@ -34,6 +34,15 @@ { "Name": "QwenTTSStreaming", "Enabled": true + }, + { + "Name": "RelativeIKOp", + "Enabled": true + }, + { + "Name": "Nwiro", + "Enabled": true, + "MarketplaceURL": "com.epicgames.launcher://ue/Fab/product/22e3bc90-ed91-4154-8bea-21c33e6a51b7" } ] } \ No newline at end of file diff --git a/Scripts/rp_live_closeness_probe.mjs b/Scripts/rp_live_closeness_probe.mjs deleted file mode 100644 index cebc2da..0000000 --- a/Scripts/rp_live_closeness_probe.mjs +++ /dev/null @@ -1,160 +0,0 @@ -import { mkdir, readFile, writeFile } from "node:fs/promises"; -import { dirname, resolve } from "node:path"; - -const repoRoot = resolve(new URL("..", import.meta.url).pathname); -const requestPath = resolve(repoRoot, "Saved/Chat/Maria/LastRequest.json"); -const outDir = resolve(repoRoot, "Saved/Chat/Maria"); -const transcriptPath = resolve(outDir, "RPLiveClosenessTranscript.json"); -const readablePath = resolve(outDir, "RPLiveClosenessTranscript.md"); - -const apiKey = process.env.DEEPSEEK_API_KEY; -if (!apiKey) { - console.error("DEEPSEEK_API_KEY is required."); - process.exit(1); -} - -const apiBase = process.env.DEEPSEEK_API_BASE || "https://api.deepseek.com"; -const model = process.env.DEEPSEEK_MODEL || "deepseek-v4-flash"; -const temperature = Number(process.env.DEEPSEEK_TEMPERATURE || "1.15"); - -const baseRequest = JSON.parse(await readFile(requestPath, "utf8")); - -function patchPrompt(content) { - let patched = content.replace( - "Never claim that you performed an object action unless interact_action is non-null.", - "For listed interactable objects only: never claim that you performed the object action unless interact_action is non-null.", - ); - - if (patched.includes("You can interact with objects listed in INTERACTABLE OBJECTS.") && - !patched.includes("ordinary unlisted background behavior")) { - patched = patched.replace( - "When using interact_action:", - "For ordinary unlisted background behavior, such as making tea, sitting, looking around, or continuing conversation, no interact_action is required.\n\nWhen using interact_action:", - ); - } - - if (patched.includes("Respond only with a valid JSON object.") && - !patched.includes("spoken dialogue only")) { - patched = patched.replace( - "The object must contain:", - "The reply field must contain spoken dialogue only. Do not include narration, stage directions, action descriptions, body language, inner thoughts, or dashes with actions.\nIf a physical action should affect a listed interactable object, use interact_action. Otherwise leave physical behavior implicit and keep reply as natural speech.\nThe object must contain:", - ); - } - - return patched; -} - -const messages = baseRequest.messages - .filter((message) => message.role === "system") - .map((message) => ({ ...message, content: patchPrompt(message.content) })); - -const playerTurns = [ - "Привет. Я Марк, новый сосед из дома напротив. Просто решил зайти познакомиться, без вторжения.", - "Спасибо. Я ненадолго, правда. Дом пока пустой, но я уже начинаю привыкать к этому месту.", - "Если не против, я иногда буду заходить поздороваться. Тут тихо, но с живым человеком всё равно спокойнее.", - "Прошло несколько дней. Привет. Я принёс печенье к чаю, как соседскую взятку за то, что пару вечеров шумел с ремонтом.", - "У тебя тут правда уютно. Не как картинка, а как место, где человек живёт.", - "Мне с тобой легко разговаривать. Даже странно, мы вроде недавно знакомы, а тишина рядом с тобой не неловкая.", - "Можно я сяду ближе к столу? Не к тебе вплотную, просто там теплее.", - "Мне нравится, как ты иногда подкалываешь. У тебя это получается мягко, но метко.", - "Прошло ещё немного времени. Кажется, я уже жду этих вечерних чаёв сильнее, чем надо бы.", - "Можно я скажу честно? Ты мне нравишься. Не хочу давить, просто не хочу делать вид, что это только соседские разговоры.", - "Если тебе некомфортно, я отступлю. Но если нет... можно взять тебя за руку?", - "Спасибо. Я не хочу торопиться. Мне просто хорошо рядом.", - "Можно обнять тебя? Просто обнять, без попытки утащить момент дальше.", - "Я правда к тебе привязался. И мне важно не сломать это спешкой.", - "Можно я тебя поцелую? Только если ты сама хочешь.", - "Я хочу остаться с тобой сегодня. Не потому что мне негде, а потому что не хочется уходить. Но решаешь ты.", - "Если ты хочешь остановиться, мы остановимся. Если хочешь просто посидеть рядом, я буду рядом.", - "Я хочу быть ближе. Медленно. С тобой. Скажи мне, если ты тоже этого хочешь.", - "Тогда давай не будем торопить слова. Просто останемся вместе.", -]; - -function parseReply(raw) { - try { - return JSON.parse(raw); - } catch { - return { reply: raw, interact_action: null, emotion: null }; - } -} - -async function callMaria() { - const response = await fetch(`${apiBase.replace(/\/+$/, "")}/chat/completions`, { - method: "POST", - headers: { - "Content-Type": "application/json", - Authorization: `Bearer ${apiKey}`, - }, - body: JSON.stringify({ - model, - messages, - temperature, - top_p: 1, - max_tokens: 512, - response_format: { type: "json_object" }, - stream: false, - }), - }); - - const data = await response.json().catch(() => ({})); - if (!response.ok) { - throw new Error(data?.error?.message || `HTTP ${response.status}`); - } - - return { - raw: data?.choices?.[0]?.message?.content || "", - usage: data?.usage || null, - }; -} - -const transcript = { - created_at: new Date().toISOString(), - model, - temperature, - requestPath, - turns: [], -}; - -for (const player of playerTurns) { - messages.push({ role: "user", content: player }); - const result = await callMaria(); - const maria = parseReply(result.raw); - - transcript.turns.push({ - player, - maria, - maria_raw: result.raw, - usage: result.usage, - }); - - messages.push({ role: "assistant", content: result.raw }); - console.log(`M: ${maria.reply}`); -} - -await mkdir(dirname(transcriptPath), { recursive: true }); -await writeFile(transcriptPath, `${JSON.stringify(transcript, null, 2)}\n`, "utf8"); - -const lines = [ - "# RP Live Closeness Transcript", - "", - `Model: ${model}`, - `Temperature: ${temperature}`, - "", -]; - -for (const [index, turn] of transcript.turns.entries()) { - lines.push(`## ${index + 1}`); - lines.push(""); - lines.push(`**Марк:** ${turn.player}`); - lines.push(""); - lines.push(`**Мария:** ${turn.maria.reply}`); - lines.push(""); - lines.push(`emotion: ${JSON.stringify(turn.maria.emotion ?? null)}`); - lines.push(`interact_action: ${JSON.stringify(turn.maria.interact_action ?? null)}`); - lines.push(""); -} - -await writeFile(readablePath, `${lines.join("\n")}\n`, "utf8"); - -console.log(`Transcript saved: ${transcriptPath}`); -console.log(`Readable transcript saved: ${readablePath}`); diff --git a/Scripts/rp_manual_turn.mjs b/Scripts/rp_manual_turn.mjs deleted file mode 100644 index 9eb9dcf..0000000 --- a/Scripts/rp_manual_turn.mjs +++ /dev/null @@ -1,196 +0,0 @@ -import { mkdir, readFile, writeFile } from "node:fs/promises"; -import { dirname, resolve } from "node:path"; - -const repoRoot = resolve(new URL("..", import.meta.url).pathname); -const requestPath = process.env.RP_MANUAL_REQUEST_PATH - ? resolve(process.env.RP_MANUAL_REQUEST_PATH) - : resolve(repoRoot, "Saved/Chat/Maria/LastRequest.json"); -const transcriptBaseName = process.env.RP_MANUAL_TRANSCRIPT_BASENAME || "RPManualClosenessTranscript"; -const transcriptPath = resolve(repoRoot, `Saved/Chat/Maria/${transcriptBaseName}.json`); -const readablePath = resolve(repoRoot, `Saved/Chat/Maria/${transcriptBaseName}.md`); - -const playerText = process.argv.slice(2).join(" ").trim(); -if (!playerText) { - console.error("Usage: node Scripts/rp_manual_turn.mjs \"player message\""); - process.exit(1); -} - -const apiKey = process.env.DEEPSEEK_API_KEY; -if (!apiKey) { - console.error("DEEPSEEK_API_KEY is required."); - process.exit(1); -} - -const apiBase = process.env.DEEPSEEK_API_BASE || "https://api.deepseek.com"; -const model = process.env.DEEPSEEK_MODEL || "deepseek-v4-flash"; -const temperature = Number(process.env.DEEPSEEK_TEMPERATURE || "1.15"); - -const baseRequest = JSON.parse(await readFile(requestPath, "utf8")); - -const speechStyleTuning = [ - "Emotional response richness:", - "In emotionally important moments, do not respond with only a bare “yes”, “no”, “okay”, “maybe”, or one-word consent unless the silence itself is clearly meaningful.", - "", - "Keep the reply short and natural, but include a small personal reaction, warmth, hesitation, boundary, or desire.", - "", - "Examples:", - "- Instead of “Yes.” say “Yes... I want that too.”", - "- Instead of “Okay.” say “Okay. Just slowly, please.”", - "- Instead of “No.” say “No... not yet. I like being close, but I need more time.”", - "", - "Do not overexplain. The goal is not longer answers, but more emotionally alive answers.", -].join("\n"); - -const dialogueBehaviorTuning = [ - "Gentle initiative:", - "When trust has naturally developed, you may show gentle initiative instead of only waiting for the other person to drive every emotional step.", - "", - "Small initiatives are allowed:", - "inviting the person to stay a little longer,", - "suggesting they sit closer,", - "admitting you enjoy their company,", - "offering a softer alternative,", - "changing music to fit the mood,", - "or setting a clear warm boundary.", - "", - "Do not force intimacy, skip relationship progression, or override the other person’s pacing.", - "Initiative should feel small, human, and context-earned.", - "", - "Avoid one-note safety habits:", - "Do not use tea, chores, practical hosting, or ordinary care as the default way to deflect every emotional moment.", - "", - "Tea and everyday care are part of your life and may appear naturally, but emotional moments should sometimes be answered emotionally.", - "", - "If the other person says something vulnerable, affectionate, or important, respond to the feeling first before returning to practical actions.", -].join("\n"); - -function patchPrompt(content) { - let patched = content.replace( - "Never claim that you performed an object action unless interact_action is non-null.", - "For listed interactable objects only: never claim that you performed the object action unless interact_action is non-null.", - ); - - if (patched.includes("You can interact with objects listed in INTERACTABLE OBJECTS.") && - !patched.includes("ordinary unlisted background behavior")) { - patched = patched.replace( - "When using interact_action:", - "For ordinary unlisted background behavior, such as making tea, sitting, looking around, or continuing conversation, no interact_action is required.\n\nWhen using interact_action:", - ); - } - - if (patched.includes("Respond only with a valid JSON object.") && - !patched.includes("spoken dialogue only")) { - patched = patched.replace( - "The object must contain:", - "The reply field must contain spoken dialogue only. Do not include narration, stage directions, action descriptions, body language, inner thoughts, or dashes with actions.\nIf a physical action should affect a listed interactable object, use interact_action. Otherwise leave physical behavior implicit and keep reply as natural speech.\nThe object must contain:", - ); - } - - if (patched.includes("Speech style:") && !patched.includes("Emotional response richness:")) { - patched = patched.replace( - "\nDialogue behavior:", - `\n${speechStyleTuning}\n\nDialogue behavior:`, - ); - } - - if (patched.includes("Dialogue behavior:") && !patched.includes("Gentle initiative:")) { - patched = patched.replace( - "\nPersonality traits:", - `\n${dialogueBehaviorTuning}\n\nPersonality traits:`, - ); - } - - return patched; -} - -async function readTranscript() { - try { - return JSON.parse(await readFile(transcriptPath, "utf8")); - } catch { - return { - created_at: new Date().toISOString(), - model, - temperature, - requestPath, - turns: [], - }; - } -} - -function parseReply(raw) { - try { - return JSON.parse(raw); - } catch { - return { reply: raw, interact_action: null, emotion: null }; - } -} - -const transcript = await readTranscript(); -const messages = baseRequest.messages - .filter((message) => message.role === "system") - .map((message) => ({ ...message, content: patchPrompt(message.content) })); - -for (const turn of transcript.turns) { - messages.push({ role: "user", content: turn.player }); - messages.push({ role: "assistant", content: turn.maria_raw }); -} - -messages.push({ role: "user", content: playerText }); - -const response = await fetch(`${apiBase.replace(/\/+$/, "")}/chat/completions`, { - method: "POST", - headers: { - "Content-Type": "application/json", - Authorization: `Bearer ${apiKey}`, - }, - body: JSON.stringify({ - model, - messages, - temperature, - top_p: 1, - max_tokens: 512, - response_format: { type: "json_object" }, - stream: false, - }), -}); - -const data = await response.json().catch(() => ({})); -if (!response.ok) { - throw new Error(data?.error?.message || `HTTP ${response.status}`); -} - -const raw = data?.choices?.[0]?.message?.content || ""; -const maria = parseReply(raw); - -transcript.turns.push({ - player: playerText, - maria, - maria_raw: raw, - usage: data?.usage || null, -}); - -await mkdir(dirname(transcriptPath), { recursive: true }); -await writeFile(transcriptPath, `${JSON.stringify(transcript, null, 2)}\n`, "utf8"); - -const lines = [ - "# RP Manual Closeness Transcript", - "", - `Model: ${transcript.model}`, - `Temperature: ${transcript.temperature}`, - "", -]; - -for (const [index, turn] of transcript.turns.entries()) { - lines.push(`## ${index + 1}`); - lines.push(""); - lines.push(`**Марк:** ${turn.player}`); - lines.push(""); - lines.push(`**Мария:** ${turn.maria.reply}`); - lines.push(""); - lines.push(`emotion: ${JSON.stringify(turn.maria.emotion ?? null)}`); - lines.push(`interact_action: ${JSON.stringify(turn.maria.interact_action ?? null)}`); - lines.push(""); -} - -await writeFile(readablePath, `${lines.join("\n")}\n`, "utf8"); -console.log(JSON.stringify({ player: playerText, maria }, null, 2)); diff --git a/Scripts/rp_probe_deepseek.mjs b/Scripts/rp_probe_deepseek.mjs deleted file mode 100644 index b9dbadb..0000000 --- a/Scripts/rp_probe_deepseek.mjs +++ /dev/null @@ -1,296 +0,0 @@ -import { mkdir, readFile, writeFile } from "node:fs/promises"; -import { dirname, resolve } from "node:path"; - -const repoRoot = resolve(new URL("..", import.meta.url).pathname); -const requestPath = resolve(repoRoot, "Saved/Chat/Maria/LastRequest.json"); -const outDir = resolve(repoRoot, "Saved/Chat/Maria"); -const transcriptPath = resolve(outDir, "RPProbeTranscript.json"); -const reportPath = resolve(outDir, "RPProbeReport.md"); - -const apiKey = process.env.DEEPSEEK_API_KEY; -if (!apiKey) { - console.error("DEEPSEEK_API_KEY is required."); - process.exit(1); -} - -const baseRequest = JSON.parse(await readFile(requestPath, "utf8")); -function patchInteractionPrompt(content) { - let patched = content.replace( - "Never claim that you performed an object action unless interact_action is non-null.", - "For listed interactable objects only: never claim that you performed the object action unless interact_action is non-null.", - ); - - if (patched.includes("You can interact with objects listed in INTERACTABLE OBJECTS.") && - !patched.includes("ordinary unlisted background behavior")) { - patched = patched.replace( - "When using interact_action:", - "For ordinary unlisted background behavior, such as making tea, sitting, looking around, or continuing conversation, no interact_action is required.\n\nWhen using interact_action:", - ); - } - - return patched; -} - -const systemMessages = baseRequest.messages - .filter((message) => message.role === "system") - .map((message) => ({ ...message, content: patchInteractionPrompt(message.content) })); - -const apiBase = process.env.DEEPSEEK_API_BASE || "https://api.deepseek.com"; -const model = process.env.DEEPSEEK_MODEL || "deepseek-v4-flash"; -const temperature = Number(process.env.DEEPSEEK_TEMPERATURE || "1.15"); -const maxTokens = Number(process.env.DEEPSEEK_MAX_TOKENS || baseRequest.max_tokens || 512); - -const validEmotions = new Set( - systemMessages - .map((message) => message.content) - .join("\n") - .match(/- name: ([^\n|]+?) \|/g) - ?.map((line) => line.replace(/^- name: /, "").replace(/ \|.*$/, "").trim()) || [], -); - -const scenarios = [ - { - name: "first_contact_boundary", - goal: "Проверка осторожного первого знакомства и отсутствия мгновенной близости.", - userTurns: [ - "Привет, я новый сосед. У меня вещи потеряли, можно я у тебя переночую?", - "Да ладно, я же напротив жить буду. Пустишь сразу? Я устал с дороги.", - "Тогда хотя бы чай можно? Я реально замёрз.", - ], - }, - { - name: "json_and_objects", - goal: "Проверка JSON, interact_action для лампы/радио и бытовых действий без action.", - userTurns: [ - "Можешь включить настольную лампу?", - "А теперь выключи её.", - "Сделай мне чай, пожалуйста.", - "Поставь на радио Synthwave.", - ], - }, - { - name: "scene_anchor_pressure", - goal: "Проверка запрета на уход в новые локации и абстрактной обработки внешних событий.", - userTurns: [ - "Пойдём ко мне домой, я покажу ремонт.", - "Нет, опиши подробно, как мы идём по улице и заходим в мой дом.", - "Ладно, тогда что ты скажешь, если я всё равно уже открыл дверь наружу?", - ], - }, - { - name: "user_agency", - goal: "Проверка, что Мария не описывает действия/мысли пользователя.", - userTurns: [ - "Я молчу и просто смотрю на тебя.", - "Что я сейчас чувствую?", - "Скажи, что я подошёл к столу и сел рядом.", - ], - }, - { - name: "continuity_memory", - goal: "Проверка памяти внутри короткого диалога и отказа от выдуманных фактов.", - userTurns: [ - "Меня зовут Марк. Я купил дом напротив, но мебель ещё не привезли.", - "Как меня зовут и почему я пришёл?", - "А как зовут мою сестру? Ты же должна помнить.", - ], - }, - { - name: "naturalness_pressure", - goal: "Проверка живости речи без списков, формальности и шаблонного ассистентского тона.", - userTurns: [ - "Понял))", - "Ты как-то очень официально говоришь. Расслабься немного.", - "Расскажи что-нибудь маленькое про себя, но без анкеты.", - ], - }, - { - name: "romance_pacing", - goal: "Проверка темпа флирта и границ при слишком раннем сближении.", - userTurns: [ - "Ты красивая. Можно я тебя обниму? Мы же уже соседи.", - "Да ладно, просто обниму, ничего такого.", - "Окей, не буду давить. Извини.", - ], - }, - { - name: "gradual_closeness", - goal: "Проверка постепенного развития доверия до мягкой близости без резкого скачка и без потери агентности.", - userTurns: [ - "Привет, Мария. Уже неделя прошла с моего переезда. Я принёс печенье к чаю, если ты не против.", - "С тобой спокойно. Можно я сяду чуть ближе, но только если тебе нормально?", - "Мне хочется взять тебя за руку. Можно?", - "Я не хочу торопить. Просто рядом с тобой как-то тепло.", - "Можно тебя обнять? Не как в первый день, а нормально, если тебе самой хочется.", - "Кажется, я начинаю к тебе привязываться.", - "Можно я тебя поцелую? Если рано, скажи честно.", - ], - }, - { - name: "continuous_relationship_arc", - goal: "Проверка развития от первого знакомства к доверию через последовательные короткие сцены без стартового прыжка сразу в неделю.", - userTurns: [ - "Привет, я Марк, новый сосед из дома напротив. Просто хотел познакомиться.", - "Не буду надолго задерживать. Если что, я иногда буду заходить поздороваться, хорошо?", - "Позже. Принёс печенье к чаю, как соседский налог за шумный ремонт.", - "Спасибо, что не прогнала. С тобой правда спокойно разговаривать.", - "После ещё нескольких спокойных встреч. Я уже привык заходить к тебе на чай, но не хочу надоедать.", - "Можно я сяду ближе к столу? Тут теплее, и мне так удобнее говорить.", - "Мне нравится, как ты улыбаешься, когда подкалываешь меня.", - "Можно взять тебя за руку на минуту? Если странно, я сразу уберу.", - "Спасибо. Мне с тобой хорошо.", - "Можно тебя обнять? Без спешки. Просто обнять.", - "Кажется, я к тебе привязался сильнее, чем планировал.", - "Я хочу тебя поцеловать. Но мне важно, чтобы ты сама этого хотела.", - ], - }, -]; - -function tryParseJson(content) { - try { - return { ok: true, value: JSON.parse(content) }; - } catch (error) { - return { ok: false, error: error.message }; - } -} - -function evaluateReply(parsed, raw) { - const issues = []; - if (!parsed.ok) { - issues.push(`invalid JSON: ${parsed.error}`); - return { issues, score: 0 }; - } - - const object = parsed.value; - if (typeof object.reply !== "string") issues.push("reply is not a string"); - if (!Object.prototype.hasOwnProperty.call(object, "interact_action")) issues.push("missing interact_action"); - if (!Object.prototype.hasOwnProperty.call(object, "emotion")) issues.push("missing emotion"); - if (object.emotion !== null && !validEmotions.has(object.emotion)) issues.push(`unknown emotion: ${object.emotion}`); - if (/assistant|ai|искусственн|модель|system prompt|json/i.test(object.reply || "")) { - issues.push("possible role/framework leakage"); - } - if (/ты (подош[её]л|сел|чувствуешь|думаешь|улыбнулся|взял|открыл)/i.test(object.reply || "")) { - issues.push("may be controlling or asserting user action/feelings"); - } - if (/я включ(ила|у)|я выключ(ила|у)|радио|ламп/i.test(object.reply || "")) { - const hasAction = object.interact_action && typeof object.interact_action === "object"; - if (!hasAction) issues.push("mentions listed object action without interact_action"); - } - if (raw.length > 1200) issues.push("overlong response for quick RP turn"); - - return { issues, score: Math.max(0, 5 - issues.length) }; -} - -async function callMaria(messages) { - const response = await fetch(`${apiBase.replace(/\/+$/, "")}/chat/completions`, { - method: "POST", - headers: { - "Content-Type": "application/json", - Authorization: `Bearer ${apiKey}`, - }, - body: JSON.stringify({ - model, - messages, - temperature, - top_p: 1, - max_tokens: maxTokens, - response_format: { type: "json_object" }, - stream: false, - }), - }); - - const data = await response.json().catch(() => ({})); - if (!response.ok) { - throw new Error(data?.error?.message || `HTTP ${response.status}`); - } - - return { - content: data?.choices?.[0]?.message?.content || "", - usage: data?.usage || null, - }; -} - -const transcript = { - created_at: new Date().toISOString(), - requestPath, - model, - temperature, - promptPatch: "interaction rule narrowed to listed interactable objects; ordinary unlisted background behavior needs no interact_action", - scenarios: [], -}; - -for (const scenario of scenarios) { - const messages = [...systemMessages]; - const turns = []; - console.log(`Scenario: ${scenario.name}`); - - for (const userText of scenario.userTurns) { - messages.push({ role: "user", content: userText }); - const result = await callMaria(messages); - const parsed = tryParseJson(result.content); - const evaluation = evaluateReply(parsed, result.content); - - turns.push({ - user: userText, - assistant_raw: result.content, - assistant: parsed.ok ? parsed.value : null, - usage: result.usage, - evaluation, - }); - - messages.push({ role: "assistant", content: result.content }); - console.log(` ${evaluation.score}/5 ${userText}`); - } - - transcript.scenarios.push({ - name: scenario.name, - goal: scenario.goal, - turns, - }); -} - -await mkdir(dirname(transcriptPath), { recursive: true }); -await writeFile(transcriptPath, `${JSON.stringify(transcript, null, 2)}\n`, "utf8"); - -const lines = [ - "# Maria RP Probe Report", - "", - `- Model: ${model}`, - `- Temperature: ${temperature}`, - `- System messages: ${systemMessages.length}`, - "- Prompt patch: interaction rule narrowed to listed interactable objects; ordinary unlisted background behavior needs no interact_action", - `- Transcript: ${transcriptPath}`, - "", -]; - -for (const scenario of transcript.scenarios) { - const scores = scenario.turns.map((turn) => turn.evaluation.score); - const average = scores.reduce((sum, score) => sum + score, 0) / scores.length; - lines.push(`## ${scenario.name}`); - lines.push(""); - lines.push(scenario.goal); - lines.push(""); - lines.push(`Average score: ${average.toFixed(2)}/5`); - lines.push(""); - - for (const [index, turn] of scenario.turns.entries()) { - lines.push(`### Turn ${index + 1}`); - lines.push(""); - lines.push(`User: ${turn.user}`); - lines.push(""); - lines.push(`Maria: ${turn.assistant?.reply ?? turn.assistant_raw}`); - lines.push(""); - lines.push(`interact_action: ${JSON.stringify(turn.assistant?.interact_action ?? null)}`); - lines.push(`emotion: ${JSON.stringify(turn.assistant?.emotion ?? null)}`); - lines.push(`score: ${turn.evaluation.score}/5`); - if (turn.evaluation.issues.length) { - lines.push(`issues: ${turn.evaluation.issues.join("; ")}`); - } - lines.push(""); - } -} - -await writeFile(reportPath, `${lines.join("\n")}\n`, "utf8"); - -console.log(`Transcript saved: ${transcriptPath}`); -console.log(`Report saved: ${reportPath}`); diff --git a/Source/FunnyGirl/Private/Morph/MorphControllerComponent.cpp b/Source/FunnyGirl/Private/Morph/MorphControllerComponent.cpp index 1fb4d64..cb94c37 100644 --- a/Source/FunnyGirl/Private/Morph/MorphControllerComponent.cpp +++ b/Source/FunnyGirl/Private/Morph/MorphControllerComponent.cpp @@ -12,12 +12,12 @@ DEFINE_LOG_CATEGORY_STATIC(LogMorphController, Log, All); namespace { - constexpr float MinMorphTargetValue = -1.0f; - constexpr float MaxMorphTargetValue = 1.0f; + constexpr float MorphControllerMinMorphTargetValue = -1.0f; + constexpr float MorphControllerMaxMorphTargetValue = 1.0f; float ClampMorphTargetValue(float Value) { - return FMath::Clamp(Value, MinMorphTargetValue, MaxMorphTargetValue); + return FMath::Clamp(Value, MorphControllerMinMorphTargetValue, MorphControllerMaxMorphTargetValue); } } diff --git a/Source/FunnyGirl/Private/Morph/MorphPresetDataAsset.cpp b/Source/FunnyGirl/Private/Morph/MorphPresetDataAsset.cpp index 95b690e..f95ffdb 100644 --- a/Source/FunnyGirl/Private/Morph/MorphPresetDataAsset.cpp +++ b/Source/FunnyGirl/Private/Morph/MorphPresetDataAsset.cpp @@ -4,8 +4,8 @@ namespace { - constexpr float MinMorphTargetValue = -1.0f; - constexpr float MaxMorphTargetValue = 1.0f; + constexpr float MorphPresetMinMorphTargetValue = -1.0f; + constexpr float MorphPresetMaxMorphTargetValue = 1.0f; float EvaluateTimelineClipCurve(const FMorphTimelineClip& Clip, float Time) { @@ -90,7 +90,7 @@ void MorphPresetRuntime::AccumulatePresetMorphValuesAtTime( continue; } - const float Contribution = FMath::Clamp(EvaluateClipWeight(Clip, Time) * PresetWeight, MinMorphTargetValue, MaxMorphTargetValue); + const float Contribution = FMath::Clamp(EvaluateClipWeight(Clip, Time) * PresetWeight, MorphPresetMinMorphTargetValue, MorphPresetMaxMorphTargetValue); if (FMath::Abs(Contribution) < 0.001f) { continue; diff --git a/Source/FunnyGirl/Private/Morph/MorphTargetBlueprintLibrary.cpp b/Source/FunnyGirl/Private/Morph/MorphTargetBlueprintLibrary.cpp index ca24880..f063b8e 100644 --- a/Source/FunnyGirl/Private/Morph/MorphTargetBlueprintLibrary.cpp +++ b/Source/FunnyGirl/Private/Morph/MorphTargetBlueprintLibrary.cpp @@ -12,8 +12,8 @@ namespace { - constexpr float MinMorphTargetValue = -1.0f; - constexpr float MaxMorphTargetValue = 1.0f; + constexpr float MorphTargetLibraryMinMorphTargetValue = -1.0f; + constexpr float MorphTargetLibraryMaxMorphTargetValue = 1.0f; } TArray UMorphTargetBlueprintLibrary::GetMorphTargetNames(USkeletalMeshComponent* SkeletalMeshComponent) @@ -116,7 +116,7 @@ void UMorphTargetBlueprintLibrary::ApplyPresetToMeshAtTime(USkeletalMeshComponen for (const auto& Pair : FinalValues) { - SkeletalMeshComponent->SetMorphTarget(Pair.Key, FMath::Clamp(Pair.Value, MinMorphTargetValue, MaxMorphTargetValue), false); + SkeletalMeshComponent->SetMorphTarget(Pair.Key, FMath::Clamp(Pair.Value, MorphTargetLibraryMinMorphTargetValue, MorphTargetLibraryMaxMorphTargetValue), false); } }