Live2D 學習筆記:從分層到能動起來
Live2D 最容易被誤解的地方,是它看起來像「把圖丟進 Cubism,調幾個參數,角色就會動」。
實際做下去之後,我學到的第一件事完全相反:Live2D 是一條驗證鏈。 圖層決定 Cubism 能不能理解素材,變形器決定動作會不會牽錯地方,參數決定動作能不能被控制,runtime 測試決定模型能不能真的離開編輯器。

起點是一張看起來完整的角色圖。但對 Live2D 來說,真正重要的是它能被拆成哪些可控的層。
這篇不是完整教學,也不是把工程紀錄公開貼出來。它是我目前整理出的學習地圖:哪些地方要先想清楚,哪些地方可以小步驗證,哪些細節不該急著自動化。
更完整的長期分類頁放在 Live2D Lab。這篇保留成一次性的整理與敘事版本,分類頁會承接後續案例和 roadmap。
如果要把它當教學讀,可以照這個順序練一次:先準備一張簡單角色或小素材,列出圖層責任,做一輪 PSD preflight,再進 Cubism 只驗證 texture atlas 和一個最小動作。不要一開始就追求完整模型,先證明「素材能被控制」比較重要。
1. PSD 是地基
Live2D 的 PSD 不是一般插畫檔。它比較像一份角色零件表:每一層都應該說得出用途、遮擋關係、可動範圍,以及它在極端姿勢時會不會露出破口。
我現在把分層分成四種責任:
- Base / Under:負責在移動後不露空。
- Cover:負責壓住接縫,讓前後層關係穩定。
- AO / Soft Shadow:負責體積感,不讓零件像紙片分離。
- Control Layer:眼、嘴、髮束、袖口這類會直接掛參數或 physics 的部位。

分層不是把圖切碎,而是讓每個部位有自己的責任。眼、嘴、手、衣服與髮都要能被單獨檢查。
這裡最有用的判斷不是「層數越多越好」,而是「每一層是否能獨立通過極端姿勢想像」。如果一個陰影只能畫死在主圖上,它在頭轉、低頭或呼吸時很可能會變成破綻。
2. 接縫不是小問題
我花了不少時間在脖子、衣領、髮線、袖口這些地方。原因很簡單:這些位置是兩個不同物件相互遮擋的邊界,角色一動,邊界就會出賣你。

脖子與衣領需要 under fill、AO、soft shadow 分工,不能只靠原圖上的陰影。

袖口內側要有遮片與內陰影,否則手臂或袖子一偏移就會露出硬邊。
現在的規則是:先補「不露空」,再補「看起來有體積」。這個順序很重要。漂亮的陰影不能代替結構安全,反過來也一樣,只有補色沒有光影,動起來會很平。
3. Cubism 看到的是結構
匯入 Cubism 之後,我不會先急著做表情或 physics。第一輪檢查只看三件事:
- 圖層是否成為預期的 ArtMesh。
- 每個物件的範圍是否合理,沒有莫名其妙的全畫布 bbox。
- 物件能不能被放進正確的 deformer hierarchy。
這一步像是在檢查骨架。角色還不用會動,但它必須能被合理地抓住。
4. Deformer 是骨架,不是裝飾
Deformer hierarchy 的重點不是名稱漂亮,而是責任清楚。頭部轉動不該把袖口一起拉走,呼吸不該改變髮線,眼睛的 keyform 不該影響嘴巴。
我現在會用這種層級思考:
這種結構不需要一開始就完美,但每一層都要能回答一個問題:它負責保護哪個動作?
5. 參數與 keyform 要小步驗證
我以前會想一次做完整表情、完整頭部角度、完整 physics。現在比較保守:一次只做一個 smoke test。
例如 blink,就只驗證眼白、虹膜、眼皮、睫毛是否能在 ParamEyeLOpen 或 ParamEyeROpen 下收合。頭部 XY,就只驗證臉、脖子、髮線在三個 keyform 裡有沒有明顯破口。呼吸,就只看衣服、胸口陰影、身體輪廓能不能一起做小幅變化。
驗收條件也很具體:
- 中間 pose 不應比極端 pose 更破。
- 預設 pose 不能被意外改掉。
- 每次只存一個可回退的 checkpoint。
- 看得出非零變化,但變化不能大到像液化失控。
6. 透明容器史萊姆:先做更小的練習
角色模型太複雜,所以我另外做了透明容器史萊姆作為小型練習。它的價值不是可愛,是結構清楚:外殼、內容物、泡泡、臉、前景高光可以分開理解。

這種小素材適合練習 full-canvas layer、bbox 檢查、遮罩、以及內容物晃動群組。
史萊姆的規劃很單純:容器外壁與臉保持相對穩定,內容物、液面、泡泡集中到同一個 slosh deformer。先確認素材結構可靠,再決定要不要進 Cubism 做正式 rig。

三格預覽可以先驗證「哪些層該一起動」。這比直接進大型角色模型便宜很多。
7. Runtime QA 是最後一道門
Cubism 裡看起來正常,不代表模型能在 viewer 或 VTube Studio 裡正常。這是我目前最重視的邊界。
一個可交付的 Live2D package 至少要能通過:
model3.json能正確指到 moc、texture、physics。- texture atlas 有內容,不是空白或遺失。
- viewer 裡能看見模型,而不是只在 Cubism 裡可見。
- blink、mouth、angle、breath、physics 都能在 runtime 端被觸發。
- 極端 pose 不露空、不閃爍、不把遮片拉到錯誤位置。
所以我的結論是:Cubism 是製作環境,runtime 才是交付環境。 前者通過只能說「可能有效」,後者通過才算「真的能用」。
8. 完整學習規劃
接下來的路線我會拆成四個階段。
每個階段都要留下兩種紀錄:一種是人看得懂的截圖與說明,一種是機器能檢查的檔案結構或測試結果。只留下「我覺得有動」是不夠的。
9. 公開資料的邊界
學 Live2D 會碰到很多公開模型、教學縮圖、官方 sample、SDK、商用展示。它們都有價值,但用途不同。
- 官方文件與 sample:適合確認概念、檔案格式、SDK 行為。
- 公開教學:適合學工作流與術語,但不能把未授權內容重建成自己的教材。
- 第三方模型:適合做觀察,不適合公開拆解或再散布。
- 自有素材:適合完整記錄、完整公開、完整迭代。
所以這篇只放自有素材與高層知識。那些很細的內部探針、工具自動化、私有路徑、未公開工程樹,就留在工作筆記裡。能公開的東西應該是方法,而不是把工作台整個搬到陽光下。
目前結論
我現在對 Live2D 的理解很樸素:
先讓素材有結構,再讓結構能動,最後證明它在離開編輯器後仍然成立。
這句話聽起來慢,但它省下來的時間通常在後面:少一點巨大重做,少一點不知道哪裡壞掉的模型,少一點「在 Cubism 可以,出去就空白」的夜晚。