Three——glb模型压缩

文章介绍了在Vue3项目中,利用three.js加载3D模型时遇到的问题,即模型过大影响加载速度。为解决此问题,文章提出了使用gltf-pipeline和DRACOLoader进行模型压缩的方法,通过命令行工具gltf-pipeline进行压缩,并在Vue3组件中详细解释了如何导入和使用压缩后的模型,包括设置解码路径和解码配置。此外,还提供了Vue2和Vue3引入本地模型的示例路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Three——glb模型压缩

web开发基于Vue3对three.js加载3d模型过程中,往往会出现模型太大导致前端加载时间过长,降低用户使用的体验,我们这里选取gltf-pipeline的DRACOLoader方式来解压模型。

  1. 首先需要全局安装
// npm安装
npm install -g gltf-pipeline

// yarn安装
yarn global add gltf-pipeline

常用的压缩命令

gltf-pipeline -i 13131312(4).glb -o 13131312zip.glb -d

请添加图片描述

我们可以看到,使用Draco压缩网络模型会比之前小了将近一半,这个压缩程度是会根据纹理贴图,面等一系列材质有关

在Vue3中使用

// 导入glb模型
import { GLTFLoader } from "three/addons/loaders/GLTFLoader.js";
// 压缩模型包
import { DRACOLoader } from "three/examples/jsm/loaders/DRACOLoader";
  const loader = new GLTFLoader(); //实时显示进度
  const dracoLoader = new DRACOLoader(); // 压缩glb文件
  dracoLoader.setDecoderPath("../../public/gltf/"); //设置解压库文件路径
  dracoLoader.setDecoderConfig({ type: "js" }); //使用js方式解压
  dracoLoader.preload(); //初始化_initDecoder 解码器
  loader.setDRACOLoader(dracoLoader);
  loader.load(props.path, (gltf)=> {
      gltf.scene.name = "3DSouthernWind";
      gltf.scene.traverse(function (child) {
        if (child.isMesh) {
          // 渲染色泽
          child.material.emissive = child.material.color;
          //  获取纹理贴图,可以设置为一个新的纹理贴图
          child.material.emissiveMap = child.material.map;
        }
      });
      // gltf.scene.position.y = 8;
      // 模型添加到场景
      scene.add(gltf.scene);
      render();
    },
  );

请添加图片描述

dracoLoader.setDecoderPath是用来设置解压库的文件路径,这个需要根据实际位置去获取路径中的js
请添加图片描述

props.path这个位置替换成压缩后的图片路径即可
我这里是放在src的assets文件夹下
Vue3引入本地模型路径

const path = new URL(`../assets/SouthernWind.glb`, import.meta.url).href;

Vue2引入本地模型路径

const path = require(../assets/SouthernWind.glb)

注意:如果打包后出现模型找不到的情况,请将public的模型路径放到src中尝试获取

obj+mtl合并成gltf模型

npm install --save obj2gltf

转换gltf模型

obj2gltf -i model.obj -o model.gltf
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Southern Wind

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值