PSD转Spine工具

一个将分层的PSD角色转换为Spine 4.2项目的MCP服务器,包括骨架JSON、纹理图集和图集页面PNG,可直接导入Spine编辑器和Unity。

  • by ampersante
  • Java
  • 本地部署
  • 122 星标
  • 更新于
在 GitHub 查看 naosen/spine2d-animation-mcp

使用说明

spine2d微型计算机

将分层PSD字符转换为 脊柱 4.2项目——骨架JSON、纹理图集和图集页面PNG——已准备好导入Spine编辑器和Unity。

目标是将角色的手动装备和导入工作从几天减少到大约一个小时。

状态

第0阶段(概念验证): PSD → 一个正确的、可导入的装备(还没有动画)。

该管道已实施并涵盖了对合成夹具的测试。它尚未在Spine编辑器/Unity中针对真正的PSD进行验证,这是下一个里程碑。动画生成、无头预览和Unity导出计划在稍后阶段进行。

它今天做什么

给定一个PSD,其层以身体部位命名(head, body/torso, arm_left, hand_right, leg_left, foot_right,…) import_psd_to_spine 工具产生:

  • <name>.json --Spine 4.2骨架(骨骼、插槽、默认皮肤、区域附件)
  • <name>.atlas --libgdx/Spine纹理图谱
  • <name>.png --打包地图集页面

关键行为:

  • 多段骨架 (root → hip → torso → chest → neck → head,四肢断了 chest,双腿松开 hip);缺失的中间骨骼被创建为定位的虚拟骨骼。
  • 关节正确枢轴 --每块骨头在其部分的关节边缘(或明确的 <part>[pivot] 标记层),而不是图像中心,因此旋转在解剖学上表现良好。
  • PSD绘制顺序 保留为Spine插槽顺序。
  • 结构验证 Spine 4.2阅读器强制执行的不变量与骨架的关系。

格式真实来源: reference/SkeletonJson.java (脊椎运行时间4.2)。

需求

设置

uv sync

运行测试

uv run pytest

运行MCP服务器

uv run spine2d-mcp

这将启动一个暴露单个工具的stdio MCP服务器:

import_psd_to_spine(psd_path: str, out_dir: str | None = None)
  -> { project_path, atlas_path, png_paths }

将MCP客户端(例如Claude Desktop/Claude Code)指向它,然后要求它按路径导入PSD。

项目布局

src/spine2d_mcp/
  server.py          FastMCP server + import_psd_to_spine tool
  pipeline.py        PSD -> Spine project orchestration
  psd/parser.py      PSD -> flat layer list (+ pivot markers)
  psd/conventions.py bone hierarchy, joint sides, [pivot] tag
  spine/schema.py    Pydantic models for Spine 4.2 JSON
  spine/builder.py   layers -> SpineProject
  spine/writer.py    SpineProject -> JSON
  spine/validator.py structural validation
  atlas/packer.py    rectpack bin packing
  atlas/writer.py    .atlas text + composite PNG
reference/           SkeletonJson.java, spineboy.atlas (format references)
tests/               pytest suite (synthetic PSD fixtures)

许可证

该项目在MIT许可证下发布。

您可以使用、复制、修改、合并、发布、分发、再许可和销售副本 如果原始版权声明和许可文本 包含在软件的大部分中。

软件按“原样”提供,不提供任何形式的保证。看 许可证 获取完整的许可证文本。