打造专属BongoCat:零基础模型定制与社区贡献全指南
你是否也曾想过让屏幕上的Bongo Cat拥有独特外观?是否希望分享自己设计的猫咪模型却不知从何下手?本文将带你从零开始完成模型定制、格式转换到社区贡献的全流程,让你的创意作品被全球用户看见。
模型定制基础
BongoCat支持三种官方模型类型,分别适配不同交互场景:
- 标准模型:src-tauri/assets/models/standard - 基础静态展示模型
- 键盘模型:src-tauri/assets/models/keyboard - 响应键盘输入的互动模型
- 手柄模型:src-tauri/assets/models/gamepad - 适配游戏手柄操作的模型
每个模型目录包含必要的配置文件和资源:
.model3.json- 模型主配置文件.moc3- 模型数据文件.cdi3.json- 模型物理碰撞配置texture_*.png- 纹理图片资源live2d_motion*.motion3.json- 动作配置文件
模型文件结构解析
以标准模型为例,核心文件结构如下:
standard/
├── cat.model3.json # 模型定义
├── demomodel.moc3 # 模型数据
├── demomodel.cdi3.json # 碰撞配置
├── demomodel.1024/ # 纹理图集
│ ├── texture_00.png
│ ├── texture_01.png
│ └── texture_02.png
├── live2d_expression*.exp3.json # 表情配置
└── live2d_motion*.motion3.json # 动作配置
模型加载逻辑在src/utils/live2d.ts中实现,通过load()方法读取模型配置并初始化:
public async load(path: string) {
this.initApp()
this.destroy()
const files = await readDir(path)
const modelFile = files.find(file => file.name.endsWith('.model3.json'))
if (!modelFile) {
throw new Error('未找到模型主配置文件,请确认模型文件是否完整。')
}
// ...加载模型的后续逻辑
}
自定义模型制作步骤
1. 基础资源准备
- 纹理图片:建议使用3张2048×2048的PNG图片,按身体部位拆分绘制
- 动作设计:规划至少3种基础表情和5种互动动作
- 配置文件:复制官方模型的JSON配置作为模板修改
2. 模型转换流程
若已有其他格式模型,可使用官方提供的在线转换工具: 🔗 BongoCat模型在线转换工具
转换后的文件需验证完整性,确保包含所有必要的配置文件。
3. 本地测试方法
完成模型制作后,通过以下步骤在本地测试:
- 将模型文件夹放入
src-tauri/assets/models目录 - 启动开发环境:
pnpm install
pnpm tauri dev
- 在应用设置中切换至自定义模型
- 测试所有交互动作和表情切换是否正常
模型加载状态管理在src/composables/useModel.ts中实现,通过handleLoad()方法处理模型加载和错误反馈。
社区贡献规范
贡献前准备工作
- 环境搭建:
# 安装依赖
pnpm install
# 启动开发服务器
pnpm tauri dev
- 代码规范:
- 遵循conventional-changelog提交规范
- 使用ESLint进行代码检查:
pnpm lint - 确保所有交互功能在三大平台(Windows/macOS/Linux)测试通过
模型提交 checklist
提交模型前请确认:
- [ ] 所有文件使用UTF-8编码
- [ ] 纹理图片压缩至合理大小(单张不超过2MB)
- [ ] 提供完整的动作集(至少包含 idle、press、release 状态)
- [ ] 包含模型预览图(200×200像素)
- [ ] 填写模型信息文档(作者、版本、说明)
Pull Request 流程
- Fork项目仓库
- 创建特性分支:
git checkout -b model/your-model-name - 提交模型文件至
src-tauri/assets/models/目录 - 更新模型列表:src/constants/index.ts
- 提交PR,标题格式:
feat: add [model-type] model [model-name]
高级模型优化技巧
性能优化建议
- 纹理图集合并:将多个小图合并为图集减少绘制调用
- 动作简化:非关键动作使用简化曲线减少计算量
- 分层加载:优先加载低分辨率纹理,再异步加载高清资源
交互体验增强
通过src/composables/useModel.ts中的方法可以自定义交互逻辑:
// 设置参数值控制模型状态
public setParameterValue(id: string, value: number | boolean) {
const coreModel = this.getCoreModel()
return coreModel?.setParameterValueById?.(id, Number(value))
}
常见可调整参数:
ParamMouseX/ParamMouseY- 控制模型朝向CatParamLeftHandDown/CatParamRightHandDown- 控制手部动作ParamAngleX/ParamAngleY- 控制模型旋转角度
社区资源与交流
模型资源库
Awesome-BongoCat 仓库收集了社区创建的各类模型: 📦 Awesome-BongoCat
在线转换工具
将其他格式模型转换为BongoCat兼容格式: 🔗 BongoCat模型转换工具
社区支持渠道
遇到技术问题可通过以下方式获取帮助:
- QQ群:加入交流群
- Issue跟踪:GitHub Issues
- 贡献指南:.github/CONTRIBUTING.md
贡献案例展示
社区用户贡献的模型案例:
蒸汽朋克风格模型
- 特点:金属质感纹理,齿轮联动动画
- 交互:按键时齿轮转动特效
- 文件结构:src-tauri/assets/models/steampunk
像素艺术模型
- 特点:8-bit风格像素画,复古动画
- 优化:简化纹理至256色,降低资源体积
- 动作:添加复古游戏风格的按键反馈
总结与展望
通过本文介绍的方法,你已经掌握了BongoCat模型定制的全流程。无论是修改现有模型还是创建全新设计,都可以通过社区贡献机制分享你的作品。
BongoCat项目持续欢迎各类贡献,包括但不限于:
- 新模型设计
- 模型转换工具改进
- 交互逻辑优化
- 文档翻译与教程编写
立即开始你的创作,让全球用户使用你设计的BongoCat模型!
所有贡献者将被列入项目贡献者名单,优质模型创作者将获得社区荣誉徽章。详细贡献指南请参考.github/CONTRIBUTING.md。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0194
cann-learning-hubCANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。Jupyter Notebook0121
MiMo-V2.5-Pro-FP4-DFlashMiMo-V2.5-Pro-FP4-DFlash 是驱动 MiMo-V2.5-Pro-UltraSpeed 的底层模型: FP4 量化骨干网络:对 MoE 专家采用 MXFP4 量化,同时保持模型其他部分的更高精度,在几乎无损质量的前提下,显著减小模型体积并降低内存带宽压力。 BF16 DFlash 草稿生成器:用于块扩散推测解码,每次前向传播可生成一整个块的 tokens,并让骨干网络一步完成验证。 两者协同作用,既降低了每参数的位宽,又减少了骨干网络前向传播的次数,而这两者正是万亿参数模型解码过程中的两大主要成本来源。Python00
JoyAI-EchoJoyAI-Echo,这是一个独立的、仅用于推理的版本,旨在实现分钟级多镜头音视频生成。它采用了经过蒸馏的DMD生成器、配对的跨模态记忆以及故事级别的一致性。其性能的核心在于,一个跨模态视听记忆库能够在长达五分钟的视频中保持角色外观和语音音色的一致性。同时,一个训练后处理流程将基于记忆的强化学习与分布匹配蒸馏相结合,实现了7.5倍的速度提升,显著增强了视觉质量和对齐效果。00
AstrBot✨ 易上手的多平台 LLM 聊天机器人及开发框架 ✨ 平台支持 QQ、QQ频道、Telegram、微信、企微、飞书 | OpenAI、DeepSeek、Gemini、硅基流动、月之暗面、Ollama、OneAPI、Dify 等。附带 WebUI。Python05
handy-ollama动手学Ollama,CPU玩转大模型部署,在线阅读地址:https://datawhalechina.github.io/handy-ollama/Jupyter Notebook07