Live2D 动画与映射
Mapping 标签页是将智能体行为与动画连接起来,让 Live2D 模型活起来的地方。系统有三层:Clips 定义发生什么,Rules 定义什么时候发生,智能体的状态自动驱动整个流程。
智能体状态(情绪、动作、工具调用) │ ▼ ┌──────────┐ all-match(所有匹配的规则同时触发) │ Rules │ ──────────────────────► 播放哪些片段? └──────────┘ │ ▼ ┌──────────┐ 片段并行播放 │ Clips │ ──► 随时间变化的参数变化 └──────────┘ │ 冲突通过优先级 + 混合模式解决 ▼ Live2D 模型参数更新动画片段(Clips)
Section titled “动画片段(Clips)”片段 是可复用的动画 — 一组随时间变化的参数变更。可以将它理解为可以从多个规则触发的短动画序列。
三种创建方式:
1. 手动创建
- 在 Mapping 标签页点击 Add Clip
- 添加参数轨道并设置关键帧
- 使用全屏时间线编辑器进行精确控制
2. 从表情导入
- 点击 Create From Expression
- 选择模型表情预设(
.exp3.json) - 系统创建包含 Enter → Hold → Release 阶段的片段
- 配置每个阶段的持续时间
3. 从动作导入
- 点击 Import Motion As Clip
- 选择模型动作(
.motion3.json) - 动作的曲线转换为可编辑的关键帧
| 属性 | 选项 | 说明 |
|---|---|---|
| 混合模式 | Add、Multiply、Overwrite | 此片段与其他活动片段的合成方式 |
| 播放 | One Shot、Loop、Repeat N | 片段播放次数 |
| 完成 | Complete、Bound | 触发结束时是否播放完片段 |
| 结束行为 | Stop、Hold then Release | 片段结束时的行为 |
| 释放曲线 | 持续时间(ms) | 片段结束时的平滑淡出 |
点击 Open Full Editor 打开独立的时间线编辑器:
- 每参数的关键帧轨道(支持轨道修饰器)
- 三次贝塞尔曲线编辑(可视化预览)
- 拖拽、平移、缩放操作
- 与模型同步的实时预览
关键帧编辑快捷操作
Section titled “关键帧编辑快捷操作”| 操作 | 快捷键 | 说明 |
|---|---|---|
| 选中关键帧 | 点击 | 第一次点击选中,第二次点击打开内联编辑面板 |
| 切换曲线类型 | Ctrl+点击 | 按 线性 → 贝塞尔 → 弹簧 → 阶梯 顺序循环 |
| 添加/删除关键帧 | 菱形按钮 | 播放头位置无关键帧则添加,有则删除 |
关键帧图标按曲线类型区分:
- ◇ 菱形(天蓝)— 线性插值
- ● 圆形(翠绿)— 三次贝塞尔
- ◆ 圆角菱形(紫色)— 弹簧
- ■ 方块(琥珀)— 阶梯(瞬间跳变)
修饰器是对关键帧值进行程序化变换的效果——灵感来自 After Effects 的表达式。无需额外关键帧即可添加有机运动。
- 时间线:点击轨道标签旁的 [+] 按钮,或点击修饰器徽章进行编辑
- 检查器:选中轨道上的关键帧,使用修饰器区域的 添加 下拉菜单
| 修饰器 | 徽章 | 效果 | 主要参数 |
|---|---|---|---|
| Wiggle | [W] | Perlin 噪声偏移——有机随机抖动 | 频率, 振幅 |
| Drift | [D] | 平滑漫游——在中心值附近缓慢游走 | 半径, 速度 |
| Sine | [S] | 纯正弦波——规律性周期振荡 | 振幅, 速度, 相位 |
| Pulse | [P] | 随机间隔脉冲——偶尔的突发变化 | 峰值偏移, 间隔范围 |
| Spring | [K] | 弹簧阻尼振荡——冲击后回弹衰减 | 初始偏移, 刚度, 阻尼 |
| Loop | [L] | 关键帧循环——cycle 或 pingpong | 模式 |
| Noise | [N] | 简化版 Wiggle——固定振幅噪声 | 振幅, 速度 |
| Clamp | [C] | 值域限制——将输出保持在安全范围 | 最小值, 最大值 |
轨道混合模式
Section titled “轨道混合模式”每条轨道有一个混合模式,控制其输出与其他活跃片段的合成方式:
| 模式 | 行为 | 用途 |
|---|---|---|
| Override(默认) | 高优先级片段替换低优先级 | 表情动画 |
| Add | 值叠加到其他片段的输出之上 | 呼吸、微摆(表情片段播放时也持续) |
| Multiply | 值乘以其他片段的输出 | 特殊效果 |
虚拟注视参数
Section titled “虚拟注视参数”两个特殊的虚拟参数可控制模型的视线方向:
| 参数 | 范围 | 说明 |
|---|---|---|
__focus_x__ | [-1, 1] | 水平视线方向(左 ↔ 右) |
__focus_y__ | [-1, 1] | 垂直视线方向(下 ↔ 上) |
显示在参数列表的 Virtual 分组中。在片段标签的 模板 → Virtual Focus 可一键创建带 Drift 修饰器的注视轨道。
映射规则(Rules)
Section titled “映射规则(Rules)”规则将智能体的状态连接到片段。当智能体的状态匹配规则的条件时,关联的片段就会播放。
每条规则包含:
- 条件 — 何时触发(情绪、动作、工具调用或空闲)
- 片段组 — 触发时播放哪些片段
- 播放模式 — 单个片段、全部片段或随机选择
| 类型 | 触发 | 示例 |
|---|---|---|
| Expression | emotion + action 组合 | emotion = happy,action = speaking |
| Tool Call | 智能体使用特定工具 | web_search、manage_memory |
| Idle | 智能体无操作 | 背景动画 |
emotion 和 action 都支持 “Any” 通配符 — 无论该维度的值是什么都匹配。
All-Match(并行播放)
Section titled “All-Match(并行播放)”所有满足条件的规则 同时触发 — 不是 first-match-wins。如果多个规则匹配,它们的片段全部并行播放。
规则 1: emotion=angry, action=Any → 播放 "angry" 片段规则 2: emotion=Any, action=speaking → 播放 "talk" 片段规则 3: emotion=happy, action=Any → 播放 "smile" 片段规则 4: idle → 播放 "breathing" 片段如果智能体处于愤怒且说话的状态,规则 1 和规则 2 同时匹配 — “angry” 片段和 “talk” 片段一起播放。
冲突解决(片段优先级)
Section titled “冲突解决(片段优先级)”当多个片段写入同一个参数时,通过 片段优先级(在每个片段上设置,而非规则级别)来解决冲突:
| 优先级 | 级别 | 使用场景 |
|---|---|---|
| 0 | Idle | 背景呼吸、微妙动作 |
| 1 | Normal | 大多数片段的默认值 |
| 2 | Emotion | 表情/动作触发的片段 |
| 3 | Force | 最高 — 覆盖一切 |
优先级高的片段胜出。同一优先级内,混合模式 决定值的合成方式(Add = 叠加,Multiply = 缩放,Overwrite = 替换)。
空闲与基础行为
Section titled “空闲与基础行为”空闲行为 是在没有其他规则匹配时播放的长期背景动画。
基础行为 在空闲和活动状态下都会运行,提供持续的动画层(如微妙的呼吸或眨眼)。
Expression 映射集成
Section titled “Expression 映射集成”Live2D 动画映射与更广泛的 Expression Settings 系统协同工作:
- Vocabulary(Expression Settings → Vocabulary 标签页)— 定义智能体可以表达的情绪和动作词汇
- Mapping Rules(Live2D Settings → Mapping 标签页)— 将这些情绪/动作映射到 Live2D 片段
- 智能体输出 — 对话中,LLM 输出情绪和动作,自动触发匹配的规则
场景 1:基础对话动画
Section titled “场景 1:基础对话动画”步骤 1: 导入模型(Model 标签页)
步骤 2: 设置默认空闲动作(Parameters 标签页)
步骤 3: 创建片段(Mapping 标签页 → Clips)
- “happy” —
ParamEyeLOpen: 0.7、ParamMouthForm: 0.8(眯眼微笑) - “thinking” —
ParamAngleX: -8、ParamEyeLOpen: 0.5(歪头半闭眼) - “speaking” —
ParamMouthOpenY循环 0 → 0.6 → 0(嘴巴动作循环)
步骤 4: 创建规则(Mapping 标签页 → Rules)
emotion = happy→ 播放 “happy” 片段emotion = thinking→ 播放 “thinking” 片段action = speaking→ 播放 “speaking” 片段(循环)
步骤 5: 使用序列测试器验证每条规则的触发效果
场景 2:工具调用动画
Section titled “场景 2:工具调用动画”创建片段:
- “search” —
ParamEyeLOpen: 1.0、ParamBrowLY: 0.3(瞪大眼睛,扬起眉毛) - “write” —
ParamAngleY: -5、ParamEyeLOpen: 0.6(低头专注)
创建规则:
tool_call = web_search→ 播放 “search” 片段tool_call = manage_memory→ 播放 “write” 片段
场景 3:从模型表情导入
Section titled “场景 3:从模型表情导入”- 在 Mapping 标签页点击 Create From Expression
- 选择表情预设(如 “smile”)
- 设置时间:Enter 300ms、Hold 2000ms、Release 500ms
- 系统自动创建带平滑参数过渡的片段
- 创建规则
emotion = happy→ 映射到导入的片段
场景 4:桌面宠物模式
Section titled “场景 4:桌面宠物模式”- 安装 AnySoul 桌面应用
- 启用 Desktop Pet 模式
- Live2D 模型在桌面上以透明叠加层渲染
- 所有动画规则原样工作 — 情绪、动作、工具调用实时驱动宠物动画
默认状态(空闲)
Section titled “默认状态(空闲)”Mapping 标签页底部的 Default (Idle) 区域可以设置基线参数值。这些值在没有片段或规则激活时应用。