Материалы Three.js не применяются с использованием файлов .obj и .mtl

1

Я загрузил бесплатную 3d-модель и пытаюсь просмотреть ее с помощью three.js. Модель загружается в норме, но материалы не загружаются должным образом. Единственные, которые загружаются, - это бутылки с винами за баром, ничего другого не имеет текстуры.

Пример сайта, показывающий проблему здесь

Вот как я загружаю модель:

// load in the bar 3d model
var mtlLoader = new THREE.MTLLoader();
mtlLoader.load( 'bar1/3d-model.mtl', function ( materials ) {

    materials.preload();

    var objLoader2 = new THREE.OBJLoader2();
    objLoader2.setMaterials( materials.materials );
    objLoader2.load( 'bar1/3d-model.obj', function ( event ) {

    scene.add( event.detail.loaderRootNode );

    }, function() {
        // success
    }, function() {
        // error
    });
});
  • 0
    Ваш файл .mtl не содержит никаких ссылок на файлы текстур, я думаю, что вы, возможно, захотите взглянуть на источник: откуда вы экспортируете это и как? (если только вы не использовали «текстуру» для обозначения «процедурного определения материала с определенной спецификой» ... что намного сложнее получить похожий вид от источника к рендереру в реальном времени).
  • 0
    Ах хорошо. Я скачал его отсюда: cgtrader.com/free-3d-models/interior/office/wine-bar и использовал архивы obj и MTL. Я просто предполагал, что он получится визуализированным, как на изображении. Должен ли я сам связывать текстуры с материалами или что-то в этом роде?
Теги:
three.js
3d

1 ответ

1
Лучший ответ

Если вы посмотрите на файл MTL, используемый вашим OBJ файлом, вы заметите, что он не имеет ссылки на карты текстур. Карты текстур обычно ссылаются на строки типа:

map_Ka image.jpg
map_Kd image.jpg
map_Ks image.jpg    
map_Nd image.jpg
map_d image.jpg
map_bump image.jpg

Если ваша модель не включает их, вы можете использовать 3D-редактор (например, Blender), чтобы добавить их. Дополнительные сведения см. В разделе "Карты текстур" в формате файла OBJ.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню