创建three.js所的网格WebWorker

问题描述 投票:6回答:3

我想尽可能多的Threejs计算尽可能卸载到一个Web工作。这似乎是相对可行只是想工人创造几何图形时。不过,我仍然需要创建网格的显著量,这意味着沉重的周期在主线程上。

是否有可能网格创建卸载到一个网络工作者,只是有主线程将它添加到场景(准备好时)?

这个想法是有工人建立网格阵列,基于一些数据,并将其在发送到主线程。

非常感谢

multithreading three.js web-worker
3个回答
1
投票

不幸的是,THREEJS 3D对象(类)是“重”在工人使用(对象不能通过“工作线程” - “主线”的边界,即使我打补丁threejs LIB内工人使用)。

但我成功地使用工人异步加载相当大的物体。我用Catiline.js为了方便。

我们的想法是使用THREEJS对象原生格式(和缓冲的几何形状),并简单地将其解析到JS对象的内部工作人员。后,您可以使用THREE.ObjectLoader在主线程获取真实场景的对象。从这种方法的好处是将解析(其可能需要相当长的时间大对象),以背景和缩小冻结。

我用的6名工人,工人选择随机,传递数据的URL,并additionaly得到XMLHttpRequest的缓存的好处


0
投票

我现在愿意在我的项目之一来解决这个问题。如果你还没有开始你的,我会建议先看看https://github.com/kripken/webgl-worker。有两个例子(一个简单,一个复杂一点),可以帮助开始。

我将更新后这个答案提供了关于如何wegl工人与three.js所,这可能需要比简单的WebGL /工人实现更多的整合设置更多的细节。


0
投票

Threejs对象无法通过postMessage的传递。

相反,我们要建立一个连接返回到通过网络插座主页。这应该让我们自由地通过任何需要。


0
投票

此线程可能会对你有所帮助......我最近不得不做一些SSR与three.js所和概念相似想到你是在工人解析缓冲区几何与ObjectLoader。

https://discourse.threejs.org/t/error-with-ssr-three-js-objects/8643

© www.soinside.com 2019 - 2024. All rights reserved.