如何将Object3d.toJSON()操作卸载到Web worker?

时间:2017-09-26 17:08:42

标签: javascript three.js

我需要将threejs中的活动场景转换为json对象。但随着模型变得越来越大,这个过程需要花费越来越多的时间。我甚至无法显示相同的进度条。我试图将threejs场景发送给Web worker并将其转换为worker的json。但我无法将场景对象发送给工作人员。是否可以将threejs场景发送给web worker?或者Auth::check()是否有任何基于承诺的实施?

1 个答案:

答案 0 :(得分:4)

  

是否可以将threejs场景发送给网络工作者?

不是真的。与worker的数据交换仅限于ArrayBuffers以及可以使用结构化克隆算法复制的任何内容。很可能,它甚至不适用于THREE.Scene对象之类的东西。但是,无论你尝试什么,都需要采用与jSON()相同的复杂性顺序来将所有内容都放入Worker中。

  

或者对于Object3d.toJSON()有什么基于promise的实现吗?

遗憾的是,没有什么可以使它的行为方式不会阻止UI线程,无论多长时间。

但是你可以看一下大部分时间消耗的内容(do you have huge texture-images maybe?),并通过用替代版本覆盖THREE.Whatever.prototype.toJSON()找到一种方法来优化这些东西。