包含三个子项目: - 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>
373 lines
5.8 KiB
JSON
373 lines
5.8 KiB
JSON
{
|
|
"Version": 3,
|
|
"Meta": {
|
|
"PhysicsSettingCount": 4,
|
|
"TotalInputCount": 14,
|
|
"TotalOutputCount": 4,
|
|
"VertexCount": 8,
|
|
"EffectiveForces": {
|
|
"Gravity": {
|
|
"X": 0,
|
|
"Y": -1
|
|
},
|
|
"Wind": {
|
|
"X": 0,
|
|
"Y": 0
|
|
}
|
|
},
|
|
"PhysicsDictionary": [
|
|
{
|
|
"Id": "PhysicsSetting1",
|
|
"Name": "前髪"
|
|
},
|
|
{
|
|
"Id": "PhysicsSetting2",
|
|
"Name": "横髪"
|
|
},
|
|
{
|
|
"Id": "PhysicsSetting3",
|
|
"Name": "後ろ髪"
|
|
},
|
|
{
|
|
"Id": "PhysicsSetting4",
|
|
"Name": "スカーフ"
|
|
}
|
|
]
|
|
},
|
|
"PhysicsSettings": [
|
|
{
|
|
"Id": "PhysicsSetting1",
|
|
"Input": [
|
|
{
|
|
"Source": {
|
|
"Target": "Parameter",
|
|
"Id": "ParamAngleX"
|
|
},
|
|
"Weight": 60,
|
|
"Type": "X",
|
|
"Reflect": false
|
|
},
|
|
{
|
|
"Source": {
|
|
"Target": "Parameter",
|
|
"Id": "ParamAngleZ"
|
|
},
|
|
"Weight": 60,
|
|
"Type": "Angle",
|
|
"Reflect": false
|
|
},
|
|
{
|
|
"Source": {
|
|
"Target": "Parameter",
|
|
"Id": "ParamBodyAngleX"
|
|
},
|
|
"Weight": 40,
|
|
"Type": "X",
|
|
"Reflect": false
|
|
},
|
|
{
|
|
"Source": {
|
|
"Target": "Parameter",
|
|
"Id": "ParamBodyAngleZ"
|
|
},
|
|
"Weight": 40,
|
|
"Type": "Angle",
|
|
"Reflect": false
|
|
}
|
|
],
|
|
"Output": [
|
|
{
|
|
"Destination": {
|
|
"Target": "Parameter",
|
|
"Id": "ParamHairFront"
|
|
},
|
|
"VertexIndex": 1,
|
|
"Scale": 1.821,
|
|
"Weight": 100,
|
|
"Type": "Angle",
|
|
"Reflect": false
|
|
}
|
|
],
|
|
"Vertices": [
|
|
{
|
|
"Position": {
|
|
"X": 0,
|
|
"Y": 0
|
|
},
|
|
"Mobility": 1,
|
|
"Delay": 1,
|
|
"Acceleration": 1,
|
|
"Radius": 0
|
|
},
|
|
{
|
|
"Position": {
|
|
"X": 0,
|
|
"Y": 8
|
|
},
|
|
"Mobility": 0.95,
|
|
"Delay": 0.8,
|
|
"Acceleration": 1.5,
|
|
"Radius": 8
|
|
}
|
|
],
|
|
"Normalization": {
|
|
"Position": {
|
|
"Minimum": -10,
|
|
"Default": 0,
|
|
"Maximum": 10
|
|
},
|
|
"Angle": {
|
|
"Minimum": -10,
|
|
"Default": 0,
|
|
"Maximum": 10
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"Id": "PhysicsSetting2",
|
|
"Input": [
|
|
{
|
|
"Source": {
|
|
"Target": "Parameter",
|
|
"Id": "ParamAngleX"
|
|
},
|
|
"Weight": 60,
|
|
"Type": "X",
|
|
"Reflect": false
|
|
},
|
|
{
|
|
"Source": {
|
|
"Target": "Parameter",
|
|
"Id": "ParamAngleZ"
|
|
},
|
|
"Weight": 60,
|
|
"Type": "Angle",
|
|
"Reflect": false
|
|
},
|
|
{
|
|
"Source": {
|
|
"Target": "Parameter",
|
|
"Id": "ParamBodyAngleX"
|
|
},
|
|
"Weight": 40,
|
|
"Type": "X",
|
|
"Reflect": false
|
|
},
|
|
{
|
|
"Source": {
|
|
"Target": "Parameter",
|
|
"Id": "ParamBodyAngleZ"
|
|
},
|
|
"Weight": 40,
|
|
"Type": "Angle",
|
|
"Reflect": false
|
|
}
|
|
],
|
|
"Output": [
|
|
{
|
|
"Destination": {
|
|
"Target": "Parameter",
|
|
"Id": "ParamHairSide"
|
|
},
|
|
"VertexIndex": 1,
|
|
"Scale": 1.593,
|
|
"Weight": 100,
|
|
"Type": "Angle",
|
|
"Reflect": false
|
|
}
|
|
],
|
|
"Vertices": [
|
|
{
|
|
"Position": {
|
|
"X": 0,
|
|
"Y": 0
|
|
},
|
|
"Mobility": 1,
|
|
"Delay": 1,
|
|
"Acceleration": 1,
|
|
"Radius": 0
|
|
},
|
|
{
|
|
"Position": {
|
|
"X": 0,
|
|
"Y": 8
|
|
},
|
|
"Mobility": 0.95,
|
|
"Delay": 0.8,
|
|
"Acceleration": 1,
|
|
"Radius": 8
|
|
}
|
|
],
|
|
"Normalization": {
|
|
"Position": {
|
|
"Minimum": -10,
|
|
"Default": 0,
|
|
"Maximum": 10
|
|
},
|
|
"Angle": {
|
|
"Minimum": -10,
|
|
"Default": 0,
|
|
"Maximum": 10
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"Id": "PhysicsSetting3",
|
|
"Input": [
|
|
{
|
|
"Source": {
|
|
"Target": "Parameter",
|
|
"Id": "ParamAngleX"
|
|
},
|
|
"Weight": 60,
|
|
"Type": "X",
|
|
"Reflect": false
|
|
},
|
|
{
|
|
"Source": {
|
|
"Target": "Parameter",
|
|
"Id": "ParamAngleZ"
|
|
},
|
|
"Weight": 60,
|
|
"Type": "Angle",
|
|
"Reflect": false
|
|
},
|
|
{
|
|
"Source": {
|
|
"Target": "Parameter",
|
|
"Id": "ParamBodyAngleX"
|
|
},
|
|
"Weight": 40,
|
|
"Type": "X",
|
|
"Reflect": false
|
|
},
|
|
{
|
|
"Source": {
|
|
"Target": "Parameter",
|
|
"Id": "ParamBodyAngleZ"
|
|
},
|
|
"Weight": 40,
|
|
"Type": "Angle",
|
|
"Reflect": false
|
|
}
|
|
],
|
|
"Output": [
|
|
{
|
|
"Destination": {
|
|
"Target": "Parameter",
|
|
"Id": "ParamHairBack"
|
|
},
|
|
"VertexIndex": 1,
|
|
"Scale": 1.943,
|
|
"Weight": 100,
|
|
"Type": "Angle",
|
|
"Reflect": false
|
|
}
|
|
],
|
|
"Vertices": [
|
|
{
|
|
"Position": {
|
|
"X": 0,
|
|
"Y": 0
|
|
},
|
|
"Mobility": 1,
|
|
"Delay": 1,
|
|
"Acceleration": 1,
|
|
"Radius": 0
|
|
},
|
|
{
|
|
"Position": {
|
|
"X": 0,
|
|
"Y": 8
|
|
},
|
|
"Mobility": 0.95,
|
|
"Delay": 0.8,
|
|
"Acceleration": 1.5,
|
|
"Radius": 8
|
|
}
|
|
],
|
|
"Normalization": {
|
|
"Position": {
|
|
"Minimum": -10,
|
|
"Default": 0,
|
|
"Maximum": 10
|
|
},
|
|
"Angle": {
|
|
"Minimum": -10,
|
|
"Default": 0,
|
|
"Maximum": 10
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"Id": "PhysicsSetting4",
|
|
"Input": [
|
|
{
|
|
"Source": {
|
|
"Target": "Parameter",
|
|
"Id": "ParamBodyAngleX"
|
|
},
|
|
"Weight": 100,
|
|
"Type": "X",
|
|
"Reflect": false
|
|
},
|
|
{
|
|
"Source": {
|
|
"Target": "Parameter",
|
|
"Id": "ParamBodyAngleZ"
|
|
},
|
|
"Weight": 100,
|
|
"Type": "Angle",
|
|
"Reflect": false
|
|
}
|
|
],
|
|
"Output": [
|
|
{
|
|
"Destination": {
|
|
"Target": "Parameter",
|
|
"Id": "ParamScarf"
|
|
},
|
|
"VertexIndex": 1,
|
|
"Scale": 0.873,
|
|
"Weight": 100,
|
|
"Type": "Angle",
|
|
"Reflect": false
|
|
}
|
|
],
|
|
"Vertices": [
|
|
{
|
|
"Position": {
|
|
"X": 0,
|
|
"Y": 0
|
|
},
|
|
"Mobility": 1,
|
|
"Delay": 1,
|
|
"Acceleration": 1,
|
|
"Radius": 0
|
|
},
|
|
{
|
|
"Position": {
|
|
"X": 0,
|
|
"Y": 10
|
|
},
|
|
"Mobility": 0.9,
|
|
"Delay": 0.6,
|
|
"Acceleration": 1.5,
|
|
"Radius": 10
|
|
}
|
|
],
|
|
"Normalization": {
|
|
"Position": {
|
|
"Minimum": -10,
|
|
"Default": 0,
|
|
"Maximum": 10
|
|
},
|
|
"Angle": {
|
|
"Minimum": -10,
|
|
"Default": 0,
|
|
"Maximum": 10
|
|
}
|
|
}
|
|
}
|
|
]
|
|
} |