V2 模型的触摸区域 (HitArea)
本页只针对 V2(Cubism 4+ / 5) 模型,也就是
*.model3.json。V1(journey-ad / Cubism 2~3)模型的触摸是另外一套机制(基于hit_areas_custom),本页不展开。
1. 触摸区域写在哪里?
V2 模型的触摸区由 *.model3.json 顶层 HitAreas 字段定义,每一项是一个命名 + 一个对应的 ArtMesh ID,浏览器会用 Cubism Core 计算出 ArtMesh 的命中盒,点击命中即视为该 HitArea 被点击。
{
"Version": 3,
"FileReferences": { "...": "..." },
"HitAreas": [
{ "Name": "Head", "Id": "HitAreaHead" },
{ "Name": "Body", "Id": "HitAreaBody" }
]
}
- Name:逻辑名称,本插件会根据这个名字派发动作。约定的名字一般是
Head和Body,对应模型的"头"和"身体"区域。 - Id:在 Cubism Editor 里给那块 ArtMesh 起的 ID。在 Editor 中选中网格 → 右侧检查器可以看到 / 修改这个 ID。
2. HitArea 与 motion 分组的对应关系
本插件里的派发规则与 Live2D 官方 CubismWebSamples 一致:
| 点击的 HitArea | 触发的 motion 分组 | 需要在 model3.json 中存在哪个 group |
|---|---|---|
Head | 表情切换(随机一个 expression) | Expressions 字段(不是 Motions) |
Body | 触摸身体动作组 | Motions.TapBody |
如果你的 model3.json 里没有 Expressions / TapBody,对应区域点了也不会有反应,但不会报错。
3. 在 Cubism Editor 里怎么标记一个 ArtMesh 为 HitArea?
- 打开 .cmo3 工程,进入 建模 视图。
- 选中你想作为命中区的 ArtMesh(一般是覆盖头部 / 身体的那一片网格)。
- 右侧检查器 → ID,记下或修改一个好认的 ID(比如
HitAreaHead)。 - 导出
.moc3时勾选「嵌入纹理图集」并生成.model3.json。 - 用文本编辑器打开
.model3.json,在HitAreas数组里加一条{ "Name": "Head", "Id": "HitAreaHead" }(如果导出时已经勾了"含 HitArea",Editor 会自动写)。
4. 调试技巧
- 如果点击没反应,先看浏览器控制台有没有 motion / expression 加载失败的错误。
- HitArea 的命中是基于 ArtMesh 的 实际可见网格,如果该 ArtMesh 透明度为 0(被你藏起来了),它依然占着那块命中盒;这通常是"明明没看到东西却点得到"的原因。
- 不同模型作者命名不一致:有的把头标成
HitAreaHead,有的标成head,有的甚至给每个 HitArea 起名HitArea。本插件按 Name 派发,所以请确保 Name 是Head或Body。
5. 进一步阅读
- Live2D 官方文档:命中区域设置(Cubism Editor)
- Live2D 官方文档:model3.json 文件规范
- 本插件 V2 加载器源码:
live2d_sdk/src/v2/lapplive2dmanager.ts与lappmodel.ts