极客玩具 · 物理引擎 · 触觉反馈 · 多元模式
运行于 M5StickS3 与 M5Cardputer(ESP32-S3)上的多合一流体物理沙盒系统。
LiquidDuck 融合了多套经过深度调优的流体与粒子动力学引擎,支持横竖屏自适应与多种视觉表现形式:
┌── 🦆 小黄鸭海洋球 (Ocean Ball / FLIP, 横屏)
├── 💡 LED 灯阵模式 / 单色像素 (Solid Pixel, 竖屏)
LiquidDuck 物理沙盒 ──┼── 🔮 渐变像素模式 (Gradient Pixel, 竖屏)
└── 🌊 拟真海洋瓶 / 液体模式 (Liquid Bottle, 竖屏)
-
物理互动:基于不可压缩流体动力学(FLIP)与刚体浮力解算,小黄鸭等角色会真实漂浮于海洋球上;倾斜或剧烈晃动时小球四处飞溅并产生逼真的推挤浪花。
-
角色变换:内置 小黄鸭、潜水艇、小丑鱼、人字拖、漂流瓶、小鲸鱼 6 种可互动角色。
-
多主题配色:
- Ocean Water:经典水流梯度配色(深海蓝 ➔ 清澈天蓝 ➔ 浪花白),高速运动激起纯白水花。
- Neon Crystal:极高亮度的彩虹霓虹晶莹小球。
- Pastel Candy:梦幻柔和的马卡龙粉彩糖果色。
- Cyber Matrix:高亮活泼的极客薄荷绿与青翠荧光。
- Sunlit Citrus:阳光暖橙、芒果金黄与夏日果汁色。
-
明亮清爽背景:精选天空蓝、活力橙、海草绿、晴空蔚蓝、梦幻樱粉、清新薄荷等多款高颜值明亮背景。
- 数字化点阵流体:针对 14×24 粗点阵网格,采用点电荷独立分配机制,彻底打散双线性插值的模糊感,还原老式 LED 像素管、复古掌机与赛博控制台的硬朗颗粒质感。
- 珍珠溅射效果:晃动时小水滴如珍珠/沙粒般独立喷射溅开,随后自然流淌聚拢。
- 密度与能量可视化:在 14×24 圆角点阵的基础上,像素颜色根据该网格汇集的流体密度与动能进行冷暖/明暗阶梯渐变映射,直观呈现质量积压与水流起伏。
- 高密度连续波浪:采用 27×48 高分辨率解算网格与双线性插值连续体渲染。
- 手持海洋瓶:握持设备如同手握一个真正的微缩水瓶,倾斜摇晃即可把玩激荡澎湃的深海波涛。
| 适用模式 | 主题分类 | 包含配色 |
|---|---|---|
| 海洋球模式 | 5 大明亮小球主题 | 蔚蓝水流、极光霓虹、马卡龙糖果、赛博生化、阳光夏日 |
| 像素 & 液体模式 | 8 套赛博/复古调色板 | 黑客帝国绿 (Matrix)、霓虹赛博 (Cyberpunk)、经典琥珀 (Amber)、复古黑白 (Mono)、猩红警戒 (Red)、深海蔚蓝 (Deep Sea)、生化毒液 (Toxic)、奢华至臻 (Gold) |
- 三段式触觉引擎:内置低通滤波与碰撞能量累积算法,搭配 Hat Vibrator (G0 引脚) 实现段落感分明的物理撞击震动。
- 动态碰撞音效:根据小球与边界的撞击能量实时合成 1200Hz~2200Hz 动态衰减音效。
- 爆炸反推力:按下按键瞬间在流体中心引爆能量冲击波,将小球与角色猛烈炸散。
| 操作 | 小黄鸭海洋球模式 (横屏) | 像素 / 液体模式 (竖屏) |
|---|---|---|
| 倾斜 / 晃动设备 | 重力感应流动,小球与角色实时交互碰撞 | 重力感应水流翻滚,溅起水花 |
| 短按 BtnB | 🎨 随机切换主题(小球配色、明亮背景、角色联动变换) | 🎨 循环切换 8 套像素调色板 |
| 长按 BtnB (0.5秒) | 🔄 循环切换物理模式(海洋球 ➔ 纯色像素 ➔ 渐变像素 ➔ 拟真海洋瓶) | |
| 按下 BtnA / Enter | 💥 触发流体大爆炸,水花四溅并伴随音效 | — |
- 硬件支持:M5StickS3 / M5Cardputer (ESP32-S3)
- 可选外设:M5StickS3 Hat Vibrator (连接至 GPIO 0)
- 开发环境:PlatformIO / VSCode
# 克隆仓库
git clone https://github.com/nongxl/LiquidDuck_ESP32.git
# 编译并烧录至设备
pio run -t uploadPolyForm Noncommercial License 1.0.0 — 仅限非商业用途
ESP-Mosaico 方形触摸屏移植版见 mosaico/README.md,使用 MicroPixel Guest SDK 构建,包含四种流体模式和触摸操作。原有 PlatformIO 工程保持独立。