更新於 2023/06/14閱讀時間約 1 分鐘

THREEjs geometry升級buffergeometry的萬能方法

在THREE r125版本開始,THREE.Geometry就被棄用。
自己的職位是IT前端,由於套件安全性的原因,需要對THREE套件進行升級,但自己所在公司的程式內還有大量的Geometry。
因為前輩們開發了一些複雜強大的算法,如果用Threejs官方建議的正規方法,自己必須要看懂並且改寫算法。但自己水平有限,所以只能另尋其他方法。
這些踩坑路上找到的強大方法,感覺隨著時間消失太可惜了,所以這裡將大概的思想記錄下來分享給大家。

複製轉換函式

在r124版本,有Geometry與BufferGeometry轉換的函式,可以把這幾個函式需要的部分取出來,改造一下,變成自己的工具函式,需要時就呼叫使用。

自創Geometry物件

大部分程式不會一次用到Geometry的所有欄位,所以我們可以自己建立簡單Geometry物件,裡面只需包含簡單必要的欄位就行。
當然也可以自創整個Geometry類別,但我為了保持程式簡單,只有建立簡單有必要欄位的物件,需要用到的函式都提取成工具函式。

改寫程式

有了這個假的類別,又有了假的轉換函式,就不用擔心新版Threejs棄用Geometry了。
理論上也不需修改前輩們的複雜算法,只要把Geometry類別替換成自己假的Geometry物件,輸出時再用假的工具函式轉換成BufferGeometry即可。
但是這個方式非常耗效能,所以不到必不得已,還請斟酌使用。
分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.