6

有没有办法让 three.js 在无头服务器(独立服务器、亚马逊 AWS 或类似服务器)上运行服务器端?

目前,当用户的浏览器不支持 WebGL 时,我会退回到画布渲染(仅出于性能原因的线框)。这对于实时交互来说已经足够好了,但是为了让应用程序有意义,用户确实需要能够以某种方式看到带有灯光、阴影、后期处理等的正确渲染版本,即使它具有很大的延迟。

那么......是否有可能创建一个具有功能的three.js实例的服务器端服务?客户端仍将使用 tree.js 画布线框渲染,但在说...一秒钟不活动之后,它会通过 AJAX 请求来自服务器端服务的完整渲染,并将其简单地叠加为图像。

目前是否有任何应用程序、库或任何允许这样的事情(无头,最好是 linux 服务器上的功能性 javascript+webgl+three.js,并且没有 GPU)?

想到 PhantomJS,但显然它还不支持 WebGL:http ://code.google.com/p/phantomjs/issues/detail?id=273

或者解决问题的任何替代方法?以编程方式控制具有 GPU 和标准 chrome/firefox 实例的完整台式机的路线感觉是可能的,虽然很脆弱,如果有任何纯软件解决方案,我真的不想去那里。

4

3 回答 3

9

在其 QA 基础架构中,Google 可以使用 Mesa 运行 Chromium 测试(请参阅 issue 97675,通过 switch --use-gl=osmesa)。最新版 Mesa 中的软件光栅化器非常先进,涉及使用 LLVM 转换着色器并模拟 CPU 上的执行。您的第一次冒险可能是构建 Mesa,构建 Chromium,然后尝试将它们联系在一起。

作为旁注,这也是我为 PhantomJS 本身计划的(在不久的将来),特别是因为 Qt 也在朝着这个方向发展,即使用 Mesa/LLVMpipe 而不是仅使用它自己的光栅引擎。这些数字实际上看起来不错。更好的是,对于离线、非动画的单镜头捕捉,性能会非常令人满意。

于 2012-12-29T17:08:51.220 回答
1

此线程中的一些输入:https ://github.com/mrdoob/three.js/issues/2182

特别是这个演示展示了如何使用 nodejs 在服务器端生成一些图像。

谢谢,尼科

于 2012-12-29T08:38:41.277 回答
0

下面的链接不会解决您使用 AWS 的问题,但会给您一个提示。

我正在开发具有类似架构的应用程序,并遇到了以下示例:

具有实时 socket.io 的多人游戏

我关于类似架构的原始问题

于 2015-02-21T17:03:11.900 回答