MTLLoader 報(bào) Handlers.get() has been removed. Use LoadingManager.getHandler() instead 錯(cuò)誤處理

使用Three.js加載外部模型(OBJ,JSON...等格式的模型文件)。

上代碼:

yarn add three //three.js 核心模塊

yarn add three-obj-mtl-loader //材質(zhì)及模型加載器

使用:

import * as THREE from 'three' // THREE 基礎(chǔ)庫

import { OBJLoader, MTLLoader } from 'three-obj-mtl-loader' //THREE導(dǎo)入外部模型庫

vue代碼:

let manager = new THREE.LoadingManager()

let mtlLoader = new MTLLoader(manager)

mtlLoader.setTexturePath('../../static/3d/')

mtlLoader.setPath('../../static/3d/')

mtlLoader.setCrossOrigin(true)

mtlLoader.load('SpaceFighter03.mtl', function(materials) {

????materials.preload()


????let objLoader = new OBJLoader(manager)

????objLoader.setPath('../../static/3d/')

????objLoader.materials = materials

????objLoader.load('SpaceFighter03.obj', function(object) {

????????object.traverse((child) => {

????????????if(child instanceof THREE.Mesh) {

? ? ? ? ? ? ? // 網(wǎng)孔對象

? ? ? ? ? ? ? child.castShadow = true

? ? ? ? ? ? ? child.receiveShadow = true

????????????}

????????})

????????object.position.set(0, 0, 0)

????????object.scale.set(0.1, 0.1, 0.1)

? ? ? ? object.matrixWorldNeedsUpdate = true

????????object.castShadow = true

????????object.receiveShadow = true

????????_that.mesh = object

????????_that.scene.add(_that.mesh)

????????_that.initLight() // 加入光源

????????_that.animate() // 加入動(dòng)畫

????})

})

這時(shí)如果運(yùn)行代碼,會報(bào)THREE.Loader: Handlers.get() has been removed. Use LoadingManager.getHandler() instead.的錯(cuò)

需要在node_module > three-obj-mtl-loader > index.js中找到第543行并注釋掉。在 545行重新定義loader

// var loader = THREE.Loader.Handlers.get( url );

var loader = manager.getHandler(url);

保存后,即可解決該問題

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容