“THREE.GLTFLoader:未提供 DRACOLoader 实例”尽管提供了一个

问题描述 投票:0回答:1

我正在尝试在 Three.js 中加载 GLB 模型,以便在 WebXR 增强现实场景中渲染它。但是,模型没有显示,我收到错误

THREE.GLTFLoader:未提供 DRACOLoader 实例

在控制台中,尽管明确提供了一个:

import { GLTFLoader } from "gltf-loader";
import { DRACOLoader } from "draco-loader";

// ...
const loader = new GLTFLoader();

load(model, onModelLoad) {
    loader.load(model, onModelLoad, undefined, (loadingError) => {
        if (loadingError.message.includes('THREE.GLTFLoader: No DRACOLoader instance provided')) {
            tryLoadingModelWithDRACO(model, onModelLoad);
        } else {
            logger.error(loadingError);
        }
    });
}

tryLoadingModelWithDRACO(model, onModelLoad) {
    logger.info("Trying to load model with DRACO");
    try {
        const dracoLoader = new DRACOLoader();
        dracoLoader.setDecoderPath("/static/draco/");
        dracoLoader.setDecoderConfig({ type: "js" });
        const loader = new GLTFLoader();
        loader.setDRACOLoader(dracoLoader);
        loader.load(model, onModelLoad); 
    } catch (dracoLoadingError) {
        logger.error(dracoLoadingError);
    }
}

我下载了 draco_decoder.js 文件,并将其正确放入 setDecoderPath() 中指定的文件夹中(我也没有收到 404,因此文件位置正确)。但是,在尝试加载 GLB 模型时我仍然收到此错误。为什么?我显然提供了一个 draco 加载器实例,以防 GLTF 加载不起作用。

three.js
1个回答
0
投票

这个问题可能已经得到了回答:How to use DRACOLoader with GLTFLoader in ReactJs?

通常您必须提供完整路径。

https://raw.githubusercontent.com/mrdoob/three.js/dev/examples/js/libs/draco/

一位回复者表示他们成功使用了 node_modules 的相对路径。

话虽如此,我也遇到了这个问题,但没有任何解决办法。

© www.soinside.com 2019 - 2024. All rights reserved.