Live2D 指南
要往项目中添加新的 Live2D 模型,需要完成以下三到五个步骤:
- 获取 Live2D 模型 (可跳过)
- 给你的 Live2D 模型配置预设的表情和动作 (可跳过)
- 将 Live2D 模型文件放置到
live2d-models
文件夹中 - 在
model_dict.json
文件中配置模型信息 - 在角色配置文件 (
conf.yaml
或者characters
目录下的角色设定文件) 中指定使用的 Live2D 模型
1. 获取 Live2D 模型
目前项目使用的 pixi-live2d-display-lipsyncpatch 仅支持 Cubism2/3/4 版本的模型,暂不支持最新的 Cubism5。如
如果你已经拥有了合适的 Live2D 模型,可以直接跳过这一步。 以下是一些获取 Live2D 模型的常见渠道(欢迎补充更多来源):
2. 配置 Live2D 模型
Live2D 模型的配置文件是一个包含表情、动作等多个设置项的重要文件。由于配置方法多样且较为复杂,目前这部分的教程还没有正式开工。你可以选择:
- 通过查找网络资料来学习配置方法
- 先跳过这部分,等对 Live2D 模型配置有更深入了解后再回来设置
- 如果你有相关经验,非常欢迎通过 PR 或 Issue 来帮助我们完善这部分内容
由于大多数 Live2D 模型是从游戏中提取或主要用于直播,它们的表情和动作可能并不完全适合本项目的使用场景。为了获得最佳的使用体验,建议你先查看模型的配置文件(model.json
或 model3.json
),并根据需要进行适当的调整,获得更好的交互体验。
你可以使用以下工具来查看和调整模型:
- Vtuber Studio
- Live2DViewerEx Studio
- Live2D Cubism Viewer
- 查看和测试模型的表情列表
- 预览所有可用的动作效果
- 添加 Idle(空闲)动作组
- 创建自定义动作组
- 添加新的表情
- 制作新的动作
3. 放置模型文件
将你的 Live2D 模型文件放在 live2d-models
文件夹中,如图中的 xiao
。

4. 添加模型配置
在模型配置中,只有 name
(模型标识)、url
(模型路径)和 kScale
(缩放比例)是必填项。其他配置项如 emotionMap
(表情映射)和 tapMotions
(触摸动作)是可选的,不填写这些配置项会导致模型失去表情变化和动作交互的功能。
在项目根目录下的 model_dict.json
文件中添加模型配置。以下是一个完整的配置示例:
{
"name": "shizuku-local",
"description": "Orange-Haired Girl, locally available. no internet required.",
"url": "/live2d-models/shizuku/shizuku.model.json",
"kScale": 0.5,
"initialXshift": 0,
"initialYshift": 0,
"idleMotionGroupName": "idle",
"defaultEmotion" : 0,
"emotionMap": {
"neutral": 0,
"anger": 2,
"disgust": 2,
"fear": 1,
"joy": 3,
"smirk": 3,
"sadness": 1,
"surprise": 3
},
"tapMotions": {
"body": {
"tap_body": 30,
"shake": 30,
"pinch_in": 20,
"pinch_out": 20
},
"head": {
"flick_head": 40,
"shake": 20,
"pinch_in": 20,
"pinch_out": 20
}
}
}
4.1 基础配置
配置项 | 说明 | 示例值 |
---|---|---|
name | 模型的唯一标识符,建议使用英文 | "shizuku-local" |
description | 模型描述(可选) | "Orange-Haired Girl" |
url | 模型文件路径 | "/live2d-models/shizuku/shizuku.model.json" |
- 支持本地路径和远程 URL
- 本地路径以
/live2d-models/
开头,而非./live2d-models/
开头。 - 远程 URL 需要指向有效的
.model.json
或.model3.json
文件,比如https://cdn.jsdelivr.net/gh/guansss/pixi-live2d-display/test/assets/shizuku/shizuku.model.json
- 如果使用 HTTP 协议访问 Web,加载 HTTPS 资源时可能会报错
Failed to load LiveD model: Error: Network error
。此时需要在浏览器设置中允许网站加载不安全内容:- Chrome: 点击地址栏右侧的盾牌图标 -> 网站设置 -> 不安全内容 -> 允许
- Firefox: 点击地址栏左侧的锁图标 -> 关闭连接保护
- Edge: 点击地址栏右侧的锁图标 -> 网站权限 -> 不安全内容 -> 允许
4.2 显示配置
配置项 | 说明 | 推荐值 |
---|---|---|
kScale | 模型初始缩放比例 | 0.3 ~ 0.5 |
initialXshift | 模型水平位置初始偏移量 | 0 |
initialYshift | 模型垂直位置初始偏移量 | 0 |
- 当
initialXshift
和initialYshift
都设置为0
时,Live2D 模型通常会在画布中居中显示。对于某些特殊模型,可能需要手动调整这两个参数来实现理想的显示位置。 - 关于模型大小:
kScale
参数只决定在浏览器/设备上,初次加载某个模型的大小。并不会决定之后使用改模型时的大小。- 在前端界面,你可以通过鼠标滚轮或者触摸屏双指缩放来调节模型大小。
- 当你手动调整模型大小后,系统会通过
localStorage
记住该模型在当前浏览器/设备、当前模式下的大小 - 下次在同一浏览器/设备上使用时(未清空 localStorage),将自动应用上次的大小。
需要注意的是,当容器大小发生变化时(如调整窗口大小、折叠/展开侧边栏或底边栏、切换显示模式等),Live2D 模型会重置到初始位置,但会保持当前的缩放大小不变。
4.3 待机动作配置
Live2D 模型的动作动画一般会被分成多个动作组 (Motion Groups)。每个动作组包含一系列相关的动作动画。在 model.json 文件中,这些动作组通常定义在 motions
或 Motions
字段下。
待机动作(Idle Motion)是模型在无交互时随机播放的基础动画。它们通常被放在名为 idle
或 Idle
的动作组中,系统会从该组中随机选择一个动作进行播放。
具体动作组名称需要根据模型配置文件 model.json
或 model3.json
中的名称,如图所示。

如果你理解模型的动作结构,也可以配置自己待机的动作组。但除非你知道自己在做什么,否则建议保持 idleMotionGroupName
的默认值(idle
或 Idle
)。
4.4 表情配置
emotionMap
定义了 AI 可用的表情映射,而 defaultEmotion
则用于设置模型的默认表情。