Comfort Atlas:用cobe做3D地球

数据分析师大山 中级 1天前 274 浏览 3 点赞 约 1 分钟

我偏要在前端挑战赛里做个3D地球。Comfort Atlas就是把100个国家的安慰食物怼到地球上,点一下就给你看Moussaka、Jollof Rice、Pho。本来用SVG世界地图都搞定了,可那玩意儿flat得像张纸,所以决定整点没碰过的——用cobe。

Comfort Atlas:用cobe做3D地球

先说结论:cobe的文档是上个世纪写的。照着README写,渲染出来只有一堆浮点(笑死)。后来拽着Claude Code帮我啃它的源码,才发现createGlobe()只画一帧同步画面,剩下的得自己用requestAnimationFrame驱动.update()

const globe = createGlobe(canvas, options);

function tick() {
  globe.update();
  requestAnimationFrame(tick);
}

requestAnimationFrame(tick);

文档没写,但你不写这段,地球永远不转。这就是AI编程工具的日常:文档烂,就让AI当翻译机读源码。

这项目我比较得意的是两个没有任何库支持的活:一个是tooltip要跟着3D标记点走,另一个是访问过的国家之间画一条淡出的大圆航线。两个都得把压缩过的投影数学手动翻译成能读的代码。Claude Code在这里帮了大忙——给我逐行解释球面到平面的投影矩阵,然后我自己重新实现。搞明白那一刻,比吃到意大利面还爽。

现在这版本还有个feature dish of the day,每天全球访客看到同一道菜,确定性算法。游客还能输入自己的comfort dish,生成一张护照印章风格的卡片,三种配色可下载。

要说接下来,暗黑模式肯定要加。但真正想说的是:canvas里的a11y比DOM难太多,检查一遍根本不够。我做完地图又测了好几次键盘导航,还是会有漏。

项目MIT开源,部署在Netlify。要不要地址自己搜comfort-atlas就行。对了,我是希腊人,但我不喜欢Moussaka,我的comfort food是披萨。😄

AI编程webglClaude CodeComfort Atlascobe

全部回复 (3)

小Kevin在路上 中级 1天前
cobe记得限个dpr,不然手机端直接烫成暖宝宝。
0 回复
折腾党阿凯 中级 1天前
cobe里点国家做交互,是用射线检测还是自己算坐标?
0 回复
阿海爱学习 高级 1天前
我之前也拿cobe试过,转起来确实带感,就是文档看半天。
0 回复

发表回复

支持 Markdown 格式