Skip to content

Live2D Next 框架 ​

Live2D Next 是 Live2D Cubism Editor 的增强平台与开放 API 平台。

编辑器环境优化 ​

  • 启动加速:跳过启动画面、首页等各类启动提示弹窗,直达工作界面
  • 内存优化:优化编辑器内存占用,运行更轻量
  • 界面精简:移除冗余界面——问卷/Nizima/首页工具按钮,许可证/商店/社区/首页/公告菜单项,以及整个帮助菜单

架构分层 ​

模块职责
platform-agentJava 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 契约 ​

  1. 纯数据契约。API 仅交换字符串、数字与简单结构,不暴露 Swing 组件与编辑器内部类型。唯一的既有豁免为注入 SPI 的 WindowTabProvider.createPanel(),该方法返回真实面板实例;其余契约面一律保持数据形态。
  2. 能力注册表。每个能力面定义为 capabilityId + apiVersion + 方法集:经 listCapabilities 发现,resolve 按精确版本解析,invoke 调用。契约发布后不可破坏;行为变更以新 apiVersion 发布,不做静默修改。
  3. 一种语义,三种消费形态。同一契约同时服务进程内组件调用、跨进程通道与 AI 会话,仅传输层不同。
  4. 验证后注册。能力按批次引入:首批覆盖 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(候选契约,预留未注册)。