Live2D API

Live2D 看板娘插件 (https://www.fghrsh.net/post/123.html) 上使用的后端 API

特性

  • 原生 PHP 开发,无需伪静态,开箱即用
  • 支持 模型、皮肤 的 顺序切换 和 随机切换
  • 支持 单模型 单皮肤 切换、多组皮肤 递归穷举
  • 支持 同分组 多个模型 或 多个路径 的 加载切换

使用

环境要求

  • PHP 版本 >= 5.2
  • 依赖 PHP 扩展:json

目录结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
│  model_list.json              // 模型列表

├─model // 模型路径
│ └─GroupName // 模组分组
│ └─ModelName // 模型名称

├─add // 更新皮肤列表
├─get // 获取模型配置
├─rand // 随机切换模型
├─rand_textures // 随机切换皮肤
├─switch // 顺序切换模型
├─switch_textures // 顺序切换皮肤
└─tools
modelList.php // 列出模型列表
modelTextures.php // 列出皮肤列表
name-to-lower.php // 文件名格式化

添加模型

  • 单模型 单皮肤 切换
    • 单次加载只输出一个皮肤
    • 皮肤放在 textures 文件夹,自动识别
1
2
3
4
5
6
7
8
9
10
11
12
13
│  index.json
│ model.moc
│ textures.cache // 皮肤列表缓存,自动生成

├─motions
│ idle_01.mtn
│ idle_02.mtn
│ idle_03.mtn

└─textures
default-costume.png
school-costume.png
winter-costume.png
  • 单模型 多组皮肤 递归穷举
    • 多组皮肤 组合模型、穷举组合
    • 皮肤文件夹按 texture_XX 命名
    • 添加 textures_order.json 列出组合
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      │  index.json
      │ model.moc
      │ textures.cache
      │ textures_order.json

      ├─motions
      │ idle_01.mtn
      │ idle_02.mtn
      │ idle_03.mtn

      ├─texture_00
      │ 00.png

      ├─texture_01
      │ 00.png
      │ 01.png
      │ 02.png

      ├─texture_02
      │ 00.png
      │ 01.png
      │ 02.png

      └─texture_03
      00.png
      01.png

textures_order.json

1
2
3
4
5
[
["texture_00"],
["texture_01","texture_02"],
["texture_03"]
]

textures.cache

1
2
3
4
5
6
7
8
[
["texture_00/00.png","texture_01/00.png","texture_02/00.png","texture_03/00.png"],
["texture_00/00.png","texture_01/00.png","texture_02/00.png","texture_03/01.png"],
["texture_00/00.png","texture_01/01.png","texture_02/01.png","texture_03/00.png"],
["texture_00/00.png","texture_01/01.png","texture_02/01.png","texture_03/01.png"],
["texture_00/00.png","texture_01/02.png","texture_02/02.png","texture_03/00.png"],
["texture_00/00.png","texture_01/02.png","texture_02/02.png","texture_03/01.png"]
]
  • 同分组 多个模型 或 多个路径 切换
    • 修改 model_list.json 添加多个模型
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

├─model
│ ├─Group1
│ │ ├─Model1
│ │ │ index.json
│ │ │
│ │ └─Model2
│ │ index.json
│ │
│ ├─Group2
│ │ └─Model1
│ │ index.json
│ │
│ └─GroupName
│ └─ModelName
│ │ index.json
│ │ model.moc
│ │
│ ├─motions
│ └─textures

model_list.json

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
"models": [
"GroupName/ModelName",
[
"Group1/Model1",
"Group1/Model2",
"Group2/Model1"
]
],
"messages": [
"Example 1",
"Example 2"
]
}

接口用法

  • /add/ - 检测 新增皮肤 并更新 缓存列表
  • /get/?id=1-23 获取 分组 1 的 第 23 号 皮肤
  • /rand/?id=1 根据 上一分组 随机切换
  • /switch/?id=1 根据 上一分组 顺序切换
  • /rand_textures/?id=1-23 根据 上一皮肤 随机切换 同分组其他皮肤
  • /switch_textures/?id=1-23 根据 上一皮肤 顺序切换 同分组其他皮肤

版权声明

(>▽<) 都看到这了,点个 Star 吧 ~

API 内所有模型 版权均属于原作者,仅供研究学习,不得用于商业用途

MIT © FGHRSH