【问题标题】:ThreejS: Uncaught TypeError: e.OBJMTLLoader is not a constructor三 jS: Uncaught TypeError: e.OBJ MTLLoader is not a constructor
【发布时间】:2021-07-13 13:08:13
【问题描述】:

我正在尝试使用 .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);
    }
    

目前,我不确定是什么导致了这个错误的发生。

【问题讨论】:

    标签: html compiler-errors three.js loader


    【解决方案1】:

    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 );
    
        } );
    
    } );
    

    【讨论】:

      猜你喜欢
      • 2018-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-24
      • 1970-01-01
      • 2021-02-24
      • 2021-12-23
      • 2021-08-31
      相关资源
      最近更新 更多