#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 это вызвало у меня много проблем. Я попытался обновить металличность только для одной сетки, но она изменилась для целого объекта. В вашем случае я считаю, что сетка, которую вы пытаетесь обновить, не нацелена должным образом, поэтому вы обновляете родительскую сетку.