加载正常的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
Web前端(W3Cways.com) - Web前端学习之路