Когда я пытаюсь сохранить изображение из рендеринга three.js WebGl, оно оказывается совершенно пустым, но возвращает массу символов:
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAK8AAADICAYAAACeY7GXAAADt0lEQ…IF4M2+znB4GcgWgDf7OsPhZSBbAN7s6wyHl4FsAXizrzP8AS/TAMmecuTCAAAAAElFTkSuQmCC
У меня для saveDrawingBuffer установлено значение true, например:
renderer = new THREE.WebGLRenderer( {
alpha: true,
antialias: true,
preserveDrawingBuffer: true
} );
И вот как я вызываю toDataUrl:
var getImageData = false;
function render() {
//camera.position.x += ( mouseX - camera.position.x ) * .005;
//camera.position.y += ( - mouseY - camera.position.y ) * .005;
camera.lookAt( scene.position );
renderer.render( scene, camera );
if(getImageData == true){
imgData = renderer.domElement.toDataURL("image/png");
window.setTimeout(10);
console.log(imgData);
getImageData = false;
}
requestAnimationFrame(render);
}
getImageData = true;
А вот как выглядит холст до рендеринга в изображение:
Холст а>
CanvasCode
<canvas width="175" height="200" style="width: 175px; height: 200px"></canvas>
Честно говоря, я не уверен, что еще сказать, кроме каких-либо идей относительно того, почему изображение выглядит совершенно пустым? Функция render() — это самая последняя вещь в нижней части кода.