Live2D Cubism Editor 外部集成 API
最終更新: 2024年10月24日
Editor和外部应用程序可以通过API进行集成。
外部应用程序范例
Live2D Garage的范例已发布在GitHub上。
通信方式
Editor是服务器,外部应用程序是客户端。
| 通信标准 | WebSocket |
| 格式 | JSON(UTF-8 文本) |
| 端口 | 22033 *默认端口号 可以任意变更。 |
缩写
带有“?”标记的元素可以省略指定。
Token ?: String,
数据形式
{
"Version": "1.0.0",
"Timestamp": 1696233943287,
"RequestId": "13",
"Type": "Request",
"Method": "GetCurrentModelUID",
"Data": {}
}
发送和接收均采用以下JSON格式进行。
Version~Type对于所有命令都是通用的。
| 元素 | 类型 | 要求 | 说明 |
|---|---|---|---|
| Version | String | 任意 | 指定API、命令的版本。 您可以固定要交换的版本并保持兼容性。 如果设置未支持的版本,则会出现错误。可省略。(*1) |
| Timestamp | Number | 任意 | Epoch毫秒,可省略。 |
| RequestId | String | 任意 | 返回服务器响应时发送的ID。 如果省略,则在服务器响应中也会被省略。 |
| Type | String | 必须项 | API类型 |
| Method | String | 必须项 | 命令 |
| Data | Any | 必须项 | 根据操作追加的数据。 Data{}(相当于参数)的内容因命令而异。 |
(*1)这是0.9.0版本中的必需元素。
API类型
| 类型 | 说明 |
|---|---|
| Request | 要求: 主要是在从客户端(外部应用程序)向服务器(Editor)发送命令时设置。 |
| Response | 响应: 主要是在服务器响应客户端命令时设置。 |
| Event | Event: 主要是在任意时刻(没有收到客户端Request时)服务器自发响应客户端时设置的。 |
| Error | 错误: 如果Request无效,则将设置了该值的API返回给客户端。 |
错误处理
Type返回Error的JSON。在ErrorType中填写错误内容的类型。
有关详细信息,请参考“错误类型”。
{
(省略)
"Type": "Error",
"Method": "SetParameterValues",
"Data": {
"ErrorType" : "InvalidParameter"
}
}
规则
对于所有命令,请尽可能等待命令完成(响应),然后再执行下一个命令。
令牌认证
为了保护Editor免受意外外部应用程序的影响,它有一个内置的认证系统,该系统会阻止来自外部应用程序的通信,除非用户授予许可。
首次连接
连接后,首先使用RegisterPlugin获取新的令牌。
即使获得了令牌,也不意味着可以自由通信。
仅当用户从设置对话框中启用“权限”复选框时才能使用API。
因此,外部应用程序将不得不等到那时。

第二次起的连接
从第二次开始,您可以跳过用户权限。
请在RegisterPlugin中指定先前连接中使用的令牌。
如果用户允许,RegisterPlugin将按原样返回指定的令牌,并使API立即可用。
如果令牌未经授权,则通信将被阻止,直到用户通过返回新令牌再次授权为止。

处理流程

参数的应用时机
API基本上是立即执行的,但是由于物理模拟和随机姿势,参数的应用时机存在延迟。
实际上,它是通过临时缓冲区应用的,如下所示。

临时缓冲区保留期限
临时缓冲区使用超过0.5秒后会自动放弃。
此机制可防止锁定Editor中的操作。
请注意,例如在以下情况中,无法获取预期参数。

UID和参数ID
{
"Data": {
"ModelUID" : "8456858123561231456" // UID
}
}
{
"Data": {
"Parameters" : [{"Id":"ParamAngleY","Value":"0.0"}] // ParameterID
}
}
参数ID是一个不可变的值(仅限不对模型进行变更),而UID是一个临时ID,其值可以根据连接的不同而变化。
通过外部集成API从这些UID和参数ID在Editor中设置和获取信息。
有关详细信息,请参考“外部集成API列表”。