Как текстурировать 3д модель в Three.Js?

Столкнулся с проблемой текстурирования моделей. Если текстурировать обычные объекты то проблем нет, но если модели загруженные из вне то не получается. В чём может быть проблема? Буду благодарен любым ответам. Спасибо заранее

//если текстурировать obj модель не работает
let loader = new THREE.TextureLoader();
let texture = loader.load('texture.png');
const material = new THREE.MeshPhongMaterial({
     map: texture
});
this.objLoader.load('model.obj', (model) => {
    let modelTextured = new THREE.Mesh(model,material)
    scene.add(modelTextured);
});
//если текстурировать примитивные объекты то работает
    let loader = new THREE.TextureLoader();
    let texture = loader.load('texture.png');
    const material = new THREE.MeshPhongMaterial({
        map: texture
    });
    let geomentry = new THREE.BoxGeometry(10,10,10);
    let cube = new THREE.Mesh(geomentry,material);
    scene.add(cube);

Ответы (1 шт):

Автор решения: MiyRon

Для того что бы модель имела текстуру вам нужно воспользоваться любым 3д редактором. Я использовал Blender. В Blender я корректно развернул модель и наложил на её uv-map текстуру моей модели. После этого я экспортировал модель в формате glb.

Далее в Three.js вы загружаете вашу glb модель в ваш проект и добавляете в сцену и всё прекрасно работает

import * as THREE from 'three';
import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js';

const loader  = new GLTFLoader(),

this.loader.load( 'model.glb',  ( gltf )=> {
     scene.add( gltf.scene );
}

→ Ссылка