在WebGLrenderer中使用autoclear和preserveDrawingBuffer

0 renderer webgl three.js orbit todataurl

我有一个Three.js场景,我在其中设置了渲染器的preserveDrawingBuffer:true因为我想使用renderer.toDataURL拍摄画布上的内容的快照,我也使用renderer.autoClear = false因为我使用的是2个场景每个一个摄像头(当然一个渲染器).

问题在于,当我使用orbitControls移动相机时,对象不会像它们应该的那样动画,它们之前的状态保留在画布上,并且由于preserveDrawingBuffer:true设置,它们正在创建一个丑陋的绘画(它们不会被删除).

如何同时拥有2个场景/摄像机和轨道控制的快照功能,我该怎么办?

谢谢.

Wes*_*ley 8

如果您正在实例化WebGLRenderer并保留绘图缓冲区,如下所示:

var renderer = new THREE.WebGLRenderer( { preserveDrawingBuffer: true } );
Run Code Online (Sandbox Code Playgroud)

如果你正在设置

renderer.autoClear = false;
Run Code Online (Sandbox Code Playgroud)

你需要renderer.clear()在渲染之前调用它:

renderer.clear();
renderer.render( scene, camera );
Run Code Online (Sandbox Code Playgroud)

three.js r.69

  • 这个"不是什么大不了的"评论令人震惊! (4认同)
  • 总而言之,我在你的问题上花了1.5个小时.我想你错过了这一点. (3认同)