zyc 72e7df09cd Initial commit: AR avatar prototype
包含三个子项目:
- avatar-h5-renderer: Live2D Cubism 4 H5 渲染器 (Vite + TS)
- avatar_flutter_app: Flutter 容器 App (打包 H5 进 WebView)
- gif-export: puppeteer 导出 32 个动作的透明 GIF (供 ESP32 圆屏播放)

模型资源: Haru, Natori (含贴图、moc3、motions, expressions)
设计文档: AI驱动虚拟形象渲染方案_v5.1.md

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-12 11:14:10 +08:00

1189 lines
12 KiB
JSON

{
"Version": 3,
"Meta": {
"Duration": 2.9,
"Fps": 30.0,
"Loop": true,
"AreBeziersRestricted": true,
"CurveCount": 63,
"TotalSegmentCount": 143,
"TotalPointCount": 326,
"UserDataCount": 0,
"TotalUserDataSize": 0
},
"Curves": [
{
"Target": "Model",
"Id": "Opacity",
"Segments": [
0,
1,
1,
0.96,
1,
1.91,
1,
2.87,
1,
0,
2.9,
1
]
},
{
"Target": "Parameter",
"Id": "ParamAngleX",
"Segments": [
0,
0,
1,
0.956,
0,
1.911,
0,
2.867,
0,
0,
2.9,
0
]
},
{
"Target": "Parameter",
"Id": "ParamAngleY",
"Segments": [
0,
0,
1,
0.367,
0,
0.733,
0,
1.1,
0,
1,
1.2,
0,
1.3,
-8,
1.4,
-8,
1,
1.456,
-8,
1.511,
-5.237,
1.567,
0,
1,
1.667,
9.427,
1.767,
14,
1.867,
14,
1,
1.989,
14,
2.111,
-16,
2.233,
-16,
1,
2.389,
-16,
2.544,
0,
2.7,
0,
1,
2.756,
0,
2.811,
0,
2.867,
0,
0,
2.9,
0
]
},
{
"Target": "Parameter",
"Id": "ParamAngleZ",
"Segments": [
0,
0,
1,
0.956,
0,
1.911,
0,
2.867,
0,
0,
2.9,
0
]
},
{
"Target": "Parameter",
"Id": "ParamTere",
"Segments": [
0,
0,
1,
0.956,
0,
1.911,
0,
2.867,
0,
0,
2.9,
0
]
},
{
"Target": "Parameter",
"Id": "ParamFaceForm",
"Segments": [
0,
0,
1,
0.956,
0,
1.911,
0,
2.867,
0,
0,
2.9,
0
]
},
{
"Target": "Parameter",
"Id": "ParamEyeLOpen",
"Segments": [
0,
1,
1,
0.667,
1,
1.333,
1,
2,
1,
1,
2.044,
1,
2.089,
0,
2.133,
0,
1,
2.2,
0,
2.267,
0,
2.333,
0,
1,
2.389,
0,
2.444,
1,
2.5,
1,
1,
2.622,
1,
2.744,
1,
2.867,
1,
0,
2.9,
1
]
},
{
"Target": "Parameter",
"Id": "ParamEyeLSmile",
"Segments": [
0,
0,
1,
0.956,
0,
1.911,
0,
2.867,
0,
0,
2.9,
0
]
},
{
"Target": "Parameter",
"Id": "ParamEyeROpen",
"Segments": [
0,
1,
1,
0.667,
1,
1.333,
1,
2,
1,
1,
2.044,
1,
2.089,
0,
2.133,
0,
1,
2.2,
0,
2.267,
0,
2.333,
0,
1,
2.389,
0,
2.444,
1,
2.5,
1,
1,
2.622,
1,
2.744,
1,
2.867,
1,
0,
2.9,
1
]
},
{
"Target": "Parameter",
"Id": "ParamEyeRSmile",
"Segments": [
0,
0,
1,
0.956,
0,
1.911,
0,
2.867,
0,
0,
2.9,
0
]
},
{
"Target": "Parameter",
"Id": "ParamEyeForm",
"Segments": [
0,
0,
1,
0.956,
0,
1.911,
0,
2.867,
0,
0,
2.9,
0
]
},
{
"Target": "Parameter",
"Id": "ParamEyeBallForm",
"Segments": [
0,
0,
1,
0.956,
0,
1.911,
0,
2.867,
0,
0,
2.9,
0
]
},
{
"Target": "Parameter",
"Id": "ParamTear",
"Segments": [
0,
0,
1,
0.956,
0,
1.911,
0,
2.867,
0,
0,
2.9,
0
]
},
{
"Target": "Parameter",
"Id": "ParamEyeBallX",
"Segments": [
0,
0,
1,
0.956,
0,
1.911,
0,
2.867,
0,
0,
2.9,
0
]
},
{
"Target": "Parameter",
"Id": "ParamEyeBallY",
"Segments": [
0,
0,
1,
0.956,
0,
1.911,
0,
2.867,
0,
0,
2.9,
0
]
},
{
"Target": "Parameter",
"Id": "ParamBrowLY",
"Segments": [
0,
0,
1,
0.956,
0,
1.911,
0,
2.867,
0,
0,
2.9,
0
]
},
{
"Target": "Parameter",
"Id": "ParamBrowRY",
"Segments": [
0,
0,
1,
0.956,
0,
1.911,
0,
2.867,
0,
0,
2.9,
0
]
},
{
"Target": "Parameter",
"Id": "ParamBrowLX",
"Segments": [
0,
0,
1,
0.956,
0,
1.911,
0,
2.867,
0,
0,
2.9,
0
]
},
{
"Target": "Parameter",
"Id": "ParamBrowRX",
"Segments": [
0,
0,
1,
0.956,
0,
1.911,
0,
2.867,
0,
0,
2.9,
0
]
},
{
"Target": "Parameter",
"Id": "ParamBrowLAngle",
"Segments": [
0,
0,
1,
0.956,
0,
1.911,
0,
2.867,
0,
0,
2.9,
0
]
},
{
"Target": "Parameter",
"Id": "ParamBrowRAngle",
"Segments": [
0,
0,
1,
0.956,
0,
1.911,
0,
2.867,
0,
0,
2.9,
0
]
},
{
"Target": "Parameter",
"Id": "ParamBrowLForm",
"Segments": [
0,
0,
1,
0.956,
0,
1.911,
0,
2.867,
0,
0,
2.9,
0
]
},
{
"Target": "Parameter",
"Id": "ParamBrowRForm",
"Segments": [
0,
0,
1,
0.956,
0,
1.911,
0,
2.867,
0,
0,
2.9,
0
]
},
{
"Target": "Parameter",
"Id": "ParamMouthForm",
"Segments": [
0,
1,
1,
0.956,
1,
1.911,
1,
2.867,
1,
0,
2.9,
1
]
},
{
"Target": "Parameter",
"Id": "ParamMouthOpenY",
"Segments": [
0,
0,
1,
0.956,
0,
1.911,
0,
2.867,
0,
0,
2.9,
0
]
},
{
"Target": "Parameter",
"Id": "ParamScarf",
"Segments": [
0,
0,
1,
0.956,
0,
1.911,
0,
2.867,
0,
0,
2.9,
0
]
},
{
"Target": "Parameter",
"Id": "ParamBodyAngleX",
"Segments": [
0,
0,
1,
0.956,
0,
1.911,
0,
2.867,
0,
0,
2.9,
0
]
},
{
"Target": "Parameter",
"Id": "ParamBodyAngleY",
"Segments": [
0,
0,
1,
0.489,
0,
0.978,
0,
1.467,
0,
1,
1.622,
0,
1.778,
2,
1.933,
2,
1,
2.056,
2,
2.178,
0,
2.3,
0,
1,
2.489,
0,
2.678,
0,
2.867,
0,
0,
2.9,
0
]
},
{
"Target": "Parameter",
"Id": "ParamBodyAngleZ",
"Segments": [
0,
0,
1,
0.956,
0,
1.911,
0,
2.867,
0,
0,
2.9,
0
]
},
{
"Target": "Parameter",
"Id": "ParamBodyUpper",
"Segments": [
0,
0,
1,
0.956,
0,
1.911,
0,
2.867,
0,
0,
2.9,
0
]
},
{
"Target": "Parameter",
"Id": "ParamBreath",
"Segments": [
0,
0,
1,
0.956,
0,
1.911,
0,
2.867,
0,
0,
2.9,
0
]
},
{
"Target": "Parameter",
"Id": "ParamBustY",
"Segments": [
0,
0,
1,
0.956,
0,
1.911,
0,
2.867,
0,
0,
2.9,
0
]
},
{
"Target": "Parameter",
"Id": "ParamArmLA",
"Segments": [
0,
1,
1,
0.956,
1,
1.911,
1,
2.867,
1,
0,
2.9,
1
]
},
{
"Target": "Parameter",
"Id": "ParamArmRA",
"Segments": [
0,
1,
1,
0.956,
1,
1.911,
1,
2.867,
1,
0,
2.9,
1
]
},
{
"Target": "Parameter",
"Id": "ParamArmLB",
"Segments": [
0,
5,
1,
0.956,
5,
1.911,
5,
2.867,
5,
0,
2.9,
5
]
},
{
"Target": "Parameter",
"Id": "ParamArmRB",
"Segments": [
0,
0,
1,
0.956,
0,
1.911,
0,
2.867,
0,
0,
2.9,
0
]
},
{
"Target": "Parameter",
"Id": "ParamHandChangeR",
"Segments": [
0,
0,
1,
0.956,
0,
1.911,
0,
2.867,
0,
0,
2.9,
0
]
},
{
"Target": "Parameter",
"Id": "ParamHandAngleR",
"Segments": [
0,
0.19,
1,
0.956,
0.19,
1.911,
0.19,
2.867,
0.19,
0,
2.9,
0.19
]
},
{
"Target": "Parameter",
"Id": "ParamHandDhangeL",
"Segments": [
0,
0,
1,
0.956,
0,
1.911,
0,
2.867,
0,
0,
2.9,
0
]
},
{
"Target": "Parameter",
"Id": "ParamHandAngleL",
"Segments": [
0,
-0.17,
1,
0.956,
-0.17,
1.911,
-0.17,
2.867,
-0.17,
0,
2.9,
-0.17
]
},
{
"Target": "Parameter",
"Id": "ParamHairFront",
"Segments": [
0,
0,
1,
0.956,
0,
1.911,
0,
2.867,
0,
0,
2.9,
0
]
},
{
"Target": "Parameter",
"Id": "ParamHairSide",
"Segments": [
0,
0,
1,
0.956,
0,
1.911,
0,
2.867,
0,
0,
2.9,
0
]
},
{
"Target": "Parameter",
"Id": "ParamHairBack",
"Segments": [
0,
0,
1,
0.956,
0,
1.911,
0,
2.867,
0,
0,
2.9,
0
]
},
{
"Target": "PartOpacity",
"Id": "Part01Core",
"Segments": [
0,
1,
2,
2.87,
1,
0,
2.9,
1
]
},
{
"Target": "PartOpacity",
"Id": "Part01Hoho001",
"Segments": [
0,
1,
2,
2.87,
1,
0,
2.9,
1
]
},
{
"Target": "PartOpacity",
"Id": "Part01Brow001",
"Segments": [
0,
1,
2,
2.87,
1,
0,
2.9,
1
]
},
{
"Target": "PartOpacity",
"Id": "Part01Tear",
"Segments": [
0,
1,
2,
2.87,
1,
0,
2.9,
1
]
},
{
"Target": "PartOpacity",
"Id": "Part01EyeBall001",
"Segments": [
0,
1,
2,
2.87,
1,
0,
2.9,
1
]
},
{
"Target": "PartOpacity",
"Id": "Part01Eye001",
"Segments": [
0,
1,
2,
2.87,
1,
0,
2.9,
1
]
},
{
"Target": "PartOpacity",
"Id": "Part01Nose001",
"Segments": [
0,
1,
2,
2.87,
1,
0,
2.9,
1
]
},
{
"Target": "PartOpacity",
"Id": "Part01Mouth001",
"Segments": [
0,
1,
2,
2.87,
1,
0,
2.9,
1
]
},
{
"Target": "PartOpacity",
"Id": "Part01Face001",
"Segments": [
0,
1,
2,
2.87,
1,
0,
2.9,
1
]
},
{
"Target": "PartOpacity",
"Id": "Part01Ear001",
"Segments": [
0,
1,
2,
2.87,
1,
0,
2.9,
1
]
},
{
"Target": "PartOpacity",
"Id": "Part01Neck001",
"Segments": [
0,
1,
2,
2.87,
1,
0,
2.9,
1
]
},
{
"Target": "PartOpacity",
"Id": "Part01HairFront001",
"Segments": [
0,
1,
2,
2.87,
1,
0,
2.9,
1
]
},
{
"Target": "PartOpacity",
"Id": "Part01HairSide001",
"Segments": [
0,
1,
2,
2.87,
1,
0,
2.9,
1
]
},
{
"Target": "PartOpacity",
"Id": "Part01HairBack001",
"Segments": [
0,
1,
2,
2.87,
1,
0,
2.9,
1
]
},
{
"Target": "PartOpacity",
"Id": "Part01ArmRB001",
"Segments": [
0,
0,
2,
2.87,
0,
0,
2.9,
0
]
},
{
"Target": "PartOpacity",
"Id": "Part01ArmLB001",
"Segments": [
0,
0,
2,
2.87,
0,
0,
2.9,
0
]
},
{
"Target": "PartOpacity",
"Id": "Part01ArmRA001",
"Segments": [
0,
1,
2,
2.87,
1,
0,
2.9,
1
]
},
{
"Target": "PartOpacity",
"Id": "Part01ArmLA001",
"Segments": [
0,
1,
2,
2.87,
1,
0,
2.9,
1
]
},
{
"Target": "PartOpacity",
"Id": "Part01Body001",
"Segments": [
0,
1,
2,
2.87,
1,
0,
2.9,
1
]
},
{
"Target": "PartOpacity",
"Id": "Part01Sketch",
"Segments": [
0,
0,
2,
2.87,
0,
0,
2.9,
0
]
}
]
}