Загрузка локального файла glTF в Javascript память - PullRequest
0 голосов
/ 17 апреля 2020

Я использую три. js и Capacitor для создания собственного приложения iOS и Android. У меня есть некоторые модели GLTF, которые я хочу загрузить из какой-то папки активов, которая связана с кодом и доставлена ​​пользователю, но я не уверен, как go об этом.

Эта документация по функции load загрузчика GLTF требует некоторого URL. Parse , однако, принимает "актив glTF для анализа как ArrayBuffer". Как я могу загрузить этот файл glTF в память и как это лучше всего сделать? Я попытался import * as Model from './models/myModel.gltf', но получил ошибку Cannot find module.

1 Ответ

1 голос
/ 17 апреля 2020

Здесь мой метод загрузки файла gltf, я использую reader для загрузки любого файла в моей сцене, затем он анализируется с помощью loader.parse. Но если вам нужна папка с примерами моделей, я думаю, вам не нужны метод чтения и парсер. Просто используйте метод загрузки GLTF basi c и сохраните ваши образцы в массиве или объекте. Я надеюсь, что помог вам.

loadGltf(file, filename) {
        reader.onload = readerEvent => {
            const contents = readerEvent.target.result;
            const loader = new THREE.GLTFLoader()
            try {
                loader.parse(contents, '', function (gltf) {
                    gltf.scene.traverse(function(child) {
                        if (child.isMesh) {
                            child.castShadow = true;
                            child.receiveShadow = true;
                        }
                    });
                    currentModel = gltf.scene;
                    scene.add(gltf.scene);
                });
            }
            catch(error) {
                alert("Your file " + Load.filename + " was not parsed correctly." + "\n\n" + "ERROR MESSAGE : " + error.message);
            }
        }
        reader.readAsArrayBuffer(file);
    }
...