# funny-animation-server **Repository Path**: panshangqi/funny-animation-server ## Basic Information - **Project Name**: funny-animation-server - **Description**: 沙雕动画渲染服务 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-22 - **Last Updated**: 2025-08-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Funny Animation Server 一个用于处理动画数据的工具集,支持Spine动画转GIF功能。 ## 功能特性 - 🎬 **Spine动画转GIF**: 将Spine动画数据转换为GIF序列帧 - 📁 **多格式支持**: 支持.json、.atlas、.png格式的Spine数据 - 🎨 **高质量渲染**: 使用Pygame进行高质量动画渲染 - ⚡ **批量处理**: 自动处理所有可用动画 - 🔧 **可配置**: 支持自定义输出尺寸、帧率等参数 ## 安装依赖 ```bash pip install -r requirements.txt ``` 或者手动安装: ```bash pip install pygame Pillow imageio numpy ``` ## 使用方法 ### 1. 准备Spine数据 确保你的Spine动画数据包含以下文件: - `Ubbie.json` - 骨架和动画数据 - `Ubbie.atlas` - 图集定义文件 - `Ubbie.png` - 纹理图片 将这些文件放在 `data/` 目录下。 ### 2. 测试功能 首先运行测试脚本确保一切正常: ```bash python scripts/test_spine.py ``` ### 3. 生成GIF动画 运行主程序生成GIF动画: ```bash python scripts/spine2gif.py ``` 程序会自动: - 加载Spine数据 - 解析所有可用动画 - 为每个动画生成对应的GIF文件 - 保存到 `data/` 目录 ### 4. 查看结果 生成的GIF文件会保存在 `data/` 目录中,文件名格式为 `{动画名称}.gif`。 ## 项目结构 ``` funny-animation-server/ ├── data/ # 数据文件目录 │ ├── Ubbie.json # Spine骨架数据 │ ├── Ubbie.atlas # 图集定义 │ ├── Ubbie.png # 纹理图片 │ └── *.gif # 生成的GIF文件 ├── scripts/ # 脚本目录 │ ├── spine2gif.py # 主程序 │ ├── spine_renderer.py # 渲染引擎 │ ├── test_spine.py # 测试脚本 │ └── dragonbones2gif.py # DragonBones转换工具 ├── requirements.txt # Python依赖 └── README.md # 说明文档 ``` ## 技术实现 ### 核心组件 1. **SpineAtlas**: 解析.atlas文件,提取纹理区域信息 2. **SpineSkeleton**: 加载和解析Spine JSON数据 3. **SpineAnimationRenderer**: 完整的骨骼动画渲染引擎 4. **SpineRenderer**: 高级渲染接口,处理帧生成和GIF输出 ### 渲染流程 1. **数据加载**: 解析JSON、Atlas和纹理文件 2. **骨骼构建**: 建立骨骼层级关系 3. **动画应用**: 根据时间插值关键帧数据 4. **世界变换**: 计算每个骨骼的世界坐标 5. **附件渲染**: 按绘制顺序渲染各个部件 6. **帧合成**: 将Pygame Surface转换为PIL Image 7. **GIF生成**: 使用imageio合成最终动画 ### 支持的动画特性 - ✅ 骨骼变换(平移、旋转、缩放) - ✅ 插槽动画(附件切换) - ✅ 关键帧插值 - ✅ 层级变换 - ✅ 纹理区域渲染 ## 配置选项 ### 输出设置 可以在 `spine2gif.py` 中修改以下参数: ```python # 输出尺寸 renderer = SpineRenderer(skeleton, width=800, height=600) # 帧率(从Spine数据中读取,默认24fps) fps = skeleton_info.get('fps', 24) # 缩放比例 scale = min(width / skeleton_width, height / skeleton_height) * 0.8 ``` ### 动画设置 ```python # 自定义动画持续时间 duration = skeleton.get_animation_duration(animation_name) # 自定义帧数 frame_count = int(duration * fps) ``` ## 故障排除 ### 常见问题 1. **文件不存在错误** - 确保所有Spine文件都在 `data/` 目录中 - 检查文件名是否正确(区分大小写) 2. **渲染错误** - 确保安装了所有依赖包 - 检查Pygame是否正确初始化 3. **GIF生成失败** - 确保有足够的磁盘空间 - 检查imageio是否正确安装 ### 调试模式 运行测试脚本查看详细错误信息: ```bash python scripts/test_spine.py ``` ## 扩展功能 ### 添加新的动画格式 可以参考现有代码结构添加对其他动画格式的支持: 1. 创建新的解析器类 2. 实现渲染接口 3. 集成到主程序中 ### 自定义渲染效果 可以修改 `spine_renderer.py` 中的渲染逻辑来添加: - 特殊效果(阴影、发光等) - 自定义着色器 - 后处理效果 ## 许可证 本项目采用MIT许可证,详见LICENSE文件。 ## 贡献 欢迎提交Issue和Pull Request来改进这个项目! ## 更新日志 ### v1.0.0 - 初始版本发布 - 支持Spine动画转GIF - 完整的骨骼动画渲染引擎 - 批量处理功能