2016-07-14 3 views
2

J'ai deux scènes que je suis en train de rendre séparément et en superposition, donc j'ai renderer.autoClear mis à false. J'utilise renderer.clear() dans la boucle de rendu, et tout va bien:three.js: cubemap et renderer.autoclear = false

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

Cependant, j'ai ajouté une cubecamera sur la scène, pour faire un objet de réflexion. Malheureusement, ayant renderer.autoClear ensemble à false est à l'origine des problèmes, où la texture de l'objet réfléchissant est pas de compensation lorsque l'environnement change, ce qui provoque cet effet « peinture » typique:

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

Voici un violon simplifié qui reproduit la problème. Je n'ai pas inclus les deux scènes, pour garder les choses simples. Je suis conscient que cela pourrait être un bug dans la bibliothèque, auquel cas je le posterai dans le repo.

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

Répondre

0

Problème résolu par le grand WestLangley, plus sur github. L'effacement automatique doit être activé lors de la mise à jour du cubemap, mais peut être désactivé pour d'autres parties du rendu.

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

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

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

violon Mise à jour: https://jsfiddle.net/pqoz74rf/6/