我之前在这里问过这个问题:未捕获的类型错误:THREE.MTLLoader 不是构造函数 https://stackoverflow.com/questions/46989337/uncaught-typeerror-three-mtlloader-is-not-a-constructor
我通过更改 Three-mtl-loader 文件来使其工作。但由于我稍后要将我的工作上传到 github,所以我必须在不更改这些文件的情况下创建一个解决方案。
因此,我尝试使用经典示例中使用的加载器加载 obj 和 mtl 文件:https://github.com/mrdoob/ Three.js/blob/master/examples/webgl_loader_obj_mtl.html https://github.com/mrdoob/three.js/blob/master/examples/webgl_loader_obj_mtl.html
但我仍然收到错误“未捕获的类型错误:THREE.MTLLoader 不是构造函数”
我有点不确定如何在这些加载器中加载,但现在我的代码如下所示:
import * as THREE from 'three'
import {OBJLoader} from 'three'
import {MTLLoader} from 'three'
var mtlLoader = new THREE.MTLLoader();
mtlLoader.load("http://blabla.obj.mtl", function(materials) {
materials.preload();
var objLoader = new THREE.OBJLoader();
objLoader.setMaterials(materials);
objLoader.load("http://blabla.obj", function(object) {
object.scale.x = scale;
object.scale.y = scale;
object.scale.z = scale;
scene.add(object)
});
});
在 src 文件夹中的 Three.js 文件中,我插入了:
export { OBJLoader } from './loaders/OBJLoader.js'
export { MTLLoader} from './loaders/MTLLoader.js'
EDIT
我使用 NPM 安装,错误消失了。不幸的是,出现了其他问题 - 但我在另一个问题中问过这些问题:三-mtl-loader 错误:THREE.MeshPhongMaterial:.shading 已被删除 -> 对象不可见 https://stackoverflow.com/questions/47753533/three-mtl-loader-error-three-meshphongmaterial-shading-has-been-removed-ob