资源推荐
vectreal-platform
vectreal-platform

把一个从 Blender 导出的 GLB 文件放到网页上,听起来不难。实际上,原始导出文件往往几十 MB,包含冗余几何体、高分辨率纹理、未优化的法线数据,直接嵌入会让页面加载卡住。

Vectreal 是一个正在开发中的开源平台,尝试把「3D 文件 → 优化 → 网页嵌入」这个流程标准化,整个仓库已在 GitHub 开源。

3D 内容上网一直没有标准流程

图片上传有 CDN 和自动压缩,视频上传有转码流水线,3D 内容一直没有对等的基础设施。

这背后有几个具体障碍:格式太分散,OBJ 没有内嵌纹理,USDZ 是苹果私有格式,FBX 是 Autodesk 专有格式,只有 glTF/GLB 才是 Web 上通行的开放标准;文件太大,3D 建模工具的导出设置服务于离线渲染,不考虑网络传输,原始文件跑到几十甚至上百 MB 很正常;没有嵌入机制,不像 YouTube 有 iframe、Figma 有分享链接,3D 内容上了 CDN 也得自己写加载代码。

现有做法通常需要:设计师手动在建模软件里调导出参数,工程师写 Three.js 加载逻辑,托管和 CDN 自己处理。设计和开发之间的协作摩擦很大,每次更新模型都要走一遍流程。

Vectreal 的做法

Vectreal 提供了一个在线的发布工作流:

  1. 上传 GLB、glTF 包、OBJ 或 USDZ 文件
  2. 在 Publisher 界面调整光照、相机视角和优化参数
  3. 保存场景到账号,发布后生成稳定的嵌入地址
  4. 复制 iframe 代码片段,粘贴到任意网页

整个流程不需要在本地安装任何工具。上传时平台会在服务端做一遍优化处理——减少多边形面数、移除冗余几何体、压缩纹理贴图——之后用户访问页面拿到的是已经处理过的文件。

格式统一也在这里解决:无论上传什么格式,内部都会转换为 glTF 处理,最终以 GLB 形式托管。

部署

平台代码和部署配置完整开源,仓库包含 Terraform 脚本,可以部署到自己的 Google Cloud 环境,不依赖托管版本。对于不想把模型文件放在第三方服务的团队,这是一个可行的选项。

代码也是开源的

作者不只是开源了平台应用本身,还把底层能力拆成了三个独立的 npm 包,可以脱离托管平台直接用:

  • @vctrl/core:Node.js 端的模型加载和优化工具,支持在自己服务端批量处理 3D 文件
  • @vctrl/hooks:浏览器端的 React hooks,处理模型的加载和导出
  • @vctrl/viewer:React 3D 查看器组件,基于 Three.js,配置相机、灯光、阴影后直接用

对于想在已有 React 项目里加入 3D 展示功能的团队,不需要接入完整平台,直接安装 @vctrl/viewer 就能嵌入一个可交互的 3D 查看器。

整个项目的技术栈是:Three.js + React Three Fiber 负责渲染,glTF-Transform 做模型处理,Supabase 处理认证和数据存储,Google Cloud Storage 托管模型文件,部署在 Google Cloud Run,基础设施用 Terraform 管理。

写在最后

Vectreal 目前处于早期阶段,star 数量不多,版本尚未到 1.0,文档里也坦诚标注了部分功能「代码里还未完整实现」。这是一个正在推进中的项目,不是生产就绪的成熟工具。

但它指向的问题是真实存在的。3D 内容在网页上的发布成本确实比图片和视频高一个量级,有人愿意把这套流程做成开源工具,对需要处理 3D 内容的团队来说值得关注。

需要注意 AGPL-3.0 协议,商业使用需要确认许可条款。

GitHub:https://github.com/Vectreal/vectreal-platform (opens in a new tab)