# Megumi 素材清单

Megumi 是 Cubism 2 模型，入口为 `assets/models/megumi/katou_01.model.json`。

## 被埋藏的动作

配置把 16 个动作中的 15 个放进了名称为空字符串的动作组 `""`。只遍历常见的 `idle`、`tap_body` 等命名动作组的客户端会完全跳过它们。Avatar 使用 `playMotionByFile()` 直接按文件播放，以绕开空组名。

这不是单纯的客户端兼容问题：素材自带的旧网页运行时代码明确尝试调用 `tap_body`、`flick_head`、`pinch_in`、`pinch_out`、`talk`、`rest` 等组，但当前模型配置一个都没有，只剩空组和 `idle`。因此这套素材很可能被二次打包过，运行时代码与模型配置已经错配。开发台按文件播放后，16 个动作均已实际触发成功。

| 系列 | S（快） | 标准 | W（慢） |
| --- | ---: | ---: | ---: |
| 生气 | 3.17s | 3.50s | 3.87s |
| 开心 | 3.43s | 3.80s | 4.20s |
| 伤心 | 2.93s | 3.27s | 3.60s |
| 惊讶 | 2.70s | 2.97s | 3.27s |

从每个文件的 30 FPS 采样数可以确认：`S` 总是最短，`W` 总是最长，未带后缀的版本居中，因此开发台按“快 / 标准 / 慢”标注。另有三个 10.60 秒待机动作。`REPEAT_01` 只驱动 `__DURATION__` 曲线，不含可见角色参数，实质上是 2.97 秒的计时占位，不是点头动作。

目录中的 `katou_01.model3.json` 也不是真正的 Cubism 3 配置：它仍使用 Cubism 2 的 `model`、`textures`、`motions` 等旧字段，并指向 `.moc`。它只是另一份格式化过的旧配置，不能让模型自动升级到新引擎。

## 表情与隐藏部件

模型包含生气、低落、开心、平静、伤心、惊讶六种表情。Pose 文件还定义了左右手臂各 A/B/C 三套互斥部件：

- `PARTS_01_ARM_L_A/B/C`
- `PARTS_01_ARM_R_A/B/C`

开发台通过 `VISIBLE:PARTS_01_ARM_*` 参数强制切换三套姿势，并允许检查和覆盖其余全部原始参数。

## 动作控制策略

- 回复表演不再由前端根据关键词或会话状态猜测。DSH system prompt 要求
  LLM 在台词前显式输出隐藏的 `<!--live2d:表情:动作-->` 指令，Avatar
  在流式接收时直接执行。
- `angry`、`fun`、`sad`、`surprise` 分别精确映射到素材的四组情绪动作；
  `fast`、`normal`、`slow` 分别映射 `S`、无后缀、`W` 文件。
- 等待、思考、工具调用和失败仍可使用基础状态作为无台词时的兜底反馈，
  但不会覆盖 LLM 已给出的回复表演指令。
- `idle-1`、`idle-2`、`idle-3` 也可由 LLM 精确选择；自动待机时仍会轮换
  这三个 10.60 秒动作。
- 点击角色时依次轮换全部 12 个情绪动作；开发台保留所有表情、动作和
  原始参数的直接触发入口。这两项只用于交互与调试，不参与回复语义判断。

### 手臂组合不是独立积木

动作曲线已经把左右手部件和手臂参数编排成不可拆的组合，不应再向 LLM
暴露独立的 `arm-a/b/c` 选项：

| 动作系列 | 左右手部件 | 手臂参数动画 |
| --- | --- | --- |
| 伤心、IDLING 1/2/3 | L_A + R_A | 无 |
| 开心 | L_B + R_B | 无 |
| 生气 | L_C + R_C | 左右臂均有动画 |
| 惊讶 | L_C + R_C | 左右臂均有动画 |

因此 LLM 选择的是完整动作包，Avatar 直接播放对应 `.mtn`；素材决定正确的
双手组合。开发台的 A/B/C 强制切换只用于素材检查，不属于对话控制协议。

## 其他部件与道具结论

模型只有一张 2048×2048 纹理图集。逐块检查后，图集中只有脸、头发、制服、裙装、蝴蝶结和三套手臂，没有手机、书、伞或其他可分离道具。

MOC 字符串中还能找到 `PARTS_01_BACKGROUND` 与 `PARTS_01_SKETCH`，但它们没有独立纹理内容，也没有出现在可调参数或 Pose 配置中，应是建模/导出残留层，不是隐藏道具。可利用的动态素材主要是：

- 三套左右手臂部件；
- `PARAM_SKIRT` 裙摆物理；
- `PARAM_BUST_Y`、`PARAM_RIBON`、三组头发物理；
- 12 个情绪动作、3 个待机动作和 6 个表情。
