在vue中利用three.js,搭建3d智慧配電房監測系統,其中發現設計師給的模型太大了最大的一個模型有6mb之大,以至于後面模型加載的時候頁面速度變得超級的慢,是以需要将模型進行優化,将其變小;
設計師給我的模型類型是obj的,還帶有素材mtl。通過百度發現浏覽器對gltf格式的模型支援是比較友好的。是以現将ob模型轉化成gltf格式的。
首先安裝obj2gltf;該插件的作用是把obj格式轉為gltf格式。下面開始安裝,建議全局安裝,這樣下次在其他檔案夾或者目錄下都可以用指令行來實作格式轉換。
接着安裝gltf-pipeline;該插件的作用是把現有的gltf格式模型進行壓縮,跟圖檔壓縮一樣。減少大小,更快的加載。
首先對obj進行模型轉化,将其變成gltf模型;輸入指令:(參數:-i 是輸入路徑,-o 是輸出路徑,其他參數可參考插件官方文檔,根據自己的需要添加即可,輸入輸出的路徑一定要正确,不然會報找不到directory之類的錯誤);注意:在這個過程中,obj和mtl名字最好對應,而且最好放在統一目錄下面,要不然指令會報錯,說找不到xx.mtl檔案。
将檔案轉換好格式,你會得到對應的gltf檔案。
執行下面指令行,通過draco壓縮算法對gltf模型進行壓縮;(-d 就是draco算法)
因為three.js中基本上包含了所有three的資源,是以就直接引用gltf和壓縮算法的解析器;
引入draco算法檔案
chrome 加載gltf模型時控制台報錯:devtools was disconnected from the page以及rangeerror: webassembly.memory(): could not allocate memory;解決方案:将浏覽器更新到最新版本;
将obj模型轉化gltf過程中,如果報錯說沒有找到xx.mtl檔案時;解決方案:确定mtl和obj檔案是否相同,其次mtl和obj檔案放在同一錄下面。
如果需要轉化的模型太多或者需要壓縮的模型太多了,可以使用windows bat腳本批處理。建立一個txt文本,輸入下圖代碼,将字尾改成.bat将檔案放到項目根目錄檔案,輕按兩下就可以執行11條壓縮指令了。
three.js 開發之加載外部gltf模型和壓縮(一)