Three.js — Как установить собственный цвет для модели *.obj, если она поставляется без файла *.mtl?

У меня есть набор моделей в формате *.obj, которые поставляются без файлов материалов (файлы *.mtl). Некоторые онлайн-сервисы отображают эти модели корректно: https://3dviewer.net/ , https://sketchfab.com/. Но, согласно документации three.js, в моем проекте я получаю только неправильное отображение модели:

вместо:

Разработчик https://3dviewer.net/ рассказал, что идея на этом сервисе в том, что если *.mtl файл не найден, то скрипт устанавливает цвет/материал по умолчанию - окрашивает все изделие в один цвет.

Как раскрасить объект из файла *.obj в выбранный цвет с помощью инструментов three.js?

Для тестирования прилагаю файл модели, которая идет без файла материала: тестовый образец *.obj файл.

🤔 А знаете ли вы, что...
JavaScript позволяет создавать динамические и интерактивные веб-приложения.


2
392
1

Ответ:

Решено

Кажется, OBJ не экспортируется правильно. При использовании предварительного просмотра macOS, BabylonJS или OBJLoader of three.js кажется, что лица имеют неправильный порядок намотки. Вы должны получить желаемый результат, выполнив следующие действия в обратном вызове onLoad():

const material = new THREE.MeshPhongMaterial( { color: 0xff0000, side: THREE.BackSide } );

obj.traverse( function( child ) {

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

} );