Рисование изображения при помощи модуля gpu в пространстве сцены и вьюпорта

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

Рассмотрим простейший пример вывода изображения на экран при помощи модуля gpu.

Для начала выведем изображение в координатном пространстве сцены.

Определим текстуру для вывода изображения:

Создадим шейдер для отрисовки этой текстуры:

и батч для отрисовки шейдера:

Здесь важно отметить, какие координаты указывать в параметре “pos”. В данном случае мы хотим вывести изображение в пространстве сцены, поэтому указываем координаты такими, как будто мы добавляем в сцену простую плоскость (Plane) и располагаем ее углы в точках (0,0), (2,0), (2,2), (0,2) в плоскости сцены XY.

Определим функцию для отрисовки шейдера.

И добавим ее в стек вызова для вывода шейдера в рабочую область 3D вьюпорта:

Обратите внимание на значение четвертого параметра – “POST_VIEW”. Именно он определяет, что изображение выводится в пространстве координат сцены.

Если же нам нужно вывести изображение в пространстве координат вьюпорта,  необходимо изменить значение этого параметра на “POST_PIXEL”.

Также нужно изменить значения координат в параметре “pos” при определении батча на значения в системе координат вьюпорта:

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

В остальном код остается без изменений.

Для того чтобы удалить нарисованное нами изображение с окна вьюпорта, нам нужно удалить указатель на нашу функцию draw из стека вызовов отрисовки 3D вьюпорта.

 

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

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