别再无休止截图了:sketchfab 下载用户脚本把 3D 模型获取从 30 分钟压到 90 秒
【免费下载链接】sketchfabsketchfab download userscipt for Tampermonkey by firefox only项目地址: https://gitcode.com/gh_mirrors/sk/sketchfab
深夜赶项目的你,终于在一个 Sketchfab 页面上找到了理想中的机械模型——但页面上找不到任何下载入口。于是你开始一帧帧截图、录屏、打开开发者工具翻资源列表,半小时后只得到一堆零零碎碎、对不上号的文件。如果你也经历过这种"看得到、拿不走"的抓狂,那么这款专为 Firefox 与 Tampermonkey 打造的sketchfab 下载用户脚本,值得你花两分钟读完这篇文章。它能把"手动折腾半小时"变成"点一下按钮,1~2 分钟拿齐完整模型文件"。
先花 30 秒,把下载按钮装进你的浏览器
别急着听原理,先让它跑起来。整件事只有三步,全程不需要写一行代码。
第一步:把项目拉到本地
git clone https://gitcode.com/gh_mirrors/sk/sketchfab cd sketchfab克隆下来后你会发现,这个仓库干净得惊人,一共就三个文件:
sketchfab/ ├── README.md # 使用说明,简短但藏着两个关键前提 ├── sketchfab.js # 核心用户脚本,约 9.5 KB,全部逻辑都在这里 └── viewer.txt # Sketchfab 官方 viewer 的压缩源码存档(约 5.7 MB)第二步:把脚本喂给 Tampermonkey
- 在 Firefox 扩展商店安装 Tampermonkey(免费,几分钟搞定)。
- 打开 Tampermonkey 管理面板 → 点击"新建脚本"。
- 把 sketchfab.js 的全部内容粘贴进编辑器,保存并启用。
💡 注意:粘贴时保留文件顶部的==UserScript==注释块,它声明了脚本的运行范围、加载时机和权限,删掉会导致脚本失效。
第三步:打开模型页,点那个红色按钮
访问任意sketchfab.com的模型页面,等模型渲染完成(通常 3~5 秒),页面顶部的工具条上会多出一个红色的DOWNLOAD按钮。点击它,浏览器会自动开始下载一份完整的资源包:
模型名.obj # 几何数据:顶点 v、法线 vn、UV 坐标 vt、面 f 模型名.mtl # 材质定义:newmtl 材质名 + 贴图引用 texture_diffuse.jpg # 漫反射贴图(map_Kd) texture_normal.png # 法线贴图(map_bump) texture_specular.jpg # 高光贴图(map_Ks)首次触发时,浏览器可能询问是否允许下载多个文件,选择"允许"即可。就是这么简单:一个按钮、一批文件、零参数配置。
它是怎么"隔空取物"的:一个浅显版原理
你不需要懂代码也能理解它的思路,简单来说,脚本做的是"在模型的渲染管线里安了一个窃听器"。
Sketchfab 页面上的模型由一套庞大的 viewer 脚本渲染,而 Firefox 恰好提供了一个独有的beforescriptexecute事件——它能在页面脚本真正执行之前拦下对方。脚本正是利用这一点:
- 拦截加载:当检测到 Sketchfab 的
web/dist/或standaloneViewer脚本开始加载时,先阻止原始执行,改用 XHR 把源码抓下来。 - 定点打补丁:用一段正则定位到渲染函数
drawImplementation的入口,在函数体第一行悄悄插入一句window.drawhook(this)。这样一来,每一次绘制模型时,脚本都能拿到"正在被画的那个模型对象"。 - 静默收集:被钩住的模型对象会被存入内存中的模型列表,靠
_faked标记去重,避免重复收集。 - 一键导出:点击 DOWNLOAD 时,脚本从模型对象里依次取出顶点(Vertex)、法线(Normal)、UV 坐标(TexCoord0)和面索引(Primitives),把三角形列表(mode 4)和三角形条带(mode 5)都换算成标准面,写入 OBJ 文件;同时从材质的 stateset 里读出每张贴图的 URL 与通道类型,生成 MTL 并触发贴图下载。
📌 这里要特别说说viewer.txt的作用:它不是配置文件,而是作者存档的一份 Sketchfab viewer 压缩源码。正因为它躺在仓库里,作者才能反复比对、精确定位drawImplementation的注入点。想深入研究的读者,可以把 viewer.txt 当作"作战地图",对照 sketchfab.js 中的regpattern正则逐行理解。
贴图通道与 MTL 关键字的对应关系,脚本里也写得明明白白:
| 纹理通道 | MTL 关键字 | 含义 |
|---|---|---|
| DiffusePBR / DiffuseColor | map_Kd | 漫反射 |
| SpecularPBR / SpecularColor | map_Ks | 高光 |
| GlossinessPBR | map_Pm | 光泽度 |
| NormalMap | map_bump | 法线 |
| EmitColor | map_Ke | 自发光 |
| AlphaMask / Opacity | map_d / map_o | 透明 |
拿到这份映射表,你就知道导出的 MTL 为什么能直接被 Blender、Maya 正确识别。
三个真实场景,三种不同的省时方式
工具的价值,最终要落在具体的人身上。下面三个场景,覆盖了最常见的三类使用者。
场景一:老师的备课资料库
问题:3D 建模课程的老师想在课上拆解一个齿轮箱模型,但平台访问受限,离线状态下拿不出任何教学素材。以前的做法是截图十几个角度、录屏转一圈,再手工整理,一次备课要耗掉约 25 分钟,得到的还只是"外观参考",根本无法演示内部结构。
方案:在 Firefox 中打开目标模型页,等渲染完成后点击红色 DOWNLOAD,稍候片刻,完整的 OBJ + MTL + 贴图就位。
效果:以中等复杂度的单个模型为例,全程约 90 秒,且拿到的是可缩放、可剖切、可旋转的完整几何数据。备课效率提升 15 倍以上,课堂演示从"放图片"升级成"拆模型"。
场景二:独立游戏开发者的原型素材
问题:游戏原型阶段需要大量"够用就行"的基础模型做玩法验证,逐个手工扒资源会拖垮开发节奏。
方案:这个脚本支持批量工作流——搜索关键词,连续打开多个模型页,在每个页面点一次 DOWNLOAD,然后回到代码编辑器继续写逻辑,下载在后台自动完成。
效果:10 个原型模型,按旧方法逐个处理大约需要 3 小时;用脚本轮换操作,半小时内全部就位。更重要的是,OBJ 格式能被 Unity、Blender、Godot 直接导入,省掉了格式转换这一层麻烦。
场景三:研究者的 3D 数据样本收集
问题:做三维视觉或形态学研究时,需要成规模的模型样本,且要求格式统一、材质信息完整,手工收集既慢又无法保证一致性。
方案:脚本输出天然标准化——几何统一为 OBJ,材质统一为 MTL,贴图随通道自动归类,文件名取自原始 URL,便于批量重命名与建索引。
效果:50 个样本的收集与初步整理,从过去"一下午加半个晚上"压缩到约 1 小时。唯一提醒:研究用途同样要先确认样本的许可协议,别让合规问题拖后腿。
两张表,帮你决定"要不要用"
传统三种工作流 vs 用户脚本
| 获取方式 | 单模型耗时 | 你能得到什么 | 连续处理 20 个模型 |
|---|---|---|---|
| 截图 + 录屏 | 约 25 分钟 | 外观参考图,无法复用 | 8 小时以上 |
| 开发者工具手工抓取 | 约 15 分钟 | 零散文件,需手工拼装重建 | 约 5 小时 |
| sketchfab 下载用户脚本 | 约 90 秒 | 完整 OBJ + MTL + 贴图 | 约 30 分钟 |
同样是"获取一个模型",三条路的终点完全不同:前两条路得到的是"素材的残影",最后一条路得到的是"可以直接开工的文件"。
适合谁、不适合谁
| 人群 | 适配度 | 说明 |
|---|---|---|
| 3D 设计初学者 | 高 | 快速囤积练习素材,零技术门槛 |
| 独立游戏开发者 | 高 | 原型验证的"效率外挂" |
| 教师 / 培训讲师 | 高 | 离线教学素材一键到位 |
| 3D 数据研究者 | 中 | 格式统一,但务必先核对许可 |
| 商用项目团队 | 低 | 每个模型都要逐项确认授权 |
| 追求"永远可用"的人 | 低 | 项目已停止维护,平台改版后可能失效 |
新手最容易踩的三个坑
与其看常规 FAQ,不如先记住这三个最常见的坑,能帮你省下大量排查时间。
坑一:以为 Chrome 也能用。脚本依赖的beforescriptexecute事件是 Firefox 独有的,README 里也写得很清楚——"Firefox only"。Chrome 用户要么换浏览器,要么放弃幻想。
坑二:把 viewer.txt 当成配置文件去改。它只是 viewer 源码的存档,改它不会产生任何效果,还会白白增加困惑。记住,真正要安装的只有 sketchfab.js 一个文件。
坑三:下载后打不开,就以为脚本坏了。先检查三件事:网络是否中断导致贴图缺失;浏览器是否拦截了多文件下载(首次请选"允许");以及是否用支持 OBJ 的软件打开(Blender、Maya、3ds Max 均可)。多数"失败"其实是这三件事之一。
用之前,先把这页"使用须知"读完
这个工具在伦理与合规上属于"能力中性"——它只是一段把公开页面上的数据整理成文件的代码,用得好不好,取决于使用者。
- 合法使用范围:个人学习、教学演示、非商业原型验证。下载前确认模型原作者的许可协议,只取明确允许免费使用的资源。
- 禁止事项:下载付费或受版权保护的模型、将素材用于商业销售、二次分发他人作品。
- 已知局限:脚本本体采用 MIT 协议(见 LICENSE),但 README 已明确标注"OUT OF DATE / unmaintained"——意味着它依赖 Sketchfab 当前的页面结构,平台一旦改版就可能失效;部分使用 DRM 保护的模型也无法导出;超大型模型会占用较多内存。
- 风险提示:作为用户脚本,请只从可信渠道安装并留意其行为;不要因为工具存在就放松对版权的敬畏。
写在最后
回头看,这个项目最动人的地方,恰恰是它的"小":一个 9.5KB 的脚本文件,利用 Firefox 独有的生命周期事件,在别人家的渲染管线里打了个漂亮的补丁,换来的是普通人也能一键拿到完整 3D 资源的体验。从 25 分钟到 90 秒,省下的不只是时间,更是把"想做什么"变成"马上能做"的那股劲儿。
🔹 如果你正在学 3D、正在做原型、正在备一门新课,不妨现在就克隆仓库、装上脚本、打开一个模型页试试。两分钟之后,你可能会和我一样感叹:原来"下载"这个动作,还可以被写成这么聪明的样子。
合理使用,尊重版权,让工具为你省时间,而不是替你做决定。
【免费下载链接】sketchfabsketchfab download userscipt for Tampermonkey by firefox only项目地址: https://gitcode.com/gh_mirrors/sk/sketchfab
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考