three.js - 三个 JS DefaultLoadingManager onProgress 函数首先返回错误的总项目数
问题描述
我使用此代码来计算加载百分比:
THREE.DefaultLoadingManager.onProgress = (item, loaded, total) => {
console.error(loaded / total * 100);
};
它达到大约 80%,然后返回到 60%,然后达到 90%,然后返回到 80%。
经过一番调试,我发现总项目数先是25个,然后增加到35个左右,然后达到52个。
这种增加是因为 JSONLoader。我加载了一些对象,这些对象有材料作为图像,所以 onProgress 函数将这些图像添加到要加载的项目总数中。
我想知道如何知道开始时要加载的实际项目数(52)。如果不可能,如何解决从80%到60%的倒退?
解决方案
你可以做几件事:
您可以运行一次负载,并将结果记录为最终计数,并对其进行硬编码以供下次运行。
或者..
使用 GLTF 之类的格式,嵌入所有资产。然后你会得到每个模型一件。
或.. 并行关闭所有负载.. 不要响应前几个 onProgress.. 并希望在开始显示进度之前捕获完整的项目数..
或者.. 制作一个进度条,始终按剩余时间的某个百分比前进,并可能调整该百分比以大致匹配单台机器上的加载时间,或者在获得有关剩余负载的更多信息时动态调整它。
推荐阅读
- python - 使用 pdftotext 提取特定数据
- amazon-redshift - 使用 S3 URI 显示的 Redshift 系统视图
- flutter - 如何在 Flutter 中为二维数组创建空列表
- android - 即时交付的模块化应用程序的项目结构
- jenkins - 无法在 jenkins v2.309 中创建“新工作”,确定按钮已禁用
- python - torch.gather(...) 调用的设置结果
- c++ - 为什么在堆中创建的数组上使用 AVX 会导致错误?
- python - 在所有级别上根据 XML 中的元素名称查找属性
- arrays - [Byte] 和 byte() 的区别
- c# - 在unity3d调试的同时我不能输入键盘/鼠标?