This commit is contained in:
2026-09-10 10:59:39 +03:00
commit a00c7cc88b
20 changed files with 13204 additions and 0 deletions
+24
View File
@@ -0,0 +1,24 @@
{
"id": "live2d_test",
"name": "Live2D Cubism",
"version": "1.0.0",
"author": "ct",
"description": "Live2D Cubism C# runtime: model loading, rendering, physics, animation, effects",
"depends": ["core>=1","live2d>=1"],
"subscriptions": [
{
"scene": "home_outside",
"template": "default",
"code": "live2d_test_add",
"trigger": "on_enter",
"priority": 1
},
{
"scene": "home_outside",
"template": "default",
"code": "live2d_test_remove",
"trigger": "on_exit",
"priority": 1
}
]
}
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

+57
View File
@@ -0,0 +1,57 @@
============================================================
Sample Model
Ren Foster - PRO
============================================================
This model focuses on learning expressions that use the rich drawing features introduced in Cubism 5.3.
It serves as a reference for using features such as alpha blend for creating masks flexibly,
and offscreen drawing for displaying semi-transparency cleanly by drawing multiple objects together.
It is designed for use in environments with sufficient machine specifications,
such as video streaming on a PC using tracking software like nizima LIVE.
------------------------------
License Agreement
------------------------------
You need to agree "Free Material License Agreement" and "Terms of Use" to use this sample model.
General Users and Small-Scale Enterprise Users can use the model for commercial purposes by accepting the "Free Material License Agreement".
Parties other than General User or Small-Scale Enterprise User are allowed to use the model for Internal or Supervision Purpose.
Please refer to this agreement for more details.
For more information on licensing, please see the following page.
https://www.live2d.com/en/download/sample-data/
------------------------------
Creator
------------------------------
- Illustration: Live2D Inc.
- Modeling: Live2D Inc.
------------------------------
Sample Data Composition
------------------------------
- Model data (.cmo3)
- Basic motion (.can3)
- Embedded file set (.runtime folder)
- Model data (.moc3)
- Expression data (.exp3.json)
- Motion data (.motion3.json)
- Model setting file (.model3.json)
- Physical calculation setting file (.physics3.json)
- Display auxiliary file (.cdi3.json)
------------------------------
Release Note
------------------------------
- 2026-01-20
- Released.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,77 @@
{
"Type": "Live2D Expression",
"FadeInTime": 0.5,
"FadeOutTime": 0.5,
"Parameters": [
{
"Id": "ParamEyeLOpen",
"Value": 0,
"Blend": "Add"
},
{
"Id": "ParamEyeLSmile",
"Value": 0,
"Blend": "Add"
},
{
"Id": "ParamEyeROpen",
"Value": 0,
"Blend": "Add"
},
{
"Id": "ParamEyeRSmile",
"Value": 0,
"Blend": "Add"
},
{
"Id": "ParamEyeSize",
"Value": 0,
"Blend": "Add"
},
{
"Id": "ParamBrowLY",
"Value": 0,
"Blend": "Add"
},
{
"Id": "ParamBrowRY",
"Value": 0,
"Blend": "Add"
},
{
"Id": "ParamBrowLX",
"Value": 0,
"Blend": "Add"
},
{
"Id": "ParamBrowRX",
"Value": 0,
"Blend": "Add"
},
{
"Id": "ParamBrowLAngle",
"Value": 0,
"Blend": "Add"
},
{
"Id": "ParamBrowRAngle",
"Value": 0,
"Blend": "Add"
},
{
"Id": "ParamBrowLForm",
"Value": 0,
"Blend": "Add"
},
{
"Id": "ParamBrowRForm",
"Value": 0,
"Blend": "Add"
},
{
"Id": "ParamMouthForm",
"Value": 0,
"Blend": "Add"
}
]
}
@@ -0,0 +1,77 @@
{
"Type": "Live2D Expression",
"FadeInTime": 0.5,
"FadeOutTime": 0.5,
"Parameters": [
{
"Id": "ParamEyeLOpen",
"Value": -1,
"Blend": "Add"
},
{
"Id": "ParamEyeLSmile",
"Value": 1,
"Blend": "Add"
},
{
"Id": "ParamEyeROpen",
"Value": -1,
"Blend": "Add"
},
{
"Id": "ParamEyeRSmile",
"Value": 1,
"Blend": "Add"
},
{
"Id": "ParamEyeSize",
"Value": 0,
"Blend": "Add"
},
{
"Id": "ParamBrowLY",
"Value": 0,
"Blend": "Add"
},
{
"Id": "ParamBrowRY",
"Value": 0,
"Blend": "Add"
},
{
"Id": "ParamBrowLX",
"Value": 0,
"Blend": "Add"
},
{
"Id": "ParamBrowRX",
"Value": 0,
"Blend": "Add"
},
{
"Id": "ParamBrowLAngle",
"Value": 0,
"Blend": "Add"
},
{
"Id": "ParamBrowRAngle",
"Value": 0,
"Blend": "Add"
},
{
"Id": "ParamBrowLForm",
"Value": 0,
"Blend": "Add"
},
{
"Id": "ParamBrowRForm",
"Value": 0,
"Blend": "Add"
},
{
"Id": "ParamMouthForm",
"Value": 0,
"Blend": "Add"
}
]
}
@@ -0,0 +1,77 @@
{
"Type": "Live2D Expression",
"FadeInTime": 0.5,
"FadeOutTime": 0.5,
"Parameters": [
{
"Id": "ParamEyeLOpen",
"Value": -1,
"Blend": "Add"
},
{
"Id": "ParamEyeLSmile",
"Value": 0,
"Blend": "Add"
},
{
"Id": "ParamEyeROpen",
"Value": -1,
"Blend": "Add"
},
{
"Id": "ParamEyeRSmile",
"Value": 0,
"Blend": "Add"
},
{
"Id": "ParamEyeSize",
"Value": 0,
"Blend": "Add"
},
{
"Id": "ParamBrowLY",
"Value": 0,
"Blend": "Add"
},
{
"Id": "ParamBrowRY",
"Value": 0,
"Blend": "Add"
},
{
"Id": "ParamBrowLX",
"Value": 0,
"Blend": "Add"
},
{
"Id": "ParamBrowRX",
"Value": 0,
"Blend": "Add"
},
{
"Id": "ParamBrowLAngle",
"Value": 0,
"Blend": "Add"
},
{
"Id": "ParamBrowRAngle",
"Value": 0,
"Blend": "Add"
},
{
"Id": "ParamBrowLForm",
"Value": 0,
"Blend": "Add"
},
{
"Id": "ParamBrowRForm",
"Value": 0,
"Blend": "Add"
},
{
"Id": "ParamMouthForm",
"Value": 0,
"Blend": "Add"
}
]
}
@@ -0,0 +1,77 @@
{
"Type": "Live2D Expression",
"FadeInTime": 0.5,
"FadeOutTime": 0.5,
"Parameters": [
{
"Id": "ParamEyeLOpen",
"Value": 0,
"Blend": "Add"
},
{
"Id": "ParamEyeLSmile",
"Value": 0,
"Blend": "Add"
},
{
"Id": "ParamEyeROpen",
"Value": 0,
"Blend": "Add"
},
{
"Id": "ParamEyeRSmile",
"Value": 0,
"Blend": "Add"
},
{
"Id": "ParamEyeSize",
"Value": 0,
"Blend": "Add"
},
{
"Id": "ParamBrowLY",
"Value": 0,
"Blend": "Add"
},
{
"Id": "ParamBrowRY",
"Value": 0,
"Blend": "Add"
},
{
"Id": "ParamBrowLX",
"Value": 0,
"Blend": "Add"
},
{
"Id": "ParamBrowRX",
"Value": 0,
"Blend": "Add"
},
{
"Id": "ParamBrowLAngle",
"Value": -1,
"Blend": "Add"
},
{
"Id": "ParamBrowRAngle",
"Value": -1,
"Blend": "Add"
},
{
"Id": "ParamBrowLForm",
"Value": -1,
"Blend": "Add"
},
{
"Id": "ParamBrowRForm",
"Value": -1,
"Blend": "Add"
},
{
"Id": "ParamMouthForm",
"Value": -1,
"Blend": "Add"
}
]
}
@@ -0,0 +1,77 @@
{
"Type": "Live2D Expression",
"FadeInTime": 0.5,
"FadeOutTime": 0.5,
"Parameters": [
{
"Id": "ParamEyeLOpen",
"Value": 0,
"Blend": "Add"
},
{
"Id": "ParamEyeLSmile",
"Value": 0,
"Blend": "Add"
},
{
"Id": "ParamEyeROpen",
"Value": 0,
"Blend": "Add"
},
{
"Id": "ParamEyeRSmile",
"Value": 0,
"Blend": "Add"
},
{
"Id": "ParamEyeSize",
"Value": 0,
"Blend": "Add"
},
{
"Id": "ParamBrowLY",
"Value": 0,
"Blend": "Add"
},
{
"Id": "ParamBrowRY",
"Value": 0,
"Blend": "Add"
},
{
"Id": "ParamBrowLX",
"Value": 0,
"Blend": "Add"
},
{
"Id": "ParamBrowRX",
"Value": 0,
"Blend": "Add"
},
{
"Id": "ParamBrowLAngle",
"Value": 0.7,
"Blend": "Add"
},
{
"Id": "ParamBrowRAngle",
"Value": 0.7,
"Blend": "Add"
},
{
"Id": "ParamBrowLForm",
"Value": -1,
"Blend": "Add"
},
{
"Id": "ParamBrowRForm",
"Value": -1,
"Blend": "Add"
},
{
"Id": "ParamMouthForm",
"Value": -1,
"Blend": "Add"
}
]
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 MiB

+647
View File
@@ -0,0 +1,647 @@
{
"Version": 3,
"Parameters": [
{
"Id": "ParamAngleX",
"GroupId": "ParamGroupFace",
"Name": "Angle X"
},
{
"Id": "ParamAngleY",
"GroupId": "ParamGroupFace",
"Name": "Angle Y"
},
{
"Id": "ParamAngleZ",
"GroupId": "ParamGroupFace",
"Name": "Angle Z"
},
{
"Id": "ParamEyeLOpen",
"GroupId": "ParamGroupEye",
"Name": "Eye L Open"
},
{
"Id": "ParamEyeLSmile",
"GroupId": "ParamGroupEye",
"Name": "Eye L Smile"
},
{
"Id": "ParamEyeROpen",
"GroupId": "ParamGroupEye",
"Name": "Eye R Open"
},
{
"Id": "ParamEyeRSmile",
"GroupId": "ParamGroupEye",
"Name": "Eye R Smile"
},
{
"Id": "ParamEyeBallX",
"GroupId": "ParamGroupEyeballs",
"Name": "Eyeballs X"
},
{
"Id": "ParamEyeBallY",
"GroupId": "ParamGroupEyeballs",
"Name": "Eyeballs Y"
},
{
"Id": "ParamEyeSize",
"GroupId": "ParamGroupEyeballs",
"Name": "Eyeballs Shrink"
},
{
"Id": "ParamBrowLY",
"GroupId": "ParamGroupBrows",
"Name": "Eyebrow L Y"
},
{
"Id": "ParamBrowRY",
"GroupId": "ParamGroupBrows",
"Name": "Eyebrow R Y"
},
{
"Id": "ParamBrowLX",
"GroupId": "ParamGroupBrows",
"Name": "Eyebrow L X"
},
{
"Id": "ParamBrowRX",
"GroupId": "ParamGroupBrows",
"Name": "Eyebrow R X"
},
{
"Id": "ParamBrowLAngle",
"GroupId": "ParamGroupBrows",
"Name": "Eyebrow L Angle"
},
{
"Id": "ParamBrowRAngle",
"GroupId": "ParamGroupBrows",
"Name": "Eyebrow R Angle"
},
{
"Id": "ParamBrowLForm",
"GroupId": "ParamGroupBrows",
"Name": "Eyebrow L Form"
},
{
"Id": "ParamBrowRForm",
"GroupId": "ParamGroupBrows",
"Name": "Eyebrow R Form"
},
{
"Id": "ParamMouthForm",
"GroupId": "ParamGroupMouth",
"Name": "Mouth Form"
},
{
"Id": "ParamMouthOpenY",
"GroupId": "ParamGroupMouth",
"Name": "Mouth Open"
},
{
"Id": "ParamBodyAngleX",
"GroupId": "ParamGroupBody",
"Name": "Body Rotatoin X"
},
{
"Id": "ParamBodyAngleY",
"GroupId": "ParamGroupBody",
"Name": "Body Rotatoin Y"
},
{
"Id": "ParamBodyAngleZ",
"GroupId": "ParamGroupBody",
"Name": "Body Rotatoin Z"
},
{
"Id": "ParamWaistAngleZ",
"GroupId": "ParamGroupBody",
"Name": "Waist Rotation Z"
},
{
"Id": "ParamBodyCenter",
"GroupId": "ParamGroupBody",
"Name": "Weight Shift"
},
{
"Id": "ParamBreath",
"GroupId": "ParamGroupBody",
"Name": "Breath"
},
{
"Id": "ParamLeftShoulderUp",
"GroupId": "ParamGroupBody",
"Name": "Shoulder L Y"
},
{
"Id": "ParamRightShoulderUp",
"GroupId": "ParamGroupBody",
"Name": "Shoulder R Y"
},
{
"Id": "ParamLegR",
"GroupId": "ParamGroupBody",
"Name": "Leg R"
},
{
"Id": "ParamLegL",
"GroupId": "ParamGroupBody",
"Name": "Leg L"
},
{
"Id": "ParamBodyAngleX2",
"GroupId": "ParamGroup",
"Name": "Body Rotation X2"
},
{
"Id": "ParamBodyAngleY2",
"GroupId": "ParamGroup",
"Name": "Body Rotation Y2"
},
{
"Id": "ParamBodyCenter2",
"GroupId": "ParamGroup",
"Name": "Weight Shift 2"
},
{
"Id": "ParamLeftShoulderUp2",
"GroupId": "ParamGroup",
"Name": "Shoulder L Y 2"
},
{
"Id": "ParamRightShoulderUp2",
"GroupId": "ParamGroup",
"Name": "Shoulder R Y 2"
},
{
"Id": "ParamArmL01",
"GroupId": "ParamGroupArmL",
"Name": "Arm L Shoulder Rotation"
},
{
"Id": "ParamArmL02",
"GroupId": "ParamGroupArmL",
"Name": "Arm L Elbow Rotation"
},
{
"Id": "ParamArmL03",
"GroupId": "ParamGroupArmL",
"Name": "Arm L Wrist Rotation"
},
{
"Id": "ParamHandL",
"GroupId": "ParamGroupArmL",
"Name": "Hand L"
},
{
"Id": "ParamHandLDrawOrder",
"GroupId": "ParamGroupArmL",
"Name": "Hand L Draw Order"
},
{
"Id": "ParamArmR01",
"GroupId": "ParamGroupArmR",
"Name": "Arm R Shoulder Rotation"
},
{
"Id": "ParamArmR02",
"GroupId": "ParamGroupArmR",
"Name": "Arm R Elbow Rotation"
},
{
"Id": "ParamArmR03",
"GroupId": "ParamGroupArmR",
"Name": "Arm R Wrist Rotation"
},
{
"Id": "ParamHandR",
"GroupId": "ParamGroupArmR",
"Name": "Hand R"
},
{
"Id": "ParamHandRDrawOrder",
"GroupId": "ParamGroupArmR",
"Name": "Hand R Draw Order"
},
{
"Id": "ParamHairFront",
"GroupId": "ParamGroupSway",
"Name": "Hair Sway Front"
},
{
"Id": "ParamHairSide",
"GroupId": "ParamGroupSway",
"Name": "Hair Move Side"
},
{
"Id": "ParamHairBack",
"GroupId": "ParamGroupSway",
"Name": "Hair Move Back"
},
{
"Id": "ParamHairFrontFuwa",
"GroupId": "ParamGroupSway",
"Name": "Front Hair Fluff"
},
{
"Id": "ParamHairSideFuwa",
"GroupId": "ParamGroupSway",
"Name": "Side Hair Flap"
},
{
"Id": "ParamHairBackFuwa",
"GroupId": "ParamGroupSway",
"Name": "Back Hair Fluff"
},
{
"Id": "ParamCollarString",
"GroupId": "ParamGroupSway",
"Name": "Collar Strap Sway"
},
{
"Id": "ParamNecklace1",
"GroupId": "ParamGroupSway",
"Name": "Necklace Sway 1"
},
{
"Id": "ParamNecklace2",
"GroupId": "ParamGroupSway",
"Name": "Necklace Sway 2"
},
{
"Id": "ParamNecklace3",
"GroupId": "ParamGroupSway",
"Name": "Necklace Sway 3"
},
{
"Id": "ParamPullHandle",
"GroupId": "ParamGroupSway",
"Name": "Puller Sway"
},
{
"Id": "ParamPocketString",
"GroupId": "ParamGroupSway",
"Name": "Pocket Band Sway"
},
{
"Id": "ParamJacket",
"GroupId": "ParamGroupSway",
"Name": "Jacket Sway"
},
{
"Id": "ParamCollarFuwa",
"GroupId": "ParamGroupSway",
"Name": "Collar Flap"
},
{
"Id": "ParamCollarStringFuwa",
"GroupId": "ParamGroupSway",
"Name": "Collar Strap Flap"
},
{
"Id": "ParamHologram",
"GroupId": "ParamGroupEffect",
"Name": "Hologram"
},
{
"Id": "ParamTransparent",
"GroupId": "ParamGroupEffect",
"Name": "See-through"
},
{
"Id": "ParamHologramPattern",
"GroupId": "ParamGroupEffect",
"Name": "Hologram Pattern"
},
{
"Id": "ParamMonochrome",
"GroupId": "ParamGroupEffect",
"Name": "Monochrome"
},
{
"Id": "ParamNight",
"GroupId": "ParamGroupEffect",
"Name": "Night"
},
{
"Id": "ParamLight",
"GroupId": "ParamGroupEffect",
"Name": "Light"
},
{
"Id": "ParamDisplayWidth1",
"GroupId": "ParamGroupEffect",
"Name": "Display 1 Width"
},
{
"Id": "ParamDisplayHeight1",
"GroupId": "ParamGroupEffect",
"Name": "Display 1 Height"
},
{
"Id": "ParamDisplayWidth2",
"GroupId": "ParamGroupEffect",
"Name": "Display 2 Width"
},
{
"Id": "ParamDisplayHeight2",
"GroupId": "ParamGroupEffect",
"Name": "Display 2 Height"
},
{
"Id": "ParamDisplayAngle",
"GroupId": "ParamGroupEffect",
"Name": "Display Angle"
},
{
"Id": "ParamNoise",
"GroupId": "ParamGroupEffect",
"Name": "Noise"
},
{
"Id": "ParamNoiseRotate",
"GroupId": "ParamGroupEffect",
"Name": "Noise Rotation"
}
],
"ParameterGroups": [
{
"Id": "ParamGroupFace",
"GroupId": "",
"Name": "Face"
},
{
"Id": "ParamGroupEye",
"GroupId": "",
"Name": "Eyes"
},
{
"Id": "ParamGroupEyeballs",
"GroupId": "",
"Name": "Eyeballs"
},
{
"Id": "ParamGroupBrows",
"GroupId": "",
"Name": "Eyebrows"
},
{
"Id": "ParamGroupMouth",
"GroupId": "",
"Name": "Mouth"
},
{
"Id": "ParamGroupBody",
"GroupId": "",
"Name": "Body"
},
{
"Id": "ParamGroup",
"GroupId": "",
"Name": "Body Physics"
},
{
"Id": "ParamGroupArmL",
"GroupId": "",
"Name": "Arm L"
},
{
"Id": "ParamGroupArmR",
"GroupId": "",
"Name": "Arm R"
},
{
"Id": "ParamGroupSway",
"GroupId": "",
"Name": "Sway"
},
{
"Id": "ParamGroupEffect",
"GroupId": "",
"Name": "Effect"
}
],
"Parts": [
{
"Id": "PartAll",
"Name": "Overall"
},
{
"Id": "PartSketch",
"Name": "[Guide Image]"
},
{
"Id": "PartEffect",
"Name": "Effect"
},
{
"Id": "PartCore",
"Name": "Core"
},
{
"Id": "PartHairFront",
"Name": "Front Hair"
},
{
"Id": "PartBrow",
"Name": "Eyebrow"
},
{
"Id": "PartEyeL",
"Name": "Eye L"
},
{
"Id": "PartEyeR",
"Name": "Eye R"
},
{
"Id": "PartNose",
"Name": "Nose"
},
{
"Id": "PartMouth",
"Name": "Mouth"
},
{
"Id": "PartFace",
"Name": "Face"
},
{
"Id": "PartEar",
"Name": "Ears"
},
{
"Id": "PartNeck",
"Name": "Neck"
},
{
"Id": "PartHairBack",
"Name": "Back Hair"
},
{
"Id": "PartJacket01",
"Name": "Jacket"
},
{
"Id": "PartArmL",
"Name": "Arm L"
},
{
"Id": "PartArmR",
"Name": "Arm R"
},
{
"Id": "PartBody",
"Name": "Upper Body"
},
{
"Id": "PartDisplay",
"Name": "Display"
},
{
"Id": "PartMonochrome",
"Name": "Monochrome"
},
{
"Id": "PartNight",
"Name": "Night"
},
{
"Id": "PartHologram",
"Name": "Hologram"
},
{
"Id": "PartTransparent",
"Name": "See-through"
},
{
"Id": "PartHairShadow",
"Name": "Hair Shadow"
},
{
"Id": "PartEyeballL",
"Name": "Eyeball L"
},
{
"Id": "PartEyeballR",
"Name": "Eyeball R"
},
{
"Id": "PartHairline",
"Name": "Hairline L"
},
{
"Id": "PartJacket02",
"Name": "Jacket"
},
{
"Id": "PartJacketArmL",
"Name": "Jacket Arm L"
},
{
"Id": "PartJacketArmR",
"Name": "Jacket Arm R"
},
{
"Id": "PartJacketShadow",
"Name": "Jacket Shadow"
},
{
"Id": "PartNecklace",
"Name": "Necklace"
},
{
"Id": "PartShirt",
"Name": "Shirt"
},
{
"Id": "PartLowerBody",
"Name": "Lower Body"
},
{
"Id": "PartDisplayPaint",
"Name": "Display Fill"
},
{
"Id": "PartShadow",
"Name": "Shadow"
},
{
"Id": "PartBrow2",
"Name": "Eyebrow"
},
{
"Id": "PartEyeL2",
"Name": "Eye L"
},
{
"Id": "PartEyeR2",
"Name": "Eye R"
},
{
"Id": "PartHairShadowOut",
"Name": "Hair Shadow Out"
},
{
"Id": "PartPupilL",
"Name": "Pupil L"
},
{
"Id": "PartPupilR",
"Name": "Pupil R"
},
{
"Id": "PartArmLDrawOrder",
"Name": "Arm L Draw Order"
},
{
"Id": "PartArmRDrawOrder",
"Name": "Arm R Draw Order"
},
{
"Id": "PartBodyOut",
"Name": "Torso Out"
},
{
"Id": "PartDisplay01",
"Name": "Display 1"
},
{
"Id": "PartDisplay02",
"Name": "Display 2"
},
{
"Id": "PartEyeballL2",
"Name": "Eyeball L"
},
{
"Id": "PartEyeballR2",
"Name": "Eyeball R"
},
{
"Id": "PartHairBackOut",
"Name": "Back Hair Out"
},
{
"Id": "PartPupilL2",
"Name": "Pupil L"
},
{
"Id": "PartPupilR2",
"Name": "Pupil R"
}
],
"CombinedParameters": [
[
"ParamAngleX",
"ParamAngleY"
],
[
"ParamMouthForm",
"ParamMouthOpenY"
]
]
}
Binary file not shown.
+75
View File
@@ -0,0 +1,75 @@
{
"Version": 3,
"FileReferences": {
"Moc": "ren.moc3",
"Textures": [
"ren.4096/texture_00.png"
],
"Physics": "ren.physics3.json",
"DisplayInfo": "ren.cdi3.json",
"Expressions": [
{
"Name": "exp_01",
"File": "expressions/exp_01.exp3.json"
},
{
"Name": "exp_02",
"File": "expressions/exp_02.exp3.json"
},
{
"Name": "exp_03",
"File": "expressions/exp_03.exp3.json"
},
{
"Name": "exp_04",
"File": "expressions/exp_04.exp3.json"
},
{
"Name": "exp_05",
"File": "expressions/exp_05.exp3.json"
}
],
"Motions": {
"Idle": [
{
"File": "motions/mtn_01.motion3.json"
}
],
"": [
{
"File": "motions/mtn_02.motion3.json"
},
{
"File": "motions/mtn_03.motion3.json"
}
]
}
},
"Groups": [
{
"Target": "Parameter",
"Name": "EyeBlink",
"Ids": [
"ParamEyeLOpen",
"ParamEyeROpen"
]
},
{
"Target": "Parameter",
"Name": "LipSync",
"Ids": [
"ParamMouthOpenY"
]
}
],
"HitAreas": [
{
"Id": "HitAreaBody",
"Name": "Body"
},
{
"Id": "HitAreaHead",
"Name": "Head"
}
]
}
File diff suppressed because it is too large Load Diff
+77
View File
@@ -0,0 +1,77 @@
var container = FindNode<Control>("Lastground");
if (container == null) return;
var existing = container.GetNodeOrNull<Node>("Live2DTestModel");
if (existing != null) return;
var model = Cthangover.Live2D.Cubism.Services.Live2DService.CreateModel(container, "models/runtime/ren.model3.json", "Live2DTestModel", "live2d_test");
var dragPanelParent = FindNode<Control>("ModBeforeUIPanel") ?? container;
var dragPanel = new Godot.ColorRect();
dragPanel.Name = "Live2DDragPanel";
dragPanel.MouseFilter = Godot.Control.MouseFilterEnum.Stop;
dragPanel.Color = new Godot.Color(0, 1f, 0, 0f);
dragPanel.Size = new Godot.Vector2(400, 400);
dragPanel.AnchorLeft = 0.5f;
dragPanel.AnchorRight = 0.5f;
dragPanel.AnchorTop = 0.5f;
dragPanel.AnchorBottom = 0.5f;
dragPanel.OffsetLeft = -200f;
dragPanel.OffsetRight = 200f;
dragPanel.OffsetTop = -200f;
dragPanel.OffsetBottom = 200f;
dragPanelParent.AddChild(dragPanel);
bool dragging = false;
float mouseStartX = 0f;
float mouseStartY = 0f;
float baseValueX = 0f;
float baseValueY = 0f;
var targetParamX = model.FindParameter("ParamAngleX");
var targetParamY = model.FindParameter("ParamAngleY");
dragPanel.GuiInput += (Godot.InputEvent e) =>
{
if (e is Godot.InputEventMouseButton mb)
{
if (mb.ButtonIndex == Godot.MouseButton.Left)
{
if (mb.Pressed)
{
dragging = true;
mouseStartX = mb.GlobalPosition.X;
mouseStartY = mb.GlobalPosition.Y;
baseValueX = targetParamX?.Value ?? 0f;
baseValueY = targetParamY?.Value ?? 0f;
}
else
{
if (dragging)
{
dragging = false;
}
}
}
}
if (dragging && e is Godot.InputEventMouseMotion mm)
{
var deltaX = (mm.GlobalPosition.X - mouseStartX) / 30f;
var deltaY = (mm.GlobalPosition.Y - mouseStartY) / 30f;
if (targetParamX != null)
{
var newX = Math.Clamp(baseValueX + deltaX, targetParamX.MinimumValue, targetParamX.MaximumValue);
model.SetLiveParameter("ParamAngleX", newX);
}
if (targetParamY != null)
{
var newY = Math.Clamp(baseValueY + deltaY, targetParamY.MinimumValue, targetParamY.MaximumValue);
model.SetLiveParameter("ParamAngleY", newY);
}
}
};
+11
View File
@@ -0,0 +1,11 @@
var container = FindNode<Control>("Lastground");
if (container != null)
{
var model = container.GetNodeOrNull<Node>("Live2DTestModel");
if (model != null)
model.QueueFree();
}
var dragPanel = FindNode<Godot.ColorRect>("Live2DDragPanel");
if (dragPanel != null)
dragPanel.QueueFree();