6

three.js をヘッドレス サーバー (スタンドアロン サーバー、Amazon AWS など) でサーバー側で実行する方法はありますか?

現在、ユーザーのブラウザーが WebGL をサポートしていない場合、キャンバス レンダリング (パフォーマンス上の理由からワイヤーフレームのみ) にフォールバックしています。これはリアルタイムのインタラクションには十分ですが、アプリが意味をなすためには、ユーザーは何らかの方法でライト、シャドウ、後処理などで適切にレンダリングされたバージョンを見ることができる必要があります。

では...機能するthree.jsインスタンスを使用してサーバー側のサービスを作成することは可能でしょうか? クライアントは引き続き tree.js キャンバス ワイヤフレーム レンダリングを使用しますが、たとえば 1 秒の非アクティブ状態の後、AJAX を介してサーバー側サービスから完全なレンダリングを要求し、それを単純に画像としてオーバーレイします。

現在、そのようなことを可能にするアプリケーション、ライブラリ、または何かがありますか(ヘッドレス、できればLinuxサーバー、およびGPUレスで機能するjavascript + webgl + three.js)?

PhantomJS が思い浮かびますが、どうやらまだ WebGL をサポートしていないようです: http://code.google.com/p/phantomjs/issues/detail?id=273

または、問題に対する代替アプローチはありますか? GPU と標準の chrome/firefox インスタンスを備えた完全なデスクトップ マシンをプログラムで制御するルートに進むことは、脆弱ではありますが、可能であると感じています。

4

3 に答える 3

9

GoogleはQAインフラストラクチャで、Mesaを使用してChromiumテストを実行できます(スイッチを介して問題97675--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 に答える