将本地glTF文件加载到Javascript内存中
我正在使用three.js和Capactor创建一个本地iOS和Android应用程序。我有一些GLTF模型,我想从某种资产文件夹中加载,这些资产文件夹与代码捆绑在一起并交付给用户,但我不确定如何进行将本地glTF文件加载到Javascript内存中,javascript,three.js,capacitor,gltf,Javascript,Three.js,Capacitor,Gltf,我正在使用three.js和Capactor创建一个本地iOS和Android应用程序。我有一些GLTF模型,我想从某种资产文件夹中加载,这些资产文件夹与代码捆绑在一起并交付给用户,但我不确定如何进行 关于GLTF加载程序的load函数的文档需要某种url,然而,它接受了一个“要解析的glTF资产,作为ArrayBuffer”。如何将此glTF文件加载到内存中,最佳做法是什么?我尝试了从“./models/myModel.gltf”导入*作为模型,但出现了一个找不到模块的错误 这里是加载gltf
关于GLTF加载程序的
load
函数的文档需要某种url,然而,它接受了一个“要解析的glTF资产,作为ArrayBuffer”。如何将此glTF文件加载到内存中,最佳做法是什么?我尝试了从“./models/myModel.gltf”导入*作为模型,但出现了一个找不到模块的错误 这里是加载gltf文件的方法,我使用reader
加载场景中的任何文件,然后使用loader.parse进行解析。
但如果您想要示例模型文件夹,我认为您不需要reader方法和解析器。只需使用load GLTF basic方法并将样本存储在数组或对象中。
我希望我帮助了你
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);
}