Особенность обращения к объектам в depsgraph update

При использовании обработчика depsgraph_update выполнение действий с объектами, переданными в обработчик, не дает полного результата. Например, изменяя какие-нибудь свойства объекта обращаясь к нему через object.id, они могут быть изменены не полностью.

Определим обработчик depsgraph_update_post, внутри которого изменим какое-либо свойство объекта, например – цвет отображения объекта во вьюпорте.

После регистрации обработчика и любого изменения текущего меша (для того чтобы обработчик сработал).

В данном примере для изменения цвета объекта мы обращались к нему через object.id:

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

Для того, чтобы избежать такого поведения, к объекту лучше обращаться по имени через список bpy.data.objects.

Тот же самый обработчик при обращении к объекту в bpy.data.objects меняет цвет объекта полностью и во вьюпорте и в параметре:


*.blend файл с примером кода для моих подписчиков на Patreon.

5 1 голос
Article Rating
Подписаться
Уведомить о
guest

0 Комментарий
Новые
Старые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии