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