在线压缩 GLB 和 GLTF 文件体积最多减小 90%

借助 Draco 几何压缩和 WebP/AVIF 纹理,缩小 GLB 和 glTF 模型的体积,且画质无明显损失。专为实际生产流程打造:支持最大 500 MB 的文件、批量上传、可复用的预设和 REST API。

1 个免费积分 · 无需信用卡 · 文件 24 小时后删除

立即体验

亲身体验压缩 GLB 文件的效果

拖入 GLB 或 GLTF 文件,创建免费账户,即可下载压缩后的模型。

或拖放到此处

GLB 或 GLTF,最大 500 MB

如何压缩 GLB 文件

只需三步,大多数模型的体积可减小 60–90%。

  1. 1

    上传模型

    将不超过 500 MB 的 .glb 或 .gltf 文件拖入控制台,也可以一次批量上传多个模型。

  2. 2

    选择设置

    从预设开始,或自行设置 Draco 压缩级别、量化位数、纹理最大尺寸和纹理格式(WebP、AVIF、JPEG 或 PNG)。

  3. 3

    下载压缩后的文件

    获得经过验证的 GLB 文件,可在 three.js、Babylon.js、<model-viewer>、Unity 和 Unreal 中加载。源文件和输出文件会在 24 小时后删除。

您的模型会经过哪些处理

  • Draco 几何压缩。 对顶点位置、法线和 UV 进行量化和熵编码,通常可将几何数据缩小 80–95%。了解 Draco 的工作原理
  • 纹理缩放与重新编码。 过大的纹理会被缩小(例如从 4K 降到 2K),并转换为 WebP 或 AVIF。对于纹理较多的产品模型,这一步通常节省的空间最多。
  • 清理。 移除重复和未使用的顶点以及其他未使用的数据,还可以对网格进行焊接、合并、扁平化或实例化。
  • 可选的网格简化。 减少高密度扫描、摄影测量和 CAD 导出模型的三角面数。
  • 验证。 每个输出文件都会经过官方 Khronos glTF 验证器检查,您也可以通过我们免费的在线 glTF 验证器使用它。

您的 .gltf 由多个文件组成?可以使用免费的 glTF 转 GLB 工具将其打包为单个文件,或通过压缩 API 实现全流程自动化。

功能

节省时间和带宽

GLB 文件压缩工具

将 GLB 文件体积最多减小 90%,同时保持出色的视觉效果。这款 GLB 优化工具基于 gltf-transform 构建,能高效处理您的 3D 模型,且不牺牲视觉质量。

附带 GLTF 验证器

每个 GLB 和 GLTF 文件都会自动验证,可发现常见问题,确保压缩后的模型在各种目标环境中都能正常使用。

快速压缩 API

简单的 REST API,可快速处理您的 GLB 文件。非常适合希望在应用中轻松加入 GLB 压缩功能的开发者。

创建自定义预设

将常用的压缩设置保存为自定义预设。参数只需设置一次,即可在不同项目中重复使用,无需记住所有设置。

精细的压缩控制

可调整纹理质量、几何简化和动画压缩,精确获得您想要的效果。适合希望更细致地控制 GLB 优化的用户。

贴心的支持

对集成或压缩设置有疑问?欢迎随时联系!我们很乐意帮您充分用好 GLB 压缩工作流。

免费积分,轻松上手

创建免费账户即可获得 1 个压缩积分,无需信用卡。非常适合用来测试这款 GLB 压缩工具在您的模型上效果如何。

GLB 批量处理

可上传多个 GLB 文件(每个最大 500 MB)并一次性全部压缩。处理在我们的服务器上进行,因此大型模型不会受到浏览器内存限制。

实时进度更新

通过进度条和状态更新实时查看 GLB 压缩过程,不用再担心任务是否卡住或出错。

保持模型质量

gltf-transform 承担了繁重的处理工作,在缩小模型体积的同时保持良好的视觉效果。颜色、纹理和动画均完好保留。

轻松集成 API

简洁的 REST 端点,配有清晰的文档。只需几行代码,就能将 GLB 文件压缩加入您的工作流,无需复杂配置。

内置 GLB 验证器

每个压缩后的文件都会经过检查,确保其有效且可直接使用。帮助您在部署优化后的 GLB 文件之前发现问题。

代码示例

轻松集成

同步上传可立即获得结果,异步上传适合大批量文件。下面介绍如何快速上手。

import fs from 'fs';
import path from 'path';

async function compressGLB(inputPath, outputPath) {
  const fileBuffer = fs.readFileSync(inputPath);
  const formData = new FormData();
  formData.append('file', new Blob([fileBuffer]), path.basename(inputPath));

  const upload = await fetch('https://api.compress-glb.com/api/1/files/upload/sync', {
    method: 'POST',
    headers: { 'Authorization': '<API_KEY>' },
    body: formData
  });
  const [job] = await upload.json();

  const compressed = await fetch(job.compressed_file_url);
  fs.writeFileSync(outputPath, Buffer.from(await compressed.arrayBuffer()));
}

常见问题