2016-07-14 7 views
2

Ich habe zwei Szenen, die ich separat rendern und überlagern, also renderer.autoClear auf false setzen. Ich verwende renderer.clear() in der Rendering-Schleife, und alles ist gut:three.js: cubemap und renderer.autoclear = false

// This works fine! 
renderer.clear(); 
renderer.render(bgScene, bgCamera) 
renderer.clearDepth(); 
renderer.render(scene, camera); 

Allerdings habe ich jetzt eine cubecamera zu der Szene hinzugefügt, um ein reflektierendes Objekt zu machen. Leider verursacht, mit renderer.autoClear Satz zu false Fragen, wo die Textur des reflektierenden Objekts klart nicht, wenn die Umgebung zu ändern, wodurch die typischen „Malerei“ -Effekt:

// Causes "painting" effect 
cubeCamera.updateCubeMap(renderer, scene); 

Hier ist eine vereinfachte Geige, die die repliziert Problem. Ich habe die beiden Szenen nicht aufgenommen, um die Dinge einfach zu halten. Ich bin mir bewusst, dass dies tatsächlich ein Fehler in der Bibliothek sein könnte, in diesem Fall werde ich es im Repo veröffentlichen.

https://jsfiddle.net/pqoz74rf/4/

Antwort

0

Problem des großen WestLangley gelöst, über auf github. Auto-Clear muss beim Aktualisieren der Cubemap eingeschaltet sein, kann aber für andere Teile des Renderings wieder ausgeschaltet werden.

renderer.autoClear = true; 
cubeCamera.updateCubeMap(renderer, scene); 

renderer.render(bgScene, bgCamera) 
renderer.autoClear = false; 

renderer.clearDepth(); 
renderer.render(scene, camera); 

Aktualisiert Geige: https://jsfiddle.net/pqoz74rf/6/