Перерисовка экрана

Не все действия, производимые через Blender Python API, вызывают немедленную перерисовку экрана Blender. Поэтому довольно часто приходится принудительно вызывать обновление экрана для того, чтобы пользователь сразу видел все происходящие изменения.

Для примера нарисуем на экране 3D вьюпорта круг, используя возможности модуля gpu.

Если мы выполним этот код из текстового редактора Blender, нажав на кнопку со стрелкой, поначалу мы не увидим на экране вьюпорта никаких изменений. Для того чтобы увидеть нарисованный круг, нужно перевести курсор в рабочую область 3D вьюпорта и выполнить какое-нибудь действие, например изменить масштаб, покрутив колесико мышки. В этот момент экран вьюпорта обновляется и мы видим все изменения сразу.

Чтобы избавить пользователя от необходимости вручную обновлять экран, можно вызвать его принудительную перерисовку, выполнив следующий код:

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

Чтобы обновить только рабочую область 3D вьюпорта, можно ограничить вызов типом рабочей области:

Этот код заставит перерисоваться только рабочие области 3D вьюпорта.

Перерисовку экрана можно выполнить также при помощи оператора redraw_timer().

Хотя эта возможность предоставлена разработчиками для замера скорости перерисовки экрана, она в процессе работы перерисовывает весь экран, что нам и требуется.

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

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