对象上的纹理不显示

时间:2019-03-19 19:26:07

标签: javascript three.js texture-mapping

我想要的

对于 Three.js 来说,我还很陌生,我正在尝试将纹理应用于已加载的对象。

问题

我尝试了很多事情,但仍然不确定如何执行此操作。我没有任何错误,对象已加载但没有纹理

我的代码

var loader6 = new THREE.OBJLoader();

// load a resource
loader6.load(
    // resource URL
    'models/Chair.obj',

    // called when resource is loaded
    function ( object ) {
        object.scale.x = 20;
        object.scale.y = 30;
        object.scale.z = 20;
        object.rotation.y = -0.3;
        object.position.z = -500;
        object.position.x = 30;

        object.traverse( function ( child ) {
            if ( child instanceof THREE.Mesh ) {
                console.log(texture);
                child.material.map =  texture;
            }
        }); 

        var texture = new THREE.TextureLoader().load('models/Chair.mtl');

        object6 = object;
        scene.add( object6 );
    },

有帮助吗?

1 个答案:

答案 0 :(得分:2)

您无法使用.mtl加载TextureLoader文件,为此必须使用MTLLoaderMTLLoader应该加载纹理。然后,您必须使用“ setMaterial”功能将材质设置为OBJLoader

签出此代码-

                new THREE.MTLLoader()
                .setPath( 'path to the material folder' )
                .load( 'material_file.mtl', function ( materials ) {

                    materials.preload();

                    new THREE.OBJLoader()
                        .setMaterials( materials )
                        .setPath( 'path to the obj folder' )
                        .load( 'objModel.obj', function ( object ) {

                            object.position.y = - 95;
                            scene.add( object );

                        }, onProgress, onError );

                } );