我有一个显示器网格(12*2=24 个显示器)作为一个大显示器(大墙大小的显示器)运行。
我使用 Three.js 构建了一个具有超过 10 000 000 个数据点和 12690 x 3840 分辨率的可视化。因此,在这种可视化中,GPU 的全部功能被使用,并且与可视化的交互变得缓慢。
我想通过服务器将渲染分布在12台计算机上,以获得更好的性能,能够添加更多数据点并顺利交互。
我该如何实现?
最佳答案
这个答案: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/