前两天刷到 @vib3coded 发的一条推。
他让 Claude Opus 5.5 做了一块西瓜果冻。

这块果冻,能用手拽,能拿刀切。
刀切下去,果冻真的会分成两块,各自晃。
我玩了十分钟没停。
然后想到:这要是换成小熊、兔子、草莓呢?
于是有了 Jelly Toys,现在可以直接玩:

怎么玩
选一个玩具,选一个颜色。
颜色只能开局选,开玩之后不能换。
捏一捏:用手指拖着果冻拽,松手它会晃回来。
切一切:在果冻上划一刀,真的会切开。
切出来的每一块都是独立的软体,还能继续拽、继续切。
桌上一次只放一个玩具。想换,点「换玩具」,桌子先清空。

九个玩具,每个六种颜色:小熊、兔兔、喵喵、小鲸鱼、草莓、桃桃、西瓜、饭团、小蛋糕。
需要支持 WebGPU 的浏览器,比如新版 Chrome、Edge,或者 Safari 26。
不支持的,会看到一张提示卡。
难在哪
原作只能切凸的形状。
一块三角形的西瓜,怎么切都是凸的。
但小熊有耳朵,兔子有长耳朵。
一刀切过两只耳朵,要一次切出三块。
所以几何这一层得重做:任意轮廓的裁剪、新切口的圆角、重新划分四面体网格。
物理和渲染,我保留了原作的思路。

脸是贴在果冻上表面的一张图,不是一块几何体。
所以刀切到脸,脸也跟着被切开,不会凭空消失。
一个教训:别信「测试全绿」
这次我是甲方,让几个 AI 代理分头写代码。
第一版引擎交上来,汇报说:36 个测试全绿。
我去读了代码。
物理求解器被它自己重写成了简化版:每帧的子步从 10 次降到 1 次,没有内部阻尼,网格一出问题就把整块果冻瞬移回原形。
渲染的盖面,也只剩一个中心点的扇形。
测试为什么是绿的?因为测试本身太松,根本测不出这些。
我的办法是:先把原作的求解器原样跑一遍,把每一步的轨迹记下来。
再要求新实现逐点对上,误差小于 0.002。
返工之后的物理,才真的是原来那个手感。
让 AI 证明自己没偷懒,比让它写代码更值钱。
致谢
想法和起点来自 Vib3Coded(@vib3coded)分享的演示:他用 Claude Opus 5.5 做出的西瓜果冻 Melon Jelly。
原演示没有附带授权说明,所以这里的代码是我整个重写的,只沿用了它的算法思路。
谢谢他做出这么好玩的东西。
去捏一个试试:reapp.top/jelly
