对象上的纹理不会显示

问题描述 投票:2回答:1

What I want

我是Three.js的新手,我正在尝试将纹理应用于加载的对象。

The problem

我已经尝试了很多东西,但仍不确定如何做到这一点。我没有得到任何错误,对象加载但没有纹理。

My code

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

有帮助吗?

javascript three.js texture-mapping
1个回答
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 );

                } );
© www.soinside.com 2019 - 2024. All rights reserved.