跳到主要内容

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:逻辑名称,本插件会根据这个名字派发动作。约定的名字一般是 HeadBody,对应模型的"头"和"身体"区域。
  • 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?

  1. 打开 .cmo3 工程,进入 建模 视图。
  2. 选中你想作为命中区的 ArtMesh(一般是覆盖头部 / 身体的那一片网格)。
  3. 右侧检查器 → ID,记下或修改一个好认的 ID(比如 HitAreaHead)。
  4. 导出 .moc3 时勾选「嵌入纹理图集」并生成 .model3.json
  5. 用文本编辑器打开 .model3.json,在 HitAreas 数组里加一条 { "Name": "Head", "Id": "HitAreaHead" }(如果导出时已经勾了"含 HitArea",Editor 会自动写)。

4. 调试技巧

  • 如果点击没反应,先看浏览器控制台有没有 motion / expression 加载失败的错误。
  • HitArea 的命中是基于 ArtMesh 的 实际可见网格,如果该 ArtMesh 透明度为 0(被你藏起来了),它依然占着那块命中盒;这通常是"明明没看到东西却点得到"的原因。
  • 不同模型作者命名不一致:有的把头标成 HitAreaHead,有的标成 head,有的甚至给每个 HitArea 起名 HitArea。本插件按 Name 派发,所以请确保 Name 是 HeadBody

5. 进一步阅读