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:

 

 
         

 

下載下來的截圖:

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM