three.js - 在多台计算机的服务器上分发高分辨率渲染

标签 three.js webgl distributed-computing

我有一个显示器网格(12*2=24 个显示器)作为一个大显示器(大墙大小的显示器)运行。

我使用 Three.js 构建了一个具有超过 10 000 000 个数据点和 12690 x 3840 分辨率的可视化。因此,在这种可视化中,GPU 的全部功能被使用,并且与可视化的交互变得缓慢。

我想通过服务器将渲染分布在12台计算机上,以获得更好的性能,能够添加更多数据点并顺利交互。

我该如何实现?

最佳答案

有一个例子herehere .

这个答案:display three.js scene across multiple screens

还有this non-three.js example但它确实显示了一个解决方案 和 this three.js one that runs across machines

基本上,您设置一个服务器来在计算机之间中继 websocket 消息。这可能听起来很可怕,但对于 Node.js 来说,代码并不多(我确信其他语言也有简单的解决方案)。

每台机器都需要知道要显示场景的哪一部分,并且需要具有相同的场景(或机器将显示的场景部分)。机器上的动画应该直接与时钟相关联。首先,您可以使用 Date.now()。一旦它开始工作,您就可以使用网络套接字来保持机器之间的时钟同步。否则,如果有交互式相机控制或其他设置,只要它们是全局的,您就可以通过网络套接字将它们广播到所有计算机。

如果有更多的交互,那么您可以在机器之间传递输入或其他数据,但理想情况下您需要使其不需要太多同步,因此模拟是确定性的,以便给定相同的状态(时间+设置)每台机器都会生成相同的显示状态。

关于three.js - 在多台计算机的服务器上分发高分辨率渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60204197/

相关文章:

javascript - 将立方体面绘制为一个整体,而不是构成面的三 Angular 形 - Three.js

3d - Threejs 获取对象的中心

javascript - 我应该在什么时候启用/禁用 WebGL/OpenGL 中的顶点位置属性?

java - 使用 Zookeeper 和 Thrift 负载均衡服务

scala - 可以使用命名参数进行 Spark 提交吗?

algorithm - 存储同步数据的分布式算法

javascript - 如何将标签添加到 THREE.Mesh?

json - 验证 clipAction 动画何时在 three.js 中播放完毕

javascript - WebGL texImage2D : Conversion requires pixel reformatting

javascript - 尝试将 WebGL 纹理清除为纯色