直接将canvas变成图片会一片空白/全黑,原因是:
canvas获取的是t3的渲染界面: const canvas = this.renderer.domElement;
而变成图片之前t3的渲染界面是清空的状态
为什么是清空的状态呢?
因为这个图是渲染器一帧一帧渲染出来的,渲染完成后渲染器自然也就成空的了。
解决办法:
获取截图之前再渲染一下场景
shot(){
const canvas = this.renderer.domElement;
this.renderer.clear();
this.renderer.render(this.scene, this.camera);
const width = canvas.width;
const height = canvas.height;
Canvas2Image.saveAsPNG(canvas, width, height);
}
Canvas2Image的安装与使用:
https://github.com/hongru/canvas2image
Canvas2Image的作者忘记写导出了,自己从他的lib里找到想要的部分,再自己优化下就可以拿来用了。