gltf-pipeline壓縮gltf/glb模型的貼圖
gltf-pipeline是一個(gè)gltf/glb模型的nodejs類庫,使用此類庫能夠?qū)ltf模型做進(jìn)一步的處理,處理完成的gltf/glb模型,一般是將貼圖文件包含到模型內(nèi)容中,有時(shí)模型的顯示并不需要太精細(xì),將模型中的貼圖進(jìn)行壓縮,能夠減小模型的整體大小,加快模型的瀏覽速度。
1、將模型中的貼圖分離出來,gltf-pipeline實(shí)現(xiàn)的具體方式是:
//gltf-pipeline的nodejs引用const gltfPipeline = require('gltf-pipeline');//使用processGltf進(jìn)行模型的再處理
const processGltf = gltfPipeline.processGltf;//設(shè)置貼圖分離屬性const options = {
? ? ? ? ? ? separateTextures: true
? ? ? ? };
? ?? ? ?//gltfmodel將模型進(jìn)行分離處理,separateResources包含貼圖文件
? ? ? ? const results = await processGltf(gltfmodel, options)?
? ? ? ? const separateResources = results.separateResources;
?? ? ? ?//將貼圖文件都保存在本地的路徑中
? ? ? ? ?for (const relativePath in separateResources) {
? ? ? ? ? ? if (separateResources.hasOwnProperty(relativePath)) {
? ? ? ? ? ? ? ? const resource = separateResources[relativePath];
? ? ? ? ? ? ? ? fsExtra.writeFileSync('data/' + relativePath, resource);
?? ? ? ? ??}
?? ? ? ??}
2、分離出來的圖片,再進(jìn)行壓縮處理,這里推薦使用nodejs的jimp庫,對(duì)于png圖片,使用改變尺寸大小,或不存在透明信息的圖片,轉(zhuǎn)換成jpg圖片,jpg圖片能夠進(jìn)一步的按照質(zhì)量進(jìn)行壓縮;3、圖片處理完成后,使用gltf-pipeline對(duì)模型文件轉(zhuǎn)換成gltf/glb再處理,合并成一個(gè)文件:
//使用gltftoglb進(jìn)行轉(zhuǎn)換
const gltfToGlb = gltfPipeline.gltfToGlb;
引用內(nèi)容:
https://www.npmjs.com/package/gltf-pipeline
https://www.npmjs.com/package/jimp?