ThreejS:未捕获类型错误:e.OBJMTLLoader不是构造函数



我正试图使用.obj和.mtl文件(使用三个.js(将立方体网格替换为汽车网格

但每次我遇到这个错误:

Uncaught TypeError: e.OBJMTLLoader is not a constructor

我确保包括了图书馆((,没有打字错误。

这就是我加载网格模型的方式:

var loader = new THREE.OBJMTLLoader();
loader.load('./toycar.obj', './toycar.mtl',
function (object) {
toycar = object;
toycar.rotateX(-12); //toycar.rotateZ(-10.99);
toycar.rotateY(4.718);
scene.add(toycar);
});

这就是我用它在y轴上移动模型的方法:

if (toycar != undefined){
toycar.position.y = disp * 0.07; // z for rightLeft, y for upDown
var relativeCameraOffset = new THREE.Vector3(5, 0, 0); // change camera offset
var cameraOffset = relativeCameraOffset.applyMatrix4(toycar.matrixWorld);
camera.position.x = cameraOffset.x;
camera.position.y = cameraOffset.y;
camera.position.z = cameraOffset.z;
camera.lookAt(toycar.position);
}

在这一点上,我不确定是什么原因导致了这个错误的发生。

THREE.OBJMTLLoader在存储库中不存在。只有OBJLoaderMTLLoader。只有当您也想装载材料时,才需要后一个。

我建议你研究一下webgl_loader_obj_mtl,看看两者是如何使用的。典型的代码看起来是这样的:

new MTLLoader().load( 'materials.mtl', function ( materials ) {
materials.preload();
new OBJLoader()
.setMaterials( materials )
.load( 'object.obj', function ( object ) {
scene.add( object );
} );
} );

最新更新