跳至主要内容

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. 進一步閱讀