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

AR.js中Blender压缩GLB模型的Draco解压问题求助

AR.js加载Draco压缩GLB模型失败的解决方案

问题回顾

在AR.js项目中加载Blender导出的Draco压缩.glb模型时出现解压失败,未压缩模型可正常运行,已引入DRACOLoader并下载了三个Draco解码文件,更换版本仍无法解决。

解决步骤

1. 确保Draco文件版本匹配与完整性

  • 所有Draco文件(draco_decoder.wasm、draco_wasm_wrapper.js、draco_decoder.js)必须同版本,且与A-Frame依赖的Three.js版本对应:A-Frame 1.3.0对应Three.js r132,需下载该版本的Draco文件。
  • 检查文件路径是否正确,在浏览器开发者工具的Network面板确认三个文件均成功加载(无404或加载失败状态)。

2. 手动配置DRACOLoader到A-Frame的GLTFLoader

A-Frame原生gltf-model组件未默认集成Draco支持,需自定义扩展组件:
在引入DRACOLoader脚本后添加以下代码:

<script>
  AFRAME.registerComponent('gltf-model-draco', {
    schema: { type: 'string' },
    init: function () {
      const el = this.el;
      const loader = new THREE.GLTFLoader();
      const dracoLoader = new THREE.DRACOLoader();
      // 设置Draco解码器所在文件夹路径(无需指定单个文件)
      dracoLoader.setDecoderPath('https://bg.com/AR/');
      loader.setDRACOLoader(dracoLoader);

      loader.load(this.data, function (gltf) {
        el.setObject3D('mesh', gltf.scene);
      }, undefined, function (error) {
        console.error('GLTF模型加载错误:', error);
      });
    }
  });
</script>

将实体的gltf-model属性替换为自定义的gltf-model-draco:

<a-entity
  position="0 0 0"
  scale="0.05 0.05 0.05"
  rotation="0 0 0 "
  gltf-model-draco="https://bg.com/AR/phone2.glb"
  animation__rotation="property: rotation; to: 0 360 0; loop: true; dur: 5000"
></a-entity>

3. 验证Blender导出设置

  • 确认Blender导出.glb时已正确勾选「Draco压缩」选项,且压缩参数设置合理(避免过度压缩导致模型损坏)。
  • 用Three.js官方GLTFViewer验证压缩模型本身是否可正常加载,排除模型导出损坏的问题。

4. 调试与跨域检查

  • 打开浏览器开发者工具Console面板,查看具体报错信息(如Draco加载失败、模型解析错误),精准定位问题。
  • 若模型或Draco文件跨域部署,需确保服务器配置了CORS允许跨域访问,否则会被浏览器拦截加载。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 19:28:16