ThreeJs DRACO压缩并加载gltf模型的爬坑记录

32 篇文章 0 订阅
8 篇文章 1 订阅
采用DRACO压缩并加载gltf模型的用法,以VUE开发为例

首先,在官方文件中找到对模型进行压缩 所需要的文件 位置大概在项目的examples/js/libs/draco/gltf 下,如下图所示:

在这里插入图片描述
我们可以复制到自己项目的public目录下,

下面来安装gltf-pipeline;该插件的作用是把现有的gltf格式模型进行压缩,跟图片压缩一样。缩小体积,更快的加载。

npm i -g gltf-pipeline

用法:在命令行或终端中输入以下命令,格式为:gltf-pipeline -i 原始文件路径 -o 压缩后的文件路径 -d,如下图所示:

gltf-pipeline -i public/static/model/copyone.gltf -o public/static/model/copy.gltf -d

在这里插入图片描述

如上图所示,压缩效果还是很好的,注意模型压缩后不能再使用GLTFLoader加载模型,必须使用Draco解码,再使用DRACOLoader配合GLTFLoader加载器 加载压缩后的模型,下面开始写相关代码,我们以VUE项目为例:

以上相关内容完成后我们需要引入DRACOLoader加载器,线上地址:http://www.yanhuangxueyuan.com/versions/threejsR92/examples/js/loaders/DRACOLoader.js

使用线上地址我们可以在项目的public下的index.html中引入

<script src="http://www.yanhuangxueyuan.com/versions/threejsR92/examples/js/loaders/DRACOLoader.js"></script>

或者在项目的main.js中引入

import './static/js/DRACOLoader'

加载压缩后模型的相关代码,如下:

init() {
	// 实例化 gltf 加载器
	var loader = new THREE.GLTFLoader();
	var textureCube = new THREE.CubeTextureLoader()
	// 设置Draco解码库 解压路径,该路径就是解压文件所在的位置
    THREE.DRACOLoader.setDecoderPath('static/libs/wasm/');
    // 设置gltfloader解压loader
    loader.setDRACOLoader(new THREE.DRACOLoader());
    // 加载模型
    loader.load('static/model/copy.gltf', (obj) => {
    var mesh = obj.scene
    mesh.traverse(function(gltf) { // 为模型添加环境贴图反光效果
    	if (gltf.isMesh) {
            gltf.material.envMap = textureCube
       }
    })
    mesh.scale.set(0.06, 0.06, 0.06) // 模型大小缩放
    //  场景中添加模型文件
    this.scene.add(mesh)
  })
}

亲测有效,希望可以帮助到大家!!!

评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值