Как вынести динамически заданное свойство объекта на пользовательскую панель

В Blender API рекомендуется задавать дополнительные свойства для объектов через классы, предопределенные в bpy.props. Например для добавления целочисленного свойства используется класс bpy.props.IntProperty. Такие свойства удобны, хорошо работают и легко выносятся на панели пользовательского интерфейса.

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

Такое динамическое свойство добавляется к объекту очень просто – например, добавим целочисленное свойство с именем “dynamic_prop1” текущему активному объекту и присвоим ему значение 35.

Теперь мы можем обращаться к этому свойству объекта в коде скрипта:

Однако, если мы попытаемся вынести его на пользовательскую панель привычным образом,

Blender выдаст ошибку:

RnaUiIremR: property not found: Object.dynamic_prop1

Для того, чтобы вывести такое свойство на пользовательскую панель, нужно немного изменить формат записи имени свойства в параметре “property” функции “prop”. Имя динамического свойства нужно записать в квадратных скобках и взять в кавычки:

В этом случае динамическое свойство будет корректно отрисовано на панели, и его можно будет менять через пользовательский интерфейс.


*.blend файл с примером выноса динамического свойства объекта на пользовательскую панель

0 0 голоса
Article Rating
Подписаться
Уведомить о
guest
0 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии