Communitygithub.com

半身皮套:从一张立绘到 VTube Studio

一张立绘或一段角色描述进去,Agent 一步步做出能在 VTS 里直播用的半身 Live2D 皮套,不用手动建模、不开 Cubism Editor。

半身皮套:从一张立绘到 VTube Studio とは?

このスキルは、一枚の立ち絵またはテキストによるキャラクター記述から、VTube Studio(VTS)で配信に使用できる半身のLive2Dアバターを自動生成するAIエージェント用スキルです。ユーザーは立ち絵の確認(Step 1)、画像のSee-throughへのアップロード同意(Step 3)、VTSでの最終確認(Step 5)の3つを行うだけで、残りの処理はAgentが自律的に実行します。対応する機能は、小角度の首振り・傾げ・体追従、呼吸、瞬き(両目・片目)、口パク、4種類の表情、段階的な髪の揺れ(ショート・ロング・ツインテール等)、アクセサリーやピアス、メガネの動き、手招き・手を広げる・指差しの3つの手ジェスチャー、頬染めなど、配信に必要な基本動作を網羅します。出力はVTSが直接読み込める `.moc3` ファイル(Cubism Editorのプロジェクトファイルではない)で、ユーザーは手動モデリングやメッシュ調整を一切行う必要がありません。macOSで動作確認済み、Windowsは未検証。

対応✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/bellisji233/live2d-halfbody-skill/tree/HEAD

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

半身皮套:从一张立绘到 VTube Studio は何をしますか?

给不想手动建模、不想调网格的人。一张立绘或一段角色描述进去,Agent 一步步做出能在 VTS 里直播用的半身 Live2D 皮套。用户只做三件事:

  1. 确认立绘(第 1 步);
  2. 同意把立绘传到 See-through(第 3 步,Hugging Face,备用魔搭);
  3. 在 VTS 里看效果,回复 通过 或 不通过:<现象>(第 5 步)。

其余由 Agent 完成,并在交给用户前自查。

跑一次就有的功能

功能驱动
转头左右、上下(±30),歪头时身体跟着倾斜摄像头
身体跟随:左右转、前后、呼吸起伏摄像头、VTS 自动呼吸
眨眼、单眼眨眼(快闭上时换成画好的闭眼);半闭眼时双眼皮淡出摄像头(左右眼分开)
眼珠跟随、眉毛上下摄像头
张嘴说话、嘴角笑摄像头
头发分段摆动:刘海(可选)、两侧(三段,从发根到发梢一段跟一段;可别在耳后)、后发或发髻;点头时上下弹。双马尾每条从发绳往下单独摆,同样分三段。过肩长发在肩膀以下跟身体走物理
挂件(项链吊坠、耳坠)摆动物理
眼镜跟着脸转摄像头
表情:笑眼 N1、O 型嘴 N2、急眼 N3、困扰 N4,清除 N0快捷键
手势:招手 N5、摊手 N6、指向 N7快捷键(也配了摄像头手势,见“已知问题”)
脸红 N8快捷键

做不到:大角度转头(要侧脸素材)、全身、手臂跟着摄像头连续动(要分段手臂素材)。产出是 VTS 直接用的 .moc3,不是 Cubism Editor 的工程文件(.cmo3),Editor 打不开。精修级的效果(更细的物理、更多表情、商业级网格)要把 layers-st/ 的图层导进 Cubism Editor 重新绑定。

文件夹

素材/角色名/                 立绘、提示词、变体、See-through 结果、图层
  A0-base.png                定稿立绘
  prompts/                   从 references/提示词/标准/ 复制,填好 [[…]]
  check/                     每张变体的对位检查图
  seethrough.psd             See-through 的原始结果
  seethrough/                拆成每层一张 PNG
  layers/                    自拆的图层:只作 See-through 合成的底,不单独交付
  layers-st/                 最终图层(See-through 合成,含手势和脸红)
  R0-rest.png                最终图层的静止合成,手势和脸红变体的底图
角色/角色名/
  character.json             位置、幅度、图层对照
  标注.png                    character.json 里的位置画在立绘上
  素材检查/  prepared/  build/runtime/  自查/  vts/

步骤

命令都在用户的工作目录(放 素材/、角色/ 的地方)里跑,命令前加 PYTHONPATH=<skill 目录>(如 ~/.claude/skills/live2d-halfbody),Python 才找得到 rigkit。

0. 检查环境

python -m rigkit.doctor

有 ✗ 的先处理完再出图,否则会在出完二十来张图之后才卡住。! 只影响一部分:没有 See-through 令牌时匿名额度不一定够,没有 ffmpeg 时出不了自查短片,没有 Codex 时用其他图像工具出图(见第 2 步)。

1. 立绘 —— 用户确认

把 references/提示词/标准/ 整个复制到 素材/角色名/prompts/,先填好 A0-base.txt 里的 [[…]](外貌、刘海、两侧头发、头发长短、眼镜、耳坠)。

  • 只有描述:照描述填,生成立绘。
  • 有立绘:存为 素材/角色名/参考.png,生成时作为参考图附上,得到一张按绑定要求画的版本(脖子露出;有刘海时停在眉毛以上;两侧头发盖住耳朵到下巴为止,或别在耳后;平光、白底、手臂和身体之间留缝)。原图不满足这些要求时,直接拆会在动起来时出问题。
python -m rigkit.variants 素材/角色名 A0-base

没有 Codex 时按第 2 步的“用其他图像工具出图”出 A0。给用户看,用户确认后才往下做。

已有按 图层清单 分好层的文件时,跳到第 4 步。

2. 出图

把 prompts/ 里其余的 [[…]] 换成这个角色的描述;角色没有的部件删掉对应的提示词:帽子或发饰 V1,耳前的侧发 V2,刘海 V3,挂件 V9(S1 里同时删掉那一行,见 出图)。然后:

python -m rigkit.variants 素材/角色名

依次生成 13~17 张“整张图改一处”的变体,每张出对位检查图。偏移 4 px 以内、改动只在该改的地方算合格;不合格删掉重出,同一张最多三次。细节见 出图。

用其他图像工具出图(没有 Codex,或 Agent 自己能出图):variants 遇到已经有的图只做检查,不重出,所以可以先用别的工具把图出好放进去。

python -m rigkit.variants 素材/角色名 --list

每行一张图:要附的图、提示词文件、出了没有。按顺序一次出一张,附的图标着“还没有”时等它出好:

  • 提示词用 prompts/<名>.txt 的全文,不改写;只附列出的那一张图,让工具在它上面改。A0 附参考图,没有参考图时直接生成。
  • 工具要能改图:给一张图和提示词,返回改过的同一张图。只能凭文字出新图的工具只能出 A0。
  • 存为 素材/角色名/<名>.png,和附的图长宽比相同。不裁、不加边、不抠图、不修补。
  • A0 出成正方形;不是 1254×1254 时缩放到这个尺寸(做过的角色都是这个尺寸)。

出完一批,跑一次 python -m rigkit.variants 素材/角色名 出检查图,合格标准同上。第 3 步的手势和脸红同样:--list F1-blush P1-wave P2-explain P3-point。还没用 Codex 以外的工具完整做过一个角色。

3. 拆层 —— 用户同意上传

先用变体自拆,作为合成的底:

python -m rigkit.split 素材/角色名 素材/角色名/layers --pad-top 90

再问用户是否同意把立绘传到 See-through,同意后:

python -m rigkit.seethrough fetch 素材/角色名/A0-base.png 素材/角色名/seethrough
python -m rigkit.seethrough split 素材/角色名 素材/角色名/layers 素材/角色名/layers-st --pad-top 90

fetch 先试 Hugging Face,没跑成再换魔搭(--site hf 或 --site modelscope 指定一个),各用能给的最高分辨率。也可以把网页版、ComfyUI 或自己显卡跑出的 PSD 交给它:fetch 那个.psd 素材/角色名/seethrough。本机装了 See-through 时用 --site local:不传图,不占额度(见“环境”)。

最终图层必须走 See-through:自拆的图层动起来边缘有碎点、被挡住的头发补不全,不单独交付。当天没有额度时,换另一个网站、等第二天,或者用 PSD。

split 会逐条打印它对 See-through 图层做的修正(裁掉画到别处的、挪回归错的配饰、补漏画的部件),规则见 规则 的“See-through 合成”。看 layers-st/拆层总览.png:每层只有自己的东西,静止合成和立绘只差在画风。

闭眼、笑眼是自拆的。它们带进旁边的线或边缘毛躁、同一处改两次还在时,把这两张变体交给 See-through 拆,再跑一次上面的 split,它会改用 See-through 的睫毛层(规则第 103 条):

python -m rigkit.seethrough fetch 素材/角色名/D5-eyes-closed.png 素材/角色名/seethrough-D5-eyes-closed
python -m rigkit.seethrough fetch 素材/角色名/D6-eyes-smile.png 素材/角色名/seethrough-D6-eyes-smile

传到网站同样先问用户,每张占一次额度。本机跑时加 --site local --head-from 素材/角色名/seethrough,只拆头部。

然后做手势和脸红:

python -m rigkit.extras 素材/角色名 素材/角色名/layers-st        # 写出 R0-rest.png
python -m rigkit.variants 素材/角色名 F1-blush P1-wave P2-explain P3-point
python -m rigkit.extras 素材/角色名 素材/角色名/layers-st        # 加进图层

看 layers-st/手势和脸红.png:每行是静止、变体、模型里打开后的样子,手臂和身体接得上、手的边缘干净才往下做。

4. 生成并自查

python -m rigkit.estimate 素材/角色名/layers-st 角色/角色名 --name 名字
python -m rigkit.check_art 角色/角色名/character.json
python -m rigkit.prepare 角色/角色名/character.json
python -m rigkit.build 角色/角色名/character.json             # 几分钟
  • estimate 不覆盖已有的 character.json,写成 character.draft.json;图层改过要重估时,比对后换上。
  • 标注.png:脸的椭圆、眼眉鼻嘴、歪头转轴、颈根、肩、腰、发根线不在对的位置时,改 character.json 里对应的数字,重新 prepare 和 build。
  • 素材检查/:露底 有品红、原画对照 有成线的红色时,回到第 3 步。透出背景 列出静止时没盖住的地方、手势时变透明的地方,再看 青底.png(静止和各手势放在青色背景上):白衣服、浅色皮肤处的缺口在白底上看不出。手臂挪开处变透明是正常的,其余回到第 3 步。

自查:

python -m rigkit.preview flips 角色/角色名/build/runtime
python -m rigkit.preview sheet 角色/角色名/character.json 角色/角色名/自查 新版=角色/角色名/build/runtime
python -m rigkit.preview clip 角色/角色名/character.json 角色/角色名/自查/动作.mp4 新版=角色/角色名/build/runtime

翻折三角形应为 0。看放大图和短片里的固定检查区(眉毛和刘海、脸边、下巴和脖子、太阳穴和耳朵、眼角和睫毛、嘴角),有问题先修,再交给用户。有上一版时把上一版放在前面并排比。

再在 VTS 的背景色上,把闭眼、半闭、笑眼、张大嘴、半张嘴、三个手势、左右甩头各渲一张,眼睛、嘴、头发交界放大三到四倍看:用户在 VTS 里最先看到的就是这些画面。

5. 装进 VTS —— 用户验收

python -m rigkit.vts 角色/角色名/character.json --install

新模型可以在 VTS 开着时装;覆盖已装的模型要先退出 VTS,这时保留用户在 VTS 里调过的设置,只补缺的快捷键和映射。VTS 开着又要换新版时,改 vts.name 和 vts.folder 装成新文件夹。

给用户并排图、短片和下面这张清单,回复 通过 或 不通过:<現象>:

看什么怎么做
转头、歪头左右上下转头、歪头:脸、头发、帽子、耳朵跟着转,没有裂缝、碎点、留在原地的东西
眼睛眨眼、单眼眨眼、半闭眼;转头时睫毛不穿过头发
嘴说话、笑;闭着嘴转头时不歪嘴
头发甩头:刘海、侧发、后发分段摆,从发根到发梢一段比一段晚;点头时上下弹;长发在肩膀以下跟身体
挂件身体动时吊坠摆动,底下的衣服完整
身体身体跟随左右转、前后,呼吸起伏
表情N1~N4 切换,N0 清除
手势N5~N7:身体画风不跳,手的边缘干净;手势打开时转头,手臂跟着身体走
脸红N8:边缘柔和;甩头时头发下面不露边

调幅度

动作幅度都在 character.json:

想改字段
歪头角度head.tilt_deg(满幅时的度数)
转头时脸走多远head.yaw_px、head.pitch_px
身体倾斜body.tilt_deg(每单位参数的度数,满幅 ×10)
呼吸起伏body.breath.head、body.breath.shoulder(像素)
身体跟随body.turn、body.shift、body.lean_y
头发摆幅hair.locks.<图层>.swing;中段和发梢 hair.locks.<图层>.bend;点头 hair.locks.<图层>.pitch
物理手感hair.locks.<图层>.chain(三段)或 physics:delay 越小越拖、length 越长越慢
挂件摆幅dangles.<图层>.deg(满幅时的度数)
半闭眼eyes.crease_fade(双眼皮淡出的区间)、eyes.lower_from(下眼睑开始合的位置)
嘴从哪里开始张mouth.open_from:摄像头读数低于它时保持闭嘴

幅度按 VTS 半身取景和真人动作判断:正常歪头约 15°,模型只转 3° 就等于没有。改完重新 build。其余字段见 配置说明。

规则

全部规则和来由见 规则。最常被违反的几条:

  • 动手前先查 Live2D 的标准做法,说清楚打算怎么做。
  • 切图用 See-through,图像模型只补它给不了的细节(表情、被挡住的部分、手势)。
  • 只处理有把握的部分:See-through 的图层整块用,代码只做整块的取舍、挪动和按不相连的块分开,不在它的层里按颜色逐像素再切(切出来都毛躁)。要改一处,先和 See-through 原样并排放大比,没有明显更好就不改。
  • 新规则先在所有已有角色上量判断依据、定适用范围,改完新旧代码各跑一遍逐层比,不误伤已通过的角色。每条规则写明范围:通用,还是只在某种情况下触发(触发条件、不管哪些情况)。
  • 每轮给同尺寸并排图和短片,由人判断;翻折数、像素差只用来排查破面。
  • 同一个症状修了三轮还在,停止改代码,改用素材解决。
  • 图像模型只派“整张图改一处”,不派“只留一部分”;要的部分由代码用差值算。
  • 传图到外部服务前先问用户;账号和 token 由用户自己注册、自己填,不在对话里复述 token。
  • 安装时不覆盖用户的 vtube.json,覆盖已装模型时 VTS 要先退出。

环境

  • Python 3.10+:pip install -r <skill 目录>/requirements.txt(系统 Python 不让装时建一个虚拟环境)。出短片要 ffmpeg。
  • Codex 命令行(出图):ChatGPT 桌面版自带,或单独安装的 codex(在 PATH 里即可),登录 ChatGPT 账号;都不是时把环境变量 CODEX 指向它。没有 Codex 时用其他能改图的图像工具,见第 2 步。
  • See-through(拆层),两个网站跑的是同一个模型,至少准备一个:
    • Hugging Face(首选,几分钟一次,最高 1280):不登录时每天的免费显卡时间不一定够跑一次;用户注册免费账号、建一个 Read token,放进环境变量 HF_TOKEN 或 ~/.cache/huggingface/token(hf auth login 存的位置),每天约 1~2 次。
    • 魔搭 ModelScope(备用,免费,最高 1536):用户注册账号、建一个访问令牌,放进环境变量 MODELSCOPE_API_TOKEN 或 ~/.cache/modelscope/token。要排队,一次可能半小时。1536 的头发轮廓和眼睛比 1280 更接近原画。
    • 本机(可选,不传图,不限次数):在 Apple 芯片、24 GB 内存上验证过,1280 整张约 21 分钟,只拆头部约 9 分钟;第一次运行下载约 13 GB 模型。装好后把环境变量 SEETHROUGH_DIR 指向它,装法见 出图 的“本机跑 See-through”。
  • VTube Studio(Steam 版)。
  • Live2D Cubism Core(预览、自查、图标要用):装了 Cubism Editor 时自动找到;否则下载 Cubism SDK for Native,把环境变量 CUBISM_CORE 指向其中的 Core 动态库。Core 按 Live2D 的许可使用,不随本 skill 分发。

macOS 上验证过;Windows 未验证。

已知问题

  • 摄像头手势(张开手掌 = 招手、双手张开 = 摊手、竖食指 = 指向):第一个角色能触发,第二个角色配置逐字段相同却不触发,原因未查明。快捷键 N5~N7 不受影响。
  • 静止时是 See-through 画的样子,比原画软一点,睫毛、发梢描边的细节少一些。
  • 戴眼镜、镜框紧挨双眼皮时,See-through 会丢掉双眼皮线,在睫毛上沿画一道浅灰带,按原样保留。
  • 眼尾贴着脸颊和耳朵之间的轮廓线时(毛线帽),自拆的闭眼和笑眼图层会带进一小段这条轮廓线,转头时在脸边露出来。把这两张变体交给 See-through 拆可以去掉(第 3 步)。

関連スキル