Не отображаются текстуры у .obj модели. Three.js

Пытаюсь загрузить модель из MagicaVoxel. Экспортировал ее в .obj, загружаю в коде, но модель становится черной в браузере.

Вот скрин модели

введите сюда описание изображения

Вот код

import * as THREE from '../three.js-master/build/three.module.js';
import {OBJLoader2} from '../three.js-master/examples/jsm/loaders/OBJLoader2.js';
import {MTLLoader} from '../three.js-master/examples/jsm/loaders/MTLLoader.js';
import {MtlObjBridge} from '../three.js-master/examples/jsm/loaders/obj2/bridge/MtlObjBridge.js';

let canvas = document.querySelector('#webGL-output');

canvas.setAttribute('width', window.innerWidth);
canvas.setAttribute('height', window.innerHeight);


const scene = new THREE.Scene();
const renderer = new THREE.WebGLRenderer({canvas : canvas});

renderer.setClearColor(0xffffff)

const camera = new THREE.PerspectiveCamera(60, window.innerWidth / window.innerHeight, 0.1, 1000);

camera.position.z = 5;
camera.position.x = 5;
camera.position.y = 5;

camera.lookAt(scene.position);

const mtlLoader = new MTLLoader();

mtlLoader.load("../textures/castle.mtl", mtlParseResult => {
    const materials = MtlObjBridge.addMaterialsFromMtlLoader(mtlParseResult);
    const objLoader = new OBJLoader2();

    objLoader.addMaterials(materials);
    objLoader.load("../textures/castle.obj", obj => scene.add(obj));
});

animate();

function animate() {
     requestAnimationFrame(animate);
     renderer.render(scene, camera);
}

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

Автор решения: Трипольский Пётр

Это вполне логично, .obj файл это только геометрический образ. Материал на него обычно накладывается картинкой, как это сделать на ThreeJS обсуждалось тут.

// Create a material
var textureLoader = new THREE.TextureLoader();
var map = textureLoader.load('./diffuse.png');
var material = new THREE.MeshPhongMaterial({map: map});

var loader = new THREE.OBJLoader();
loader.load( './my-model.obj', function ( object ) {

  // For any meshes in the model, add our material.
  object.traverse( function ( node ) {

    if ( node.isMesh ) node.material = material;

  } );

  // Add the model to the scene.
  scene.add( object );
} );
→ Ссылка