Текстура на объекте не отображается - PullRequest
2 голосов
/ 19 марта 2019

Что я хочу

Я новичок в 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 Ответ

2 голосов
/ 20 марта 2019

Вы не можете загрузить .mtl файл, используя TextureLoader, для этого вы должны использовать MTLLoader. MTLLoader должен загрузить текстуру. Затем вы должны установить материал на OBJLoader, используя функцию 'setMaterial'.

Оформить заказ на этот код -

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

                } );
...