2015-01-26 167 views
0

更新:重新編寫問題以使其更一般化。 (原始here僅供參考)更換渲染器後不顯示Three.js場景

我在Three.js WebGLRenderer中渲染一個場景。然後,我需要用新的WebGLRenderer替換渲染器(用新的畫布替換畫布),並在新的渲染器中再次渲染相同的場景。

的設置看起來大致是這樣的:

cancelAnimationFrame(this.requestID_); 
// all other Three.js objects stay same (and I let Three.js create a new canvas) 
this.createNewRenderer(); 
this.animate(); 

然而,新的渲染器將只呈現一個空的背景,而不是在幕後的網格。 如果我用新計算的網格替換場景網格,渲染再次正常。

因此,我認爲它與網格有關。因此,爲了避免重新計算網格,我試圖在創建新的渲染器之前(和之後)根據this three.js doc設置所有geometry.xxxNeedUpdate和material.needUpdate標誌,但是這也不起作用。

我能做些什麼來「強制刷新」網格以在新的WebGLRenderer中再次顯示?

回答

0

我目前通過場景中的每一個清爽網求解如下這樣:

mesh.geometry = mesh.geometry.clone(); 
mesh.material = mesh.material.clone(); 
newMesh = mesh.clone();