ThreeJS中加载压缩的glb文件

2025-04-09阅读(130)评论(0)牵着狗狗看MM

苏州实时公交查询

加载正常的glb文件

import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'

const gltfLoader = new GLTFLoader()
gltfLoader.load(
    '/glb/1.glb',//这里的1.gbl文件路径为 public/glb/1.glb
    (gltf) => {
        scene.add(gltf.scene)
    },
    undefined,
    (error) => {
        console.error('Error loading GLTF:', error)
    },
)

如果按照上面方式加载压缩过的glb文件时,会报错:No DRACOLoader instance provided,这里就需要用到RACOLoader来加载压缩的glb文件

一:拷贝 draco 文件到项目 public 中(以Vite为例)

将 Three.js的中 examples/js/libs/draco 拷贝到项目的public目录中

node_modules\three\examples\jsm\libs\draco https://github.com/mrdoob/three.js/tree/dev/examples/jsm/libs/draco

二:实例化DRACOLoader,并传递给 GLTFLoader

改写后的代码如下

import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'
import { DRACOLoader } from 'three/addons/loaders/DRACOLoader.js'

const dracoLoader = new DRACOLoader()
dracoLoader.setDecoderPath('/threejs/draco/')//对应路径 为 public/threejs/draco/

const gltfLoader = new GLTFLoader()
gltfLoader.setDRACOLoader(dracoLoader)
gltfLoader.load(
    '/glb/1.glb', //这里的1.gbl文件路径为 public/glb/1.glb
    (gltf) => {
        scene.add(gltf.scene)
        animate()
    },
    undefined,
    (error) => {
        console.error('Error loading GLTF:', error)
    },
)

这样既可加载成功

关于 Draco 的介绍,可以查看 Three.js 对于 Draco 的介绍描述:https://github.com/mrdoob/three.js/tree/dev/examples/js/libs/draco

赞(0)
转载请注明来源:Web前端(W3Cways.com) - Web前端学习之路 » ThreeJS中加载压缩的glb文件
分享到: 更多 (0)