Отслеживание переключения между слоями видимости ViewLayer

В Blender Python API не предусмотрено отдельных обработчиков для отслеживания переключений слоев видимости ViewLayer. Однако если нужно выполнять какие-то действия при их переключении, их можно отследить при помощи шины передачи сообщений.

Для начала нужно определить функцию, которая будет выполняться при переключении слоев видимости. Например, пусть она устанавливает разные положения рамки рендера Render Region для разных слоёв видимости.

Откроем в Blender текстовый редактор Text Editor и определим функцию следующим образом:

Первая команда функции включает режим рендера с использованием рамки.

Далее, для первого слоя видимости с именем ViewLayer будет устанавливаться рамка рендера в левой нижней части экрана – от левого нижнего угла до центра.

А для второго слоя ViewLayer (и для всех остальных) рамка рендера будет устанавливаться в правой верхней части экрана – от центра до правого верхнего угла.

Теперь подпишем эту функцию в качестве обработчика события при переключении слове видимости ViewLayer используя шину передачи сообщений msgbus.

В первом параметре key передается указатель на отслеживаемый объект, в нашем случае это тип окна bpy.types.Window и свойство view_layer, изменение которого нужно отследить.

Второй параметр owner – владелец события, для общего случая чаще всего используется “bpy”.

Третий параметр args используется для передачи в функцию-обработчик дополнительных значений. В нашем случае передавать что-то в функцию не требуется.

И последний параметр notify – указатель на функцию, которая будет выполняться при изменении свойства, указанного в первом параметре. Здесь указываем нашу, ранее объявленную функцию для изменения размеров рамки рендера.

Выполним скрипт, нажав на кнопку Run Script в окне Text Editor.

Теперь при переключении слоев видимости каждый раз меняется и расположение рамки рендера.

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

0 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии