Sesame Studio 的定位与安装
Sesame Studio 是官方配套的表情设计与动作编排工具,放在独立仓库 dorianborian/sesame-studio,许可证 Apache-2.0,与机器狗主仓库分开维护。Studio 跑在电脑上,与板型无关;表情与动作的成果最终都要回到固件重新编译烧录。
| 安装方式 | 要求与步骤 |
|---|---|
| Windows 便携版 | 从 Releases 页下载 SesameStudio.exe,双击运行,不需要装 Python |
| 源码运行 | Python 3.10+;pip install -r requirements.txt(PySide6、PyOpenGL、numpy、Pillow);python sesame_studio.py 启动 |
Studio 能做什么
- 3D 视口:用真实打印件的 STL 几何渲染整机,舵机角度实时驱动模型
- 时间轴:关键帧序列、拖拽排序、调整帧间过渡时长、可调速度回放
- Inspector:每舵机滑块与数值读数,受各关节机械角限约束
- 人脸编辑器:128×64 的 1-bit 画布,与 SSD1306 屏幕逐像素对应,动画最多 6 帧,带洋葱皮与 hex 字节查看
- 工程文件:
.sesproj保存序列、自定义表情与设置 - 固件互通:直接打开、编辑并保存
face-bitmaps.h - 代码导出:生成
runXPose()形式的 C 动作函数与FACE_LIST、字节数组定义
自定义表情的完整流程
官方固件文档给的自定义表情路径是 jsPaint 加 image2cpp 的手工流程:
- 装 Studio:按上表任一方式安装并启动。预期:看到欢迎界面,可新建或打开
.sesproj工程。 - 画一个表情:在 jsPaint 新建 128×64 画布,黑白作画。预期:得到一张 128×64 的 1-bit 位图。
- 导出字节数组:把图放进 image2cpp,选 Horizontal、128×64、Arduino Code 输出。预期:得到一段 C 字节数组。
- 加进 FACE_LIST:打开
face-bitmaps.h,在FACE_LIST宏里加一行X(myface),数组粘贴到最后一个位图之后。预期:表情名 myface 注册进固件。 - 编译验证:Arduino IDE 重新编译烧录。预期:编译通过;之后用任一控制通道请求表情名 myface,OLED 显示你画的图。
做成动画时数组命名有硬性规则:根帧必须叫 epd_bitmap_myface,后续帧依次 epd_bitmap_myface_1 到 _5;根帧加 5 个编号帧,每个表情上限 6 帧。播放模式三种:
| 模式 | 行为 |
|---|---|
LOOP |
播完回到第 0 帧重播 |
ONCE |
播完停在最后一帧 |
BOOMERANG |
正播到最后一帧再倒放回来 |
两处可以自己对上的口径
把固件源码、固件文档与 Studio 文档放在一起,有两处口径完全对得上,动手前可以自行验证:
| 口径 | 固件源码 | 固件文档 | Studio 文档 |
|---|---|---|---|
| 每个表情的帧数上限 | MAX_FACE_FRAMES = 6 |
根帧 + 5 个编号帧,上限 6 帧 | 人脸编辑器最多 6 帧 |
| 表情资产的落点 |
face-bitmaps.h 的 FACE_LIST 宏 |
新名字加进 FACE_LIST 并粘贴数组 |
直接打开、编辑、保存 face-bitmaps.h
|
第二行说明 face-bitmaps.h 是 Studio 与固件共用的同一份文件:手工流程粘贴数组与 Studio 里点保存,改的是机器人固件里的同一个头文件,两条路径任选或混用。
易错提醒:动画帧的数组名漏掉 epd_bitmap_ 前缀,或编号从 0 写起,固件的 MAKE_FACE_FRAMES 宏就认不出这组帧,动画不生效。根帧不带编号,编号帧从 _1 开始。