IKEA 3D 模型下载脚本:宜家应该自己造的工具
- Smars
- Open Source , 开发者工具
- 08 Jun, 2026
为什么会有这个项目
宜家在其产品目录中投入了大量精力制作 3D 模型。在官网上,许多商品都有可交互的 3D 查看器,你可以在三个维度中旋转家具、放大检查细节,感受物品在你空间中的样子。这些模型本身质量不错——几何结构干净、面数合理、纹理适合网页渲染。
但问题是你无法下载这些模型。你只能盯着一个嵌入式的浏览器小部件,没有任何导出选项。想把宜家沙发导入房间规划软件?不行。想在 Blender 里用它做更好的渲染?除非你有文件。这些模型只存在于宜家的查看器中——从每个角度观看都很好,但作为数据完全不可获取。
问题不在于质量,在于访问控制。于是出现了 IKEA 3D Model Downloader。
这是一个 Tampermonkey 脚本,会在宜家商品页面上原有的 “3D 预览” 按钮旁边增加一个 “下载 3D” 按钮。点一下就能拿到原始的 .glb 文件——宜家查看器使用的同一个 3D 模型,保存在本地,可用于任何 3D 应用。不需要账号,不需要云服务平台,就是一个解决一个痛点的用户脚本。
MIT 许可证,原生 JavaScript,大约 450 行可读代码,GitHub 上超过 1,200 star。这就是一个说到做到、不多嘴的项目的精髓。
它到底做了什么
脚本的工作乍一看很简单:拦截、检测、交付。但实现层面用了多重回退策略来处理宜家的动态前端架构。
拦截网络请求。 脚本复写了 window.fetch、钩入了 XMLHttpRequest.open、并用 PerformanceObserver 监听导航计时入口。所有包含 .glb 或 glb_draco 关键词的 URL 都会被推入内部维护的一个数组中。它们本质上都是宜家的 Draco 压缩 GLB 文件——和他们在多个品类嵌入式查看器中使用的是同一格式。
找到原来的 3D 预览按钮。 脚本搜索匹配 pipf-xr-button 或 pip-xr-button 类名模式的按钮,也会通过独特的 SVG 路径特征来定位按钮。找到之后,在它旁边复制一个同样样式的按钮,标签文字自动切换语言:芬兰语 Lataa 3D,法语 Télécharger 3D,中文则显示 下载3D 模型,找不到对应的就 fallback 到英语 Download 3D。
在按钮渲染之前就缓存可用的模型 URL。 点击下载后,脚本直接从内存数组中取最近捕获到的 URL。对于仍用 model-viewer 元素的旧页面,它会读取 src 属性作为备选来源。如果自动抓取彻底失败了怎么办?按 Ctrl+Alt+D 进入手动模式——你手动点击 3D 预览按钮,脚本会接着帮你抓取。
转成 Blob 并触发本地下载。 确认了模型 URL 后,脚本 fetch 二进制内容、封装成 Blob 对象、生成临时锚元素并触发 click 事件进行下载。文件名遵循人类可读的命名约定,比如 KALLAX - White (406.708.12).glb 这样的格式。
这里有两个值得注意的点。首先,这不是爬虫——它读的是浏览器自己在加载的 URL,纯客户端操作,不会外传任何数据。其次,多层拦截策略(fetch + XMLHttpRequest + PerformanceObserver + MutationObserver)说明作者理解基于浏览器的前端架构随时可能变动,所以需要做好兜底。
谁会用到它
如果你从事三维工具、空间设计相关的工作,宜家的模型是有用的素材。它们在几何上干净、面数低、UV 映射完整、形状属于常见消费品形态。几个具体用途方向:
-
室内规划: 把 .glb 导入大部分室内设计平台,在购买前把你的 floor plan 用宜家家具虚拟摆放一遍。SketchUp、RoomSketcher、Floorplanner 都可以直接导入。
-
自定义渲染: 宜家的默认场景灯光充其量就是够用级别。把模型拽进 Blender 或 Cinema 4D,换上自己的材质和灯光环境,产出生成品。比从零建原始体块省时间。
-
游戏开发道具: 干净的几何结构使其可以用作游戏场景的良好起点。货架、桌面、灯具等简单造型在 DCC 工具中稍作清理即可使用。
-
空间计算原型: AR/VR 平台越来越支持原生的 GLB 格式。可以在空间原型验证场景中先摆进去试试实际效果,而不是靠直觉判断家具和墙的相对尺寸。
-
打印和研究方向: STL 转换会引入形变偏差,但有了原始的 Draco 压缩源文件,再转成可用打印网格的质量底线就有了保障。
对任何曾试过从宜家的围墙花园里提取 3D 模型的人来说,这很可能是全网唯一这类工具。
什么时候你不该用它
有些用户可以先把预期的调低一些:
-
并非所有宜家商品都有 3D 模型。老款商品、清仓品以及地区限定商品通常没有。脚本只能在宜家提供 3D 查看器的页面上工作。
-
Draco 压缩的 GLB 文件需要解码器支持。某些版本的 3D 软件在导入 glb_draco 格式时会出问题。可以先在你的目标建模工具里转换或重新导出一下。
-
宜家可以随时重构他们的网页架构。新的类名、懒加载方式、CDN 迁移都可能让脚本暂时不可用。虽然有多种兜底检测方案增加了容错率,但重大改版后可能需要作者更新修复。好消息是作者在积极维护——发布至今有 37 次提交记录,最近的补丁在 2026 年 1 月底。
-
商业用途需自行评估法律风险。下载宜家非自有的模型用于商业目的可能违反他们的服务条款。仅供参考和个人用途。了解风险再动手。
-
企业级浏览器通常会封杀第三方脚本,不管意图如何。如果你的公司 IT 部门管理了扩展白名单,这条路可能走不通。
社区和活跃度
作者是 apinanaivot,项目发布于大概三个月前,仓库数据显示它在同龄项目中表现突出:不到 90 天拿到了超过 1,200 个 star 和 45 个 fork,这说明是真需求,不是新鲜感驱动。
Git 历史里有 37 次提交,证明活跃维护不断档。打开的 Issues 有四个,说明社区在持续使用和反馈边界案例。作者响应速度不错——近期几个 bug 都是几周内有修复提交,最近一次是 2026 年 1 月 30 号发布的 bugfix。单文件架构意味着透明度高:几分钟就能扫完整个代码库,确认没有埋后门或者偷偷上报数据不困难。
MIT 许可意味着修改、分发、嵌入到其他工作中完全没有法律障碍。如果你想把它改造成其他零售商的对应工具也很轻松,改几行域名匹配规则就行。
快速上手
前提条件:装了 Tampermonkey 或兼容的用户脚本管理器插件。现代 Chromium 系浏览器或 Firefox 都行。
第一步——安装:直接访问这个链接
用 Tampermonkey 打开会自动弹出安装提示。或者去仓库页面,复制 raw 源码 ikeadownloader.user.js 全部内容,到 Tampermonkey 面板新建脚本粘贴进去、保存、启用。Chrome 用户还需要在 Tampermonkey 设置的高级选项中开启开发者模式。
第二步——找页面:打开任意带有 3D 查看器的宜家商品页,找到原来的 3D 预览按钮。那个蓝色的下载按钮会自动出现在它旁边。
第三步——下载:点那个按钮,.glb 文件就下载到本地了,文件名包含产品和颜色信息。
排查问题列表:
- 没看到按钮?刷新页面试试。也可以按 Ctrl+Alt+D 进入手动模式。检查一下 Tampermonkey 是否允许该脚本在 *.ikea.com 域名下执行。
- Chrome 用户:去 Tampermonkey 面板确认高级选项里开发者模式已开启。
- 还是不行?去 GitHub 开 issue。作者回得比较快。
这件事的核心启示
大多数浏览器扩展都是解决方案去找一个问题。这个是反过来的——有一个真实的问题然后找一个最简单的解法。
宜家把精美的 3D 资产放在了一个只能用、不能留的查看器里。有人注意到了这个摩擦点,写了几百行 JavaScript 公开贴在网上,现在成千上万的人受益于一个零基础设施、零运维成本、零学习成本的修复方案。
好的开源微工具长什么样?极简的范围,极实的作用,清晰的代码,透明的行为。不依赖任何平台,没有供应商锁定,不要订阅费。就是一个开发者看到了一个糟糕的体验,亲手把它修好了。
这个项目值得被更多人关注的原因不在于你能下载宜家的家具模型。它的价值证明了另一件事:最小的工具也能解决最顽固的使用体验缺口。宜家造了一个不可能完成的功能需求——网页上看 3D 但不能存——有人用 450 行免费软件解决了,我们甚至不需要一个企业级产品团队来做这件事。
仓库:https://github.com/apinanaivot/IKEA-3D-Model-Download-Button