Печать текста на экран 3D вьюпорта

При помощи модуля gpu в Blender Python API на рабочую область 3D вьюпорта можно выводить не только изображения, но и печатать произвольный текст. Печать текста осуществляется при помощи модуля blf – обертки над OpenGl.

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

Функция load() модуля blf возвращает число – идентификатор загруженного шрифта.

Если нет необходимости использовать внешние шрифты, значение font_id можно установить равным 0, тогда будет использоваться текущий системный шрифт Blender.

Идентификатор шрифта передается первым параметром во все функции blf, отвечающие за вывод текста на экран.

Определим функцию, которая будет выводить текст на экран 3D вьюпорта:

В параметре font_id мы передаем в эту функцию определенный ранее идентификатор шрифта.

При помощи функции position() мы задаем расположение выводимого текста на экране вьюпорта. В параметрах передаются координаты X, Y и Z. Отсчет ведется от левого нижнего угла 3D вьюпорта.

Функция size() устанавливает размер шрифта.

Цвет шрифта задается при помощи функции color(). В параметрах передаются значения в формате RGBA от 0.0 до 1.0.

И, наконец, функция draw() выводит текст, переданный в ее параметре, на экран.

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

В первом параметре мы передаем указатель на нашу функцию вывода текста.

Второй параметр – список аргументов для нашей функции. Мы передаем в нее идентификатор шрифта font_id. При необходимости, можно передавать больше параметров, указывая их через запятую.

Третий параметр – идентификатор региона окна.

И четвертый – тип вывода на экран. Значение “POST_PIXEL” указывает на рисование в координатной плоскости рабочей области.

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

Полный код:

 

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

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