Python

Многострочный текст в панелях интерфейса Blender

К сожалению, интерфейс Blender не поддерживает перенос строк и многострочный вывод в текстовых полях. Слишком длинные для показа на панели текстовые строки обрезаются. Однако, текст в несколько строк все же можно вывести на панель интерфейса, используя несколько текстовых элементов вместо одного.

Для начала создадим простейшую панель в N-панели окне вьюпорта 3D Viewport и разместим на ней текстовый элемент label с нужным текстом.

Как получить количество треугольников для меша

Чтобы получить количество вертексов, ребер и полигонов меша, можно просто взять их количество из нужного блока данных: vertices, edges и polygons. Однако в структуре меша нет отдельного блока данных под треугольники.

Для того, чтобы получить количество треугольников в меше, нужно выполнить следующий код:

Вертикальный и горизонтальный углы FOV камеры

Камера в Blender всегда определяется двумя углами поля видимости FOV – вертикальным и горизонтальным.

Один из них всегда задается пользователем через параметр камеры – Feild of View (или комбинации параметров Focal Length и Sensor Width).

Особенности использования матрицы масштаба

Для того, чтобы манипулировать трансформациями объектов при помощи матриц в Blender включен модуль “mathutils” в котором определен класс “Matrix”. С помощью этого класса можно удобно создавать нужные матрицы трансформаций – перемещения, поворота и масштаба.

Для создания матрицы масштабирования используется следующая команда:

Локализация аддонов Blender – через API

Классический способ локализации аддона Blender (перевода аддона на разные языки) удобен тем, что для него требуется всего лишь одно обращение к Blender python API – получение текущей используемой локали. Он хорош своей независимостью, однако Blender не был бы Blender-ом, если бы не предоставил пользователям возможность локализации аддонов через свой API.

Принцип создания мультиязычных аддонов с использованием Blender python API по сути мало отличается от классического. Нам точно так же необходимо создать словарь со всеми вариантами перевода текстовых строк, используемых в нашем аддоне, и в дальнейшем пользоваться им для перевода.

Как получить данные меша с учетом модификаторов

При обращении к геометрии меша – его точкам, ребрам и полигонам, Blender оперирует исходными данными без учета наложенных на объект модификаторов.

Например количество точек для активного объекта, которое можно получить с помощью команды:

будет возвращено без учета наложенного на объект модификатора Subdivision, который подразделяет геометрию меша, увеличивая ее значения.

Как сделать кнопку перехода по url-адресу в интерфейсе Blender

Для того, чтобы выполнить переход по url-адресу из Blender – открыть нужный адрес в браузере, можно воспользоваться системным оператором wm.url_open.

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

Как получить данные сцены через контекст

Если нужно одновременно иметь доступ и к текущему контексту, например для работы с операторами, и к данным сцены, например для работы с мешами, мы обращаемся к двум предопределенным в Blender Python API структурам: “bpy.context” и “bpy.data”.

Например мы можем передать указатели на эти две структуры в функцию:

Однако в структуре контекста “bpy.context” уже есть ссылка с именем “blend_data”, которая указывает на данные сцены. С помощью этого указателя можно обращаться к данным сцены, не передавая его отдельно в явном виде.