我正在开发一个个人网站,将 Three.js 和 ScrollMagic 与 OO Javascript 结合起来。当用户滚动 3d 对象变换时。这一切都很好,但有一个轻微的性能问题。为了改善这一点,我想将一些计算位置的循环/for函数移动到网络工作者(每当我调用循环函数时,滚动滞后)。
问题是我试图将类实例(THREE.PointCloud)的数组(512)传递给网络工作者。我似乎无法从网络工作者的这些实例中获得任何有意义的完整属性。
首先,我只是试图将数组传递给工作人员并得到这个错误'Uncaught DataCloneError:无法在'Worker'上执行'postMessage':无法克隆对象。
然后我意识到我不能这样做,所以我使用了 JSON.stringify() 和 JSON.Parse()。我可以得到数组的长度。但是,我无法获取每个实例的属性。
我想我需要使用 ArrayBuffer?但我不知道如何将我的实例数组转换为 ArrayBuffer。任何人?还是有更简单的方法来提高性能?
帮助将不胜感激。
谢谢。