主题
Live2D Next 框架
Live2D Next 是 Live2D Cubism Editor 的增强平台与开放 API 平台。
编辑器环境优化
- 启动加速:跳过启动画面、首页等各类启动提示弹窗,直达工作界面
- 内存优化:优化编辑器内存占用,运行更轻量
- 界面精简:移除冗余界面——问卷/Nizima/首页工具按钮,许可证/商店/社区/首页/公告菜单项,以及整个帮助菜单
架构分层
| 模块 | 职责 |
|---|---|
platform-agent | Java Agent 入口(premain)。进程级环境治理:编辑器版本探测与适配、启动对话框抑制、alpha 版弹窗拦截、冗余 UI 移除,以及钩子注册表(PlatformHook 的 ServiceLoader 发现与生命周期分发)。构建产物为自包含的 Live2D Next.jar(byte-buddy 内嵌)。 |
platform-api | 插件与组件的唯一编译期依赖。稳定、版本化的数据形态契约;不包含任何编辑器官方类型。 |
platform-core | 运行时核心:能力注册表实现(线程安全、精确版本解析、不可变快照)、各能力域适配器、生命周期钩子(MenuCommonHook)。适配器层是官方私有耦合的唯一落点。 |
plugins/ | 插件组件:独立 jar,经 PlatformHook(ServiceLoader)发现并动态挂载/卸载;平台 jar 与 platform-api 为 provided 作用域依赖,插件不内嵌、不捆绑。 |
API 契约
- 纯数据契约。API 仅交换字符串、数字与简单结构,不暴露 Swing 组件与编辑器内部类型。唯一的既有豁免为注入 SPI 的
WindowTabProvider.createPanel(),该方法返回真实面板实例;其余契约面一律保持数据形态。 - 能力注册表。每个能力面定义为
capabilityId + apiVersion + 方法集:经listCapabilities发现,resolve按精确版本解析,invoke调用。契约发布后不可破坏;行为变更以新 apiVersion 发布,不做静默修改。 - 一种语义,三种消费形态。同一契约同时服务进程内组件调用、跨进程通道与 AI 会话,仅传输层不同。
- 验证后注册。能力按批次引入:首批覆盖 parameter / scene / physics / document / undo / menu / log / config;后续为增量注册。
与官方能力的边界:官方 External App Integration 仅作为契约风格参照与可选兼容面,不作为平台基础。通道预留 WebSocket(官方先例),传输层可插拔,AI 通道后续接入。
能力目录
注册表承载以下能力域,全部于编辑器启动时完成注册:
| 分组 | 能力 |
|---|---|
| 首批核心 | undo-arbiter(撤销/重做与提供者仲裁)、parameter(网格关键帧、批量读写、分组、重命名、绑定迁移)、scene(工作区与场景生命周期、场景列表、批量重命名)、physics(窗口设置、分组、输入/输出行、physics3 导入/导出、批量合并)、document(打开/保存/导入生命周期、文档信息、pickInputFile)、menu(菜单结构读取与调用)、log(结构化日志)、config(环境设置) |
| 建模子域 | viewport(显示状态与 solo 目标)、tools(当前工具/编辑层级/工具设置)、artmesh(网格编辑、剪贴蒙版与单撤销批量写入、几何读取)、selection(选中对象读取)、shape-edit(关键帧形态、混合形状、顶点信息)、deformer(弯曲/旋转变形器、批量创建、目标枚举)、artpath(ArtPath 对象)、parts(部件树与绘制顺序)、psd-texture(PSD 管线与纹理图集)、model-data(CSV 导入/导出、模板)、model-output(图片/moc3 导出、用户数据)、model-image(模型参考图、像素读取、PSD 回退修复) |
| 扩展面能力 | backup(备份引擎实时状态)、status-message(非模态状态栏)、notification(平台事件推送原语,含系统托盘渲染)、blend-modes(各版本混合模式事实数据) |
注入面
UI 注入官方编辑器窗口属于平台级扩展点,插件不接触编辑器私有实现。平台承担全部通用机制——窗口枚举、注入定位、OK 接管、重挂载、卸载清理;插件仅提供数据(面板经唯一的 createPanel 豁免返回,行为经数据形态能力表达)。四种通用注入面:
| 注入面 | SPI | 语义 |
|---|---|---|
| 窗口标签页 | WindowTabProvider(injectionMode() = "tab") | 官方内容成为首个标签页(默认选中);插件面板作为相邻标签页;切换时窗口自适应面板尺寸。 |
| 窗口替换 | WindowTabProvider(injectionMode() = "replace") | 插件面板替换官方中央内容,官方内容暂存、卸载时还原。 |
| 菜单贡献 | WindowMenuProvider | 扫描可见窗口菜单栏,锚定插件菜单项(或创建作用域限定的顶级菜单);去重、重建自愈,点击回调以数据形式回传。 |
| 检查器行按钮 | InspectorRowButtonProvider | 在匹配的检查器属性行末端放置按钮,由平台负责安放与清理。 |
通用机制:事件驱动窗口枚举(无轮询)、临时窗口 id、OK 按钮接管(卸载还原官方接线)、窗口重开时按标题与结构摘要自动重挂载、热挂载/卸载零残留。
扩展契约
能力之外,平台经扩展注册表提供一组冻结的数据形态扩展契约:
- E-01 通用条件式 uv 重算抑制(provider SPI);
- E-02 通用自动网格路由(handler 注册表);
- E-05 文档保存生命周期事件(listener SPI);
- E-06 各版本混合模式事实数据(已注册为
blend-modes能力); - E-07 适配器层撤销后修复注册表(平台内部);
- E-04
renderDrawables(候选契约,预留未注册)。