Python

Глобальная замена материалов в сцене для рендер-движка EEVEE

Часто бывает нужно получить рендер всей сцены с одним материалом. Например для “глиняных” рендеров (clay render) или рендеров сетки (wireframe render). Если для рендер-движка Cycles в настройках View Layer Properties – Override предусмотрена возможность глобально заменить все материалы на один, то для рендер-движка EEVEE такой возможности нет.

Быстрое переопределение материалов для рендер-движка EEVEE можно сделать с помощью небольшого скрипта, как это показано в следующем видео:

Автор скрипта и видео Виталий Сокол

Особенности задания параметров оператора

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

Например, нам нужно вызвать оператор “transform_apply” – применение трансформаций к объекту, указав применить только масштаб.

Если мы вызовем оператор следующим образом:

К объекту все равно будут применены все трансформации (масштаб, вращение и положение).

Рендер из консоли только на определенных GPU-картах

Иногда для эффективного распределения нагрузки на “железо” бывает нужно запустить рендер из Blender только на определенных видеокартах их нескольких имеющихся.

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

Как определить направление кривой Безье

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

Индексы точек кривой Безье всегда идут по возрастанию в направлении кривой.

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

 

Обновление модулей для автокомплита fake-bpy-modules для Blender Python API

Обновление модулей автокомплита Blender Python API от Nutti – добавлена ветка для Blender 2.81a.

Последний релиз от 2020.01.11.

GitHub автора: https://github.com/nutti/fake-bpy-module

Файлы отдельно (без установки через pip) https://github.com/Korchy/blender_autocomplete

Назначение вертексам дополнительных свойств

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

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

Как разделить и объединить окна в Blender через python API

Для манипуляций с размерами и положением интерфейсных окон в Blender предусмотрен ряд операторов.

Чтобы разделить текущее (с текущим context) окно на два в заданном соотношении, нужно выполнить оператор:

Где:

  • direction указывает на направление разбиения – по горизонтали ‘HORIZONTAL’ или по вертикали ‘VERTICAL’
  • factor – процентное соотношение разделенный окон по выбранному направлению

Как сохранить данные меша в текст

Иногда бывает необходимо сохранить данные для создания меша (массивы его вертексов и индексов полигонов) в текст, например, для дальнейшего использования в скрипте или аддоне.

Можно экспортировать меш в один из открытых форматов, например в *.obj, но если нужны только данные по вертексам и полигонам, можно использовать следующий несложный скрипт:

Создание кастомного свойства

API Blender предоставляет для использования набор простых типов свойств, описанных в bpy.props (IntProperty,  BoolProperty и т.д.). Но базовых типов не всегда хватает, иногда нужны более сложные. API Blender позволяет группировать простые свойства, создавая таким образом более сложные.

Рассмотрим создание такого свойства на примере матрицы 3х3.

Как узнать текущую версию Blender через Python API

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

или