three.js:立方体贴图和 renderer.autoclear = false

three.js: cubemap and renderer.autoclear = false

我有两个场景,我正在分别渲染和叠加,所以将 renderer.autoClear 设置为 false。我在渲染循环中使用 renderer.clear(),一切正常:

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

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

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

这里是一个简化的 fiddle,它复制了这个问题。为了简单起见,我没有包括这两个场景。我知道这实际上可能是库中的错误,在这种情况下,我会 post 将其添加到回购协议中。

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

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

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

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

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

已更新 fiddle:https://jsfiddle.net/pqoz74rf/6/