ThreeJS | Загрузка данных OBJ объединяет сетки

#javascript #typescript #three.js #3d #wavefront

Вопрос:

в моем приложении ThreeJS я загружаю .Файл OBJ с моего локального сервера. Теперь я хочу, например, придать каждой подсети (подкомпоненту) другой цвет.

Выполняя следующее, ThreeJS всегда раскрашивает более одной сетки:

 var counter = 0;
object.traverse(function (child) {

    if (child instanceof THREE.Mesh) {
        //Also tested with if(counter == 300) or if (child.name == '625')...
        if(child.id == 635){
            var randomColor = '#'   (Math.random().toString(16) '00000').slice(2,8)
            child.material.color.set(randomColor);
        }
        counter  ;
    }
});
 

В результате получается:

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

Однако в выбранном вами средстве просмотра 3D-моделей (я тестировал FreeCAD, Blender, Autodesk и Creo) каждый компонент выглядит единым, как и должно быть…:

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

Как это происходит? Или, может быть, есть опция экспорта, которую я не видел? Полный код: https://www.toptal.com/developers/hastebin/fosugibuni.php (Не очень зрелищно)…

Комментарии:

1. Не могли бы вы добавить больше информации о вашей модели? Дерева структуры должно быть достаточно. У меня был подобный случай раньше, и я обновлял материал в three.js это вызвало у меня много проблем. Я попытался обновить металличность только для одной сетки, но она изменилась для целого объекта. В вашем случае я считаю, что сетка, которую вы пытаетесь обновить, не нацелена должным образом, поэтому вы обновляете родительскую сетку.