Загрузка текстуры из кода, а не из MTL

#javascript #three.js

#javascript #three.js

Вопрос:

Я смог загрузить OBJ-файл и связать с ним MTL, чтобы придать ему текстуру. Однако, похоже, я не могу определить, какую текстуру я хочу связать с моделью непосредственно из кода, я могу заставить текстуру отображаться в модели, только если она упоминается в файле MTL.

Я просмотрел документацию, я просмотрел примеры, и я снова и снова гуглил, но я просто понятия не имею, как применить текстуру.

Это мой текущий код для загрузки модели и файла материала

         var mtlLoader = new THREE.MTLLoader();
        mtlLoader.setPath( '/3Dproject/models/' );
        mtlLoader.load( 'tshirt.mtl', function( materials ) {

            materials.preload();

            var objLoader = new THREE.OBJLoader();
            objLoader.setMaterials( materials );
            objLoader.setPath( 'models/' );
            objLoader.load( 'tshirt.obj', function ( object ) {

                object.position.x = 0;
                object.position.y = -50;
                object.scale.x = 2;
                object.scale.y = 2;
                object.scale.z = 2;
                scene.add( object );

            }, onProgress, onError );

        });
  

Это мой файл материалов

 # MTL written from 3Dprojectmodelstshirt.obj
newmtl texture
Kd 0.48 0.48 0.48
Ns 256
d 1
illum 2
Ka 0 0 0
Ks 0.04 0.04 0.04
map_Kd texture.jpg
  

Если я загружу свою текстуру в Javascript следующим образом

         var texloader = new THREE.TextureLoader();
        var skinTexture = texloader.load('/3Dproject/models/texture.jpg', function (tex) {
            skinTexture = tex;
        });
  

Как я могу затем применить его к своей модели?

Рабочий пример на http://creativiii.com/3Dproject/old-index.html

Комментарии:

1. Вы могли бы найти свой объект в ТРЕХ. Создайте сцену и перепишите ее материал.

Ответ №1:

Обычно текстура назначается через material.map свойство.

 object.material.map = skinTexture;