You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用JSZip读取GLB文件?

使用JSZip读取GLB文件的正确方法

GLB是二进制格式的3D模型文件,不能直接用async("string")读取——字符串编码会破坏二进制数据的完整性。下面是正确的操作步骤:

1. 读取原始二进制数据

使用async("arraybuffer")获取GLB文件的原始二进制缓冲区,这是处理二进制文件的标准方式:

zip.file("your-model.glb").async("arraybuffer").then(function(buffer) {
  // buffer 就是GLB文件的原始二进制数据
});

2. (可选)转换为Base64字符串

如果需要将二进制数据转为Base64格式(比如生成Data URL),可以通过以下函数转换:

// 将ArrayBuffer转为Base64字符串
function arrayBufferToBase64(buffer) {
  const uint8Array = new Uint8Array(buffer);
  let binary = '';
  const len = uint8Array.byteLength;
  for (let i = 0; i < len; i++) {
    binary += String.fromCharCode(uint8Array[i]);
  }
  return btoa(binary);
}

// 结合读取流程使用
zip.file("your-model.glb").async("arraybuffer").then(function(buffer) {
  const glbBase64 = arrayBufferToBase64(buffer);
  // 可以生成Data URL用于加载
  const dataUrl = `data:model/gltf-binary;base64,${glbBase64}`;
});

3. 直接加载到3D库(如Three.js)

如果你的目标是将GLB加载到Three.js这类3D引擎中,无需转Base64,直接用ArrayBuffer即可:

// 假设已引入Three.js和GLTFLoader
zip.file("your-model.glb").async("arraybuffer").then(function(buffer) {
  const loader = new GLTFLoader();
  loader.parse(buffer, '', function(gltf) {
    // 将模型添加到场景
    scene.add(gltf.scene);
  });
});

内容的提问来源于stack exchange,提问作者Bio Shot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 01:35:25