2012-12-23 147 views
6

有沒有辦法讓無服務器上的服務器端運行three.js(獨立服務器,Amazon 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實例以編程方式控制完整桌面計算機的過程感覺是可能的,同時也很脆弱,如果有任何純軟件解決方案,我真的不想去那裏。

回答

9

在其QA基礎設施,谷歌可以利用梅薩運行的Chromium測試(見問題97675,通過開關--use-gl=osmesa)。最新版本的Mesa中的軟件光柵化程序非常先進,包括使用LLVM轉換着色器並模擬CPU上的執行。你的第一次冒險可能是建造Mesa,建造Chromium,然後嘗試將它們綁在一起。作爲一個側面說明,這也是我爲PhantomJS本身計劃(特別是在不久的將來),特別是因爲Qt也朝着這個方向發展,即使用Mesa/LLVMpipe而不是它自己的光柵引擎。 The numbers實際上看起來不錯。更好的是,對於離線的非動畫單拍捕捉,性能會更令人滿意。

+0

這正是我正在尋找的東西(當然,如果沒有更多現成的選項)。我沒有意識到對Mesa渲染器的Chromium支持。希望我能成功,或者更好,如果你先在PhantomJS中工作:) – yaku

+0

@yaku你能用Mesa渲染器運行Chromium嗎? – frank

+0

@frank不,我沒有。並不是說它不能完成,只是因爲我沒有太多經驗來構建和調整大量的軟件。仍然期待再次嘗試,或者PhantomJS或其他現有解決方案支持WebGL。 – yaku

1

在這個線程一些投入:https://github.com/mrdoob/three.js/issues/2182

這尤其demo展示瞭如何使用生成的NodeJS服務器端的一些圖像。

感謝, 尼科

+1

不幸的是,它看起來像它僅僅是CanvasRenderer。我正在尋找完整的WebGLRenderer功能,即使它們未經過加速並以軟件呈現(大約1 FPS應足以達到此目的)。不知怎的,使node.js(或phantomjs)與像osmesa或llvmpipe(?)這樣的軟件OpenGL渲染器一起工作可能是一條路,但那是......我不知道從哪裏開始。 – yaku