Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

⚡ Sprite Animator (精灵帧动画与交叉修复工作台)

专为 2D 游戏动画师与独立开发者打造的专业序列帧处理与动画预览套件。
一键解决精灵大图中相邻帧武器/披风相互穿插、网格切片超出、重心跳动与对齐难题!


📖 项目简介 (Overview)

在处理 AI 生成(Midjourney / SD)或拼版精灵大图(Sprite Sheet)时,经常会遇到相邻动作帧的武器刀光、披风相互重叠穿插,导致传统矩形切片工具无法直接使用。

Sprite Animator 是一个纯前端、零外部依赖的高性能 2D 序列帧工作台。它不仅提供了自由选框、网格均等切片与背景透明化能力,还内置了专属交叉隔离修复工具箱(橡皮擦 / 多边形套索 / 魔棒)、九宫格锚点对齐系统以及实时动画播放器,并支持一键导出透明序列帧 ZIP、全新规整无重叠精灵表与高清动图 GIF!

  • 零安装、脱机可用:发行版为单一 HTML 文件(SpriteAnimator.html),双击即可在任意现代浏览器中瞬间启动!

✨ 核心特性 (Key Features)

1. 🖼️ 图像导入与智能切片

  • 拖拽与文件载入:支持 PNG、JPG、WebP 高清大图,高分辨率(2K/4K)流畅渲染。
  • ⊞ 均等网格自动切片:
    • 内置常用规格一键预设(3×4、2×5、1×8、4×4 等);
    • 智能空白过滤:自动分析图像末尾无内容的纯黑/全透明填充格,精准剔除多余空白帧;
    • 具备实时尺寸预估与 100 帧安全防呆限制,杜绝浏览器卡顿。
  • 🔍 连通域自动初选框:基于连通块分析算法,自动识别分离的角色外接矩形。
  • ✨ 纯色背景透明化:支持白底、绿幕、黑底一键采样扣除,容差平滑调节。

2. 🎛️ 自由选框与交叉重叠管理

  • 平移缩放视口 (Pan & Zoom):滚轮平滑以鼠标点缩放(5%~1000%),中键或空格拖拽平移。
  • 8 手柄自由伸缩:支持四角与四边手柄任意拖拽,彻底打破传统网格限制,允许相邻选框任意重叠交叉。
  • 📐 一键统一尺寸:支持以「当前选中帧」、「全部最大包围盒」或「自定义尺寸」,以脚底中心为固定基准向外扩展,保证整套动作规格完全一致。

3. 🧼 杀手级:交叉像素消除工具集 (Overlap Isolator)

  • Frame 独立图层机制:每个动作选框拥有独立离屏图层(Mask Canvas),互不污染原图。
  • 橡皮擦 (Eraser):拖拽涂抹自动插值,快速擦除多余伸入的相邻帧武器或杂色。
  • 多边形套索 (Lasso):折线顶点勾勒边缘,双击闭合,精准切除多余复杂轮廓。
  • 魔棒去色 (Magic Wand):基于泛洪填充算法(Flood Fill),点击清除同色系背景残留。
  • 历史快照:完整支持 20 步撤销与重做(Ctrl + Z / Ctrl + Y)。

4. 🎯 精准锚点与洋葱皮对齐系统

  • 九宫格锚点预设:默认锚定脚底地面中心(Bottom-Center),角色动作落地不晃动。
  • 视口准星拖拽:在播放器视口中可直接用鼠标拖动红色十字准星精确重设重心。
  • 1px 键盘微调:选中帧后,方向键(↑ ↓ ← →)1px 微调偏移量,按住 Shift 快速步进 10px。
  • 洋葱皮残影 (Onion Skinning):前一帧淡暖红、后一帧淡冷青残影实时叠显,动作过渡一目了然。

5. ⚡ 实时动画播放器引擎

  • 高精度时间累加器:基于 requestAnimationFrame + performance.now(),1~60 FPS 任意调节。
  • 多种播放模式:循环播放(Loop)、单次播放(Once)、往返乒乓(Ping-pong)。
  • 视口比例自适应:自动识别大帧规格缩小适配,支持 自适应完整 / 25% / 35% / 50% / 75% / 100% 实时切换。

6. 📦 三合一成果导出

  • 📦 导出透明序列帧 ZIP 包:包含按规范命名的 frame_001.png 透明 PNG 序列及 animation.json 动作元数据。
  • 🖼️ 导出规整精灵表 (Sprite Sheet):重新计算最佳网格布局,带 16px 安全间距,保证生成的大图绝无任何相邻帧交叉重叠。
  • 🎞️ 导出透明动图 (.gif):基于全动作帧包围盒自适应计算最佳尺寸,全身动作与挥刀刀光 100% 完整呈现无裁切。

⌨️ 常用快捷键 (Shortcuts)

快捷键 功能说明
Space 播放 / 暂停切换(或在主画布按住空格拖拽平移)
V / B / E / L / W 切换选择 / 拉框 / 橡皮擦 / 套索 / 魔棒工具
Ctrl + Z / Ctrl + Y 撤销 / 重做像素修整
↑ ↓ ← → 当前选框在播放器视口中的基准偏移 1px 微调
Shift + 方向键 偏移量 10px 快速微调
Alt + ← / Alt + → 播放器单步上一帧 / 下一帧
Delete / Backspace 删除当前选中的动作帧
滚轮 (Wheel) 以当前鼠标所在像素为中心平滑缩放视口

🚀 快速启动与二次开发

1. 直接使用发行版

直接在文件管理器中双击打开根目录下的 SpriteAnimator.html 即可使用,无需启动本地 HTTP 服务器,纯脱机离线可用。

2. 源码结构说明

sprite-animator/
├── SpriteAnimator.html       # 一键打包后的独立脱机便携单文件
├── index.html                # 开发调试页面
├── build_single_file.py      # 单文件自动构建打包脚本
├── package.json              # 项目描述与脚本
├── css/
│   └── style.css             # 专业深色主题样式表
├── js/
│   ├── app.js                # 主控制器应用入口
│   ├── core/
│   │   ├── state.js          # 全局响应式状态与事件总线 (PubSub)
│   │   ├── image-processor.js# 连通域分析、纯色抠图与空白帧算法
│   │   ├── overlap-isolator.js# 离屏图层、橡皮擦、套索、魔棒与历史栈
│   │   ├── frame-alignment.js# 锚点几何推导、对齐舞台与洋葱皮
│   │   ├── animation-player.js# 动画引擎、帧率定时器与循环播放器
│   │   ├── canvas-workspace.js# 视口平移缩放、选框拖拽与手柄交互
│   │   └── exporter.js       # ZIP、新精灵表与动图 GIF 导出器
│   └── vendor/
│       ├── jszip.min.js      # 轻量 ZIP 归档库
│       └── gifshot.min.js    # 轻量 GIF89a 动图编码库
└── tests/                    # 完整单元自动化测试用例

3. 运行测试

# 运行全部自动化单元测试
node tests/test_size_and_slice.js
node tests/test_exporter.js
node tests/test_overlap_isolator.js
node tests/test_frame_alignment.js

4. 重新构建单文件便携包

每次修改 js/、css/ 或 index.html 后,运行构建脚本重新生成 SpriteAnimator.html:

python build_single_file.py

📄 开源许可证

本项目基于 MIT 许可证分发与使用。

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages