three.js加载多个gltf模型,并打印加载进度
时间: 2023-10-01 08:10:28 浏览: 164
Vue使用Three.js加载glTF模型的方法详解
要加载多个gltf模型,并打印加载进度,可以使用three.js提供的Loader类和LoadingManager类。以下是一个简单的示例代码:
```javascript
const manager = new THREE.LoadingManager();
manager.onProgress = function(item, loaded, total) {
console.log(`Loading ${item}: ${loaded}/${total}`);
};
const loader = new THREE.GLTFLoader(manager);
const modelsToLoad = ['model1.gltf', 'model2.gltf', 'model3.gltf'];
const loadedModels = [];
let loadedCount = 0;
modelsToLoad.forEach((model, index) => {
loader.load(
model,
function(gltf) {
loadedModels[index] = gltf.scene;
loadedCount++;
if (loadedCount === modelsToLoad.length) {
// All models loaded, do something with them
console.log('All models loaded!');
console.log(loadedModels);
}
},
function(xhr) {
console.log(`${model}: ${(xhr.loaded / xhr.total * 100)}% loaded`);
},
function(error) {
console.error(`Error loading ${model}: ${error}`);
}
);
});
```
在上面的代码中,我们首先创建了一个LoadingManager对象,并设置了它的onProgress回调函数,用于在每个模型加载时打印加载进度。然后,我们创建了一个GLTFLoader对象,并用它来加载每个模型。在load函数的第一个回调函数中,我们将加载的模型保存到loadedModels数组中,并跟踪已加载的模型数量。当所有模型都加载完成时,我们在控制台中打印loadedModels数组。在load函数的第二个回调函数中,我们打印每个模型的加载进度。如果出现错误,我们在load函数的第三个回调函数中打印错误信息。
请注意,由于加载是异步的,因此模型的顺序不一定与modelsToLoad数组中的顺序相同,因此在loadedModels数组中,我们必须使用正确的索引来保存每个模型。
阅读全文