gltf、glb模型经过3D软件压缩导出后,在threejs用gltfloader加载,必须借助DRACOLoader解压,否则会报错。
首先,用到的库:
GLTFLoader.js three.js\examples\jsm\loaders\GLTFLoader.js DRACOLoader.js three.js\examples\jsm\loaders\DRACOLoader.js DRACOLoader解码库 three.js\examples\js\libs\draco\gltf
具体代码:
import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader' import { DRACOLoader } from 'three/examples/jsm/loaders/DRACOLoader' import {LoadingManager} from 'three' const loader = new GLTFLoader(new LoadingManager()); //实时显示进度 DRACOLoader.setDecoderPath( 'three.js/examples/js/libs/draco/gltf/' );//设置解压库文件路径 const dracoLoader = new DRACOLoader(); // dracoLoader.setDecoderConfig({type: 'js'}) //使用js方式解压 dracoLoader.preload() //初始化_initDecoder 解码器 loader.setDRACOLoader(dracoLoader) //gltfloader使用dracoLoader let url = "models/yalj.glb" loader.load(url, ({scene}) => { //处理加载过来的模型 } , xhr => { //处理加载的进度 }, error => { //加载错误时触发 })
错误处理
出现这样的错误,是没有正确配置解码器
dracoLoader.setDecoderConfig({type: 'js'}) //使用js方式解压 dracoLoader.preload() //初始化_initDecoder 解码器