three.js:cubemap和renderer.autoclear = false

时间:2016-07-14 10:27:17

标签: javascript three.js clear renderer

我有两个场景,我分别渲染和覆盖,所以renderer.autoClear设置为false。我在渲染循环中使用renderer.clear(),一切都很好:

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

然而,我现在已经在场景中添加了立方相机,以制作反光物体。不幸的是,将renderer.autoClear设置为false会导致问题,当周围环境发生变化时,反射物体的纹理不会清除,从而导致典型的“绘画”效果:

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

这是一个复制问题的简化小提琴。我没有包括这两个场景,以保持简单。我知道这实际上可能是库中的一个错误,在这种情况下我会将它发布到回购中。

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

1 个答案:

答案 0 :(得分:0)

伟大的WestLangley在github上解决了问题。更新立方体贴图时必须打开自动清除,但可以再次关闭渲染的其他部分。

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

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

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

更新了小提琴:https://jsfiddle.net/pqoz74rf/6/