亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

獲取變換后的 3D 頂點

獲取變換后的 3D 頂點

慕斯709654 2023-11-11 21:27:32
我有一個 webgl 著色器,它使用骨架和 SkinnedMesh 基于 Three.js 為我生成模型(請參見下面的示例圖片)。問題在于,據我所知, Three.js 沒有提供任何選項來獲取所使用的著色器計算產生的頂點。有沒有辦法直接從 webgl 使用的緩沖區或通過任何其他方式獲取這些頂點,因為我需要它們將結果保存為客戶端的 3d 對象文件(例如,作為 .obj 或 .stl)。不幸的是,我無法提供源代碼,但我希望這是一個關于 webgl 的相當普遍的問題,這可能足以幫助我?
查看完整描述

1 回答

?
牧羊人nacy

TA貢獻1862條經驗 獲得超7個贊

沒有“簡單”的方法來獲取變換后的頂點

一種方法是在 JavaScript 中運行著色器本身正在執行的相同數學運算。

另一種方法是嘗試使用變換反饋來讓 GPU 將數學運算的結果寫回緩沖區。變換反饋僅在 WebGL2 中有效,在 WebGL1 中無效,此外,在 Three.js 中,至少從 r123 開始還沒有內置支持來幫助您。添加支持需要修改 Three.js 的源代碼,因為為了使用變換反饋,您必須在編譯和鏈接著色器時調用一些函數,并且據我所知, Three.js 中沒有鉤子來執行此操作,因此您必須修改源代碼。特別是,您需要gl. transformFeedbackVaryings在調用之前調用gl.linkProgram,以便告訴 WebGL 您希望它寫出哪些變量。

另一個需要注意的是,如果您需要將頂點值讀回 JavaScript,則需要調用gl.getBufferSubData該函數,這被認為是很慢的。是否太慢取決于您的需求。


查看完整回答
反對 回復 2023-11-11
  • 1 回答
  • 0 關注
  • 118 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號