three.js - Three.js 在多台计算机的服务器上分发高分辨率渲染
问题描述
我有一个显示器网格(12 * 2 = 24 个显示器)作为一个大显示器(大墙大小的显示器)运行。我用 three.js 构建了一个可视化,它有超过 10 000 000 个数据点和 12690 x 3840 分辨率。因此,这种可视化使用了 GPU 的全部功能,并且与可视化的交互变得缓慢。我想通过一个服务器将渲染分布在 12 台计算机上,以获得更好的性能,能够添加更多的数据点并进行流畅的交互。
你知道如何实现吗?
解决方案
这个答案是:在多个屏幕上显示three.js 场景
还有这个 non-three.js 示例,但它确实显示了一个解决方案,并且这个 three.js 一个跨机器运行
基本上,您设置了一个服务器来在机器之间中继 websocket 消息。这听起来可能很吓人,但使用 node.js 并没有那么多代码(我相信其他语言也有简单的解决方案)。
每台机器都需要知道要显示场景的哪个部分,并且需要具有相同的场景(或机器将显示的场景部分)。机器上的动画应该直接与时钟相关联。作为开始,您可以使用Date.now()
. 一旦它开始工作,您就可以使用 websockets 来保持机器之间的时钟同步。否则,如果有交互式相机控件或其他设置,只要它们是全局的,您就可以通过 websockets 将它们广播到所有机器。
如果有更多的交互,那么您可以在机器之间传递输入或其他数据,但理想情况下,您需要使其不需要同步,因此模拟是确定性的,因此在相同的状态(时间 + 设置)下,每台机器将生成相同的显示状态。
推荐阅读
- node.js - 在 express 中使用路由器
- r - R Shiny:使用输出中的变量在函数之外进行进一步计算
- pdf - 使用 mPDF 创建不受保护的 pdf
- angular - 通过 Nginx 加载 Angular 应用程序非常慢 - 需要 60 秒
- docker - 如何通过app container-docker连接mysql容器的localhost:3306
- java - Java中侦听器的内部类,这是不好的做法吗?
- javascript - 多语言弹性搜索映射设置
- android - 如何在 Android Oreo 中获取其他应用意图?
- amazon-s3 - 亚马逊 s3 存储桶中的文档有哪些不同类型的存储?
- python - 如何确保 __del__ 函数按照通常(但不正确)的预期在 Python 类上被调用?