THREE.JS下3D模型OBJ轉二進制壓縮大小及加載

最近在研究用three.js創(chuàng)建3D場景,有個地形模型,obj格式的,原始大小6.9mb。加載的時候偏慢,遂考慮壓縮模型的方式,找了一圈,發(fā)現(xiàn)threejs已經(jīng)提供了一個工具,使用python執(zhí)行就能把obj文件轉成二進制文件。我使用過后得到的文件大小降為3.3mb,太爽了(再加一句,轉成json文件是6.7mb)。

完整的命令方式在這里
https://github.com/mrdoob/three.js/blob/master/utils/converters/obj/convert_obj_three.py

具體使用方法可以百度,網(wǎng)上有很多帖子,就不再贅述了。
加載的時候使用THREE.BinaryLoader方法來加載模型,接受兩個參數(shù)(geometry,materials),分別是模型和材質。materials還是個數(shù)組,用于接收多種材質的。代碼如下:

var loader = new THREE.BinaryLoader();
loader.load(url, function( geometry,materials ) {
      ........
}

轉換沒遇到問題,在貼圖的時候遇到問題,因為我的模型還有個貼圖,當我加載完成把模型放入場景后發(fā)現(xiàn)貼圖被拉伸了,變成了這個樣子


Paste_Image.png

后來咨詢了做模型的同事,說是uv軸重復了多遍的結果。讓我想起了css里background屬性的repeat。(太感謝這位同事了,一句話點醒了我)。于是我就到獲取到的material里尋找這個貼圖的相關屬性,發(fā)現(xiàn)了wrapS和wrapT這兩個,把他們設置為1。于是就天下太平了。

Paste_Image.png

希望對你有所幫助。
祝爸爸媽媽身體健康~

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容