三.js加载大型模型
Three.js loading large models
当我尝试使用库提供的适当加载器加载非常大的文件时,我的网站运行的选项卡崩溃了。我尝试过实现 Worker 类,但它似乎不起作用。以下是发生的情况:
在主javascript文件中,我有:
var worker = new Worker('loader.js');
当用户选择可用模型之一时,我检查扩展名并将文件 URL/路径传递给工作线程:(在本例中为 pcd 文件)
worker.postMessage({fileType: "pcd", file: file});
现在,加载器.js具有使其工作所需的适当包含:
importScripts('js/libs/three.js/three.js');
importScripts('js/libs/three.js/PCDLoader.js');
在其 onMessage 方法中,它根据文件扩展名使用专有加载器。
var loader = new THREE.PCDLoader();
loader.load(file, function (mesh) {
postMessage({points: mesh.geometry.attributes.position.array, colors: mesh.geometry.attributes.color.array});
});
数据被成功传递回主javascript,后者将其添加到场景中。至少对于小文件 - 大文件,就像我说的,需要太长时间,浏览器决定有错误。现在我认为工人阶级应该异步工作,那么这里有什么交易?
目前Three.js的加载器依赖于字符串和字符串数组来解析文件中的数据。它们不会将文件拆分为多个部分,这会导致内存使用过多,浏览器会立即中断。加载 64 MB 文件会激增到加载期间使用的 1 GB 内存以上(然后导致错误)。
相关文章:
- 在VanillaJS中模拟模型双向数据绑定
- 在jstree中,如何将指定的节点集中到大型树上
- 为集合分配大量的模型弹药
- 如何使用backbone.js从集合中获取模型名称
- 以块形式呈现大型HTML表
- 骨干模型默认值-todos.js示例中不必要的代码
- EmberJS中支持单字母单词模型
- 如何在大型nodeJS代码的基础上逐步引入typescript
- 2个backbone.js集合,具有相同的模型,但排序顺序不同
- 将不在模型中的数据返回到mvc控制器
- 如何在视图模型contet更新更新上调用Jquery函数
- 如何使用Javascript客户端对象模型检索Sharepoint 2010列表项权限
- 我应该如何检查主干.主干.模型更改时查看
- Ext.js从json构建模型关系的问题
- 具有大型几何图形的基于沙发的空间查询
- 显示模块模式在Knockout中设置模型的新实例
- 如何用Realtime API加载现有的大型数据模型?
- 在模型内外解析大型json数据
- 三.js加载大型模型
- API POST调用带有大型模型,需要一些指导