跳转到内容

Live2D 动画与映射

Mapping 标签页是将智能体行为与动画连接起来,让 Live2D 模型活起来的地方。系统有三层:Clips 定义发生什么,Rules 定义什么时候发生,智能体的状态自动驱动整个流程。

智能体状态(情绪、动作、工具调用)
┌──────────┐ all-match(所有匹配的规则同时触发)
│ Rules │ ──────────────────────► 播放哪些片段?
└──────────┘
┌──────────┐ 片段并行播放
│ Clips │ ──► 随时间变化的参数变化
└──────────┘
│ 冲突通过优先级 + 混合模式解决
Live2D 模型参数更新

片段 是可复用的动画 — 一组随时间变化的参数变更。可以将它理解为可以从多个规则触发的短动画序列。

三种创建方式:

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 打开独立的时间线编辑器:

  • 每参数的关键帧轨道(支持轨道修饰器)
  • 三次贝塞尔曲线编辑(可视化预览)
  • 拖拽、平移、缩放操作
  • 与模型同步的实时预览
操作快捷键说明
选中关键帧点击第一次点击选中,第二次点击打开内联编辑面板
切换曲线类型Ctrl+点击按 线性 → 贝塞尔 → 弹簧 → 阶梯 顺序循环
添加/删除关键帧菱形按钮播放头位置无关键帧则添加,有则删除

关键帧图标按曲线类型区分:

  • ◇ 菱形(天蓝)— 线性插值
  • ● 圆形(翠绿)— 三次贝塞尔
  • ◆ 圆角菱形(紫色)— 弹簧
  • ■ 方块(琥珀)— 阶梯(瞬间跳变)

修饰器是对关键帧值进行程序化变换的效果——灵感来自 After Effects 的表达式。无需额外关键帧即可添加有机运动。

  1. 时间线:点击轨道标签旁的 [+] 按钮,或点击修饰器徽章进行编辑
  2. 检查器:选中轨道上的关键帧,使用修饰器区域的 添加 下拉菜单
修饰器徽章效果主要参数
Wiggle[W]Perlin 噪声偏移——有机随机抖动频率, 振幅
Drift[D]平滑漫游——在中心值附近缓慢游走半径, 速度
Sine[S]纯正弦波——规律性周期振荡振幅, 速度, 相位
Pulse[P]随机间隔脉冲——偶尔的突发变化峰值偏移, 间隔范围
Spring[K]弹簧阻尼振荡——冲击后回弹衰减初始偏移, 刚度, 阻尼
Loop[L]关键帧循环——cycle 或 pingpong模式
Noise[N]简化版 Wiggle——固定振幅噪声振幅, 速度
Clamp[C]值域限制——将输出保持在安全范围最小值, 最大值

每条轨道有一个混合模式,控制其输出与其他活跃片段的合成方式:

模式行为用途
Override(默认)高优先级片段替换低优先级表情动画
Add值叠加到其他片段的输出之上呼吸、微摆(表情片段播放时也持续)
Multiply值乘以其他片段的输出特殊效果

两个特殊的虚拟参数可控制模型的视线方向:

参数范围说明
__focus_x__[-1, 1]水平视线方向(左 ↔ 右)
__focus_y__[-1, 1]垂直视线方向(下 ↔ 上)

显示在参数列表的 Virtual 分组中。在片段标签的 模板Virtual Focus 可一键创建带 Drift 修饰器的注视轨道。

规则将智能体的状态连接到片段。当智能体的状态匹配规则的条件时,关联的片段就会播放。

每条规则包含:

  • 条件 — 何时触发(情绪、动作、工具调用或空闲)
  • 片段组 — 触发时播放哪些片段
  • 播放模式 — 单个片段、全部片段或随机选择
类型触发示例
Expressionemotion + action 组合emotion = happy,action = speaking
Tool Call智能体使用特定工具web_searchmanage_memory
Idle智能体无操作背景动画

emotion 和 action 都支持 “Any” 通配符 — 无论该维度的值是什么都匹配。

所有满足条件的规则 同时触发 — 不是 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” 片段一起播放。

当多个片段写入同一个参数时,通过 片段优先级(在每个片段上设置,而非规则级别)来解决冲突:

优先级级别使用场景
0Idle背景呼吸、微妙动作
1Normal大多数片段的默认值
2Emotion表情/动作触发的片段
3Force最高 — 覆盖一切

优先级高的片段胜出。同一优先级内,混合模式 决定值的合成方式(Add = 叠加,Multiply = 缩放,Overwrite = 替换)。

空闲行为 是在没有其他规则匹配时播放的长期背景动画。

基础行为 在空闲和活动状态下都会运行,提供持续的动画层(如微妙的呼吸或眨眼)。

Live2D 动画映射与更广泛的 Expression Settings 系统协同工作:

  1. Vocabulary(Expression Settings → Vocabulary 标签页)— 定义智能体可以表达的情绪和动作词汇
  2. Mapping Rules(Live2D Settings → Mapping 标签页)— 将这些情绪/动作映射到 Live2D 片段
  3. 智能体输出 — 对话中,LLM 输出情绪和动作,自动触发匹配的规则

步骤 1: 导入模型(Model 标签页)

步骤 2: 设置默认空闲动作(Parameters 标签页)

步骤 3: 创建片段(Mapping 标签页 → Clips)

  • “happy”ParamEyeLOpen: 0.7ParamMouthForm: 0.8(眯眼微笑)
  • “thinking”ParamAngleX: -8ParamEyeLOpen: 0.5(歪头半闭眼)
  • “speaking”ParamMouthOpenY 循环 0 → 0.6 → 0(嘴巴动作循环)

步骤 4: 创建规则(Mapping 标签页 → Rules)

  • emotion = happy → 播放 “happy” 片段
  • emotion = thinking → 播放 “thinking” 片段
  • action = speaking → 播放 “speaking” 片段(循环)

步骤 5: 使用序列测试器验证每条规则的触发效果

创建片段:

  • “search”ParamEyeLOpen: 1.0ParamBrowLY: 0.3(瞪大眼睛,扬起眉毛)
  • “write”ParamAngleY: -5ParamEyeLOpen: 0.6(低头专注)

创建规则:

  • tool_call = web_search → 播放 “search” 片段
  • tool_call = manage_memory → 播放 “write” 片段
  1. 在 Mapping 标签页点击 Create From Expression
  2. 选择表情预设(如 “smile”)
  3. 设置时间:Enter 300ms、Hold 2000ms、Release 500ms
  4. 系统自动创建带平滑参数过渡的片段
  5. 创建规则 emotion = happy → 映射到导入的片段
  1. 安装 AnySoul 桌面应用
  2. 启用 Desktop Pet 模式
  3. Live2D 模型在桌面上以透明叠加层渲染
  4. 所有动画规则原样工作 — 情绪、动作、工具调用实时驱动宠物动画

Mapping 标签页底部的 Default (Idle) 区域可以设置基线参数值。这些值在没有片段或规则激活时应用。