Форум

(РЕШЕНО) Изменение цвета у общего материала через API , который назначен нескольким объектам? как

13 декабря 2016 01:52
Во первых, хочу сказать спасибо, за обновление документации и добавление кратких примеров .
https://www.blend4web.com/api_doc/module-material.html#.set_diffuse_color итд

ну и вопрос: имеем несколько объектов на сцене на которых одет один и тот же материал,
соответственно меняя цвет например в блендере у этого материала , у всех объектов он меняется, но я так понимаю чрез АПИ если меняем то указываем объект и только у этого объекта цвет измениться , верно?
если так то какой метод менее затратный поменять цвет у Н-ного к-ва объектов сразу?

спасибо.
Денис
13 декабря 2016 04:38
В итоге пока сделал через цикл, куда отправляю массив объектов на которых надо поменять материал..
не удобно это (( может есть какая то группировка которую можно задать сразу .. итд
в том же блендере материал то единый.

еще вопрос возник, а как писать не RGB цвет а HEX ?
вроде как удобнее и данных меньше

m_mat.set_diffuse_color(m_scs.get_object_by_name("objct"), "Material", [0.871, 0.033, 0.037]);
а так(не работает):
m_mat.set_diffuse_color(m_scs.get_object_by_name("objct"), "material", "#7E8EF0");
Денис
13 декабря 2016 08:51
Циклом проще всего. Как я понимаю при включении галки, что объект динамический он "отделяется" и имеет личные переменные. Для перевода из hex в rgb я находил где то на просторах инета js функцию для конвертации hex to rgb
Не стой, где попало… Попадет еще раз.
http://naviris.ru/
13 декабря 2016 11:21
В итоге пока сделал через цикл, куда отправляю массив объектов на которых надо поменять материал..
не удобно это (( может есть какая то группировка которую можно задать сразу .. итд
в том же блендере материал то единый.
Костыль то можно и сварганить, но мне кажется очень очевидным введение функции например "update_material", которая обновляет материал на всех объектах, у которых он присутствует.
13 декабря 2016 15:14
Ответ на сообщение пользователя ice99
Костыль то можно и сварганить, но мне кажется очень очевидным введение функции например "update_material", которая обновляет материал на всех объектах, у которых он присутствует.

да к стати не подумал.. про поиск объекта в сцене по материалу.. спасибо
но в моем случае пока ограничусь списком который пока не более 10 позиций , а вот если большой список то
конечно стоит делать перебор и сохранение массива списка объектов, по факту это дополнение к тому обновлению в цикле которое уже я сделал.

хочется все же еще от разработчиков услышать мнение..
Денис
13 декабря 2016 16:10
да к стати не подумал.. про поиск объекта в сцене по материалу.. спасибо
Если объектов много - можно, например хранить имя материала дополнительно в Json (сопоставлять с именем), чем упростить выбор объектов с одинаковым материалом. Цикл всё равно будет, но мне кажется не такой ресурсоёмкий.
 
Пожалуйста, зарегистрируйтесь или войдите под своей учетной записью , чтобы оставлять сообщения.