zoukankan      html  css  js  c++  java
  • three.js canvas内场景生成图片 canvas生成图片

    第一种最简单的方法:


    1   threeBox.render();//重点  解决拿到图片后为黑色
    2             
    3   let  src=threeBox.renderer.domElement.toDataURL();//将选中的canvas转换为base64编码
    4   let a = document.createElement("a"); // 生成一个a元素
    5   let event = new MouseEvent("click"); // 创建一个单击事件
    6   a.download = "photo"; // 设置图片名称
    7   a.href = src; // 将生成的URL设置为a.href属性
    8   a.dispatchEvent(event); // 触发a的单击事件 将图片下载下来

    threeBox.render();

    对应 three.js:

    renderer = new WebGLRenderer({ antialias: true, alpha: true});
    renderer.render();

    注:在截图之前先渲染一下场景和相机,就不会实时刷新屏幕,导致我们截屏下来的是空白了

    threeBox.renderer.domElement.toDataURL();
    
    

    对应canvas方法:canvas.toDataURL(); //得到base64编码格式图片地址

    注:如果是普通canvas,可直接通过canvas.toDataURL()获取截图


    第二种方法:

    1 renderer = new WebGLRenderer({
    2  antialias: true,
    3  alpha: true,
    4  preserveDrawingBuffer :true 
    5 })
    6 
    7 renderer.domElement.toDataURL();
    preserveDrawingBuffer :

    在渲染器开启preserveDrawingBuffer :true,即缓冲区保护-是否保存在缓冲区手动清除或覆盖,这个默认是false。

    开启之后,缓冲区的图像就不会被更新清除,就可以截取下来想要的图案。

    但问题也很明显,那就是在有动画或者后期渲染内容增加的时候,你的画面会变得很乱,内容被不断的叠加,

    因此我是建议大家使用第一种方法,这个方法说出来,只是为了让大家更加了解一下。


    得到的base64:
    
    
    
    下载下来的截图:
     
  • 相关阅读:
    koa中使用 ejs
    koa 中获取 post 提交数据
    koa-static 静态资源中间件
    koa 中使用 art-template 模板引擎
    koa中使用cookie
    elasticsearch的安装和使用
    J2EE项目中后台定时运行的程序
    pycharm下搭建django开发环境
    什么是反向代理,如何区别反向与正向代理
    ionic build android error when download gradle
  • 原文地址:https://www.cnblogs.com/yushihao/p/14272697.html
Copyright © 2011-2022 走看看