首页 > 解决方案 > Three.js 在多台计算机的服务器上分发高分辨率渲染

问题描述

我有一个显示器网格(12 * 2 = 24 个显示器)作为一个大显示器(大墙大小的显示器)运行。我用 three.js 构建了一个可视化,它有超过 10 000 000 个数据点和 12690 x 3840 分辨率。因此,这种可视化使用了 GPU 的全部功能,并且与可视化的交互变得缓慢。我想通过一个服务器将渲染分布在 12 台计算机上,以获得更好的性能,能够添加更多的数据点并进行流畅的交互。

你知道如何实现吗?

标签: three.jswebgldistributed-computinghigh-resolution

解决方案


这里这里有一个例子。

这个答案是:在多个屏幕上显示three.js 场景

还有这个 non-three.js 示例,但它确实显示了一个解决方案,并且这个 three.js 一个跨机器运行

基本上,您设置了一个服务器来在机器之间中继 websocket 消息。这听起来可能很吓人,但使用 node.js 并没有那么多代码(我相信其他语言也有简单的解决方案)。

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

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


推荐阅读