#javascript #three.js #3d #.obj #mtl-file
#javascript #three.js #3D #.obj #mtl-файл
Вопрос:
У меня есть набор моделей в формате * .obj, которые поставляются без файлов материалов (файлы * .mtl). Некоторые онлайн-сервисы отображают эти модели правильно: https://3dviewer.net /, https://sketchfab.com /. Но — в соответствии с three.js документация — в моем проекте я получаю только неправильное отображение модели:
Разработчик https://3dviewer.net / сказал, что идея этого сервиса заключается в том, что если файл *.mtl не найден, то скрипт устанавливает цвет/материал по умолчанию — окрашивает все изделие в один цвет.
Как окрасить объект из файла * .obj в выбранный цвет с помощью three.js инструменты?
Для тестирования я прикрепляю файл модели, который поставляется без файла материала: тестовый образец * .obj-файла.
Ответ №1:
Кажется, объект экспортируется неправильно. При использовании macOS preview, BabylonJS или OBJLoader
three.js , грани, по-видимому, имеют неправильный порядок намотки. Вы должны получить желаемый результат, выполнив следующие действия при обратном onLoad()
вызове:
const material = new THREE.MeshPhongMaterial( { color: 0xff0000, side: THREE.BackSide } );
obj.traverse( function( child ) {
if ( child.isMesh ) child.material = material;
} );
Комментарии:
1. Да, именно это и привело к устранению проблемы. Теперь модель выглядит естественно.