Python

Назначение индексов точкам, созданным в bmesh

Когда для создания новой геометрии мы работаем через Blender Python API с объектом bmesh, все создаваемые вертексы получают индекс равный -1. Хотя мы можем полноценно взаимодействовать и управлять созданными вертексами, отсутствие у них номерного индекса может несколько затруднить восприятие геометрии и отладку кода.

Блокируем вынос развертки за границы области UV

В большинстве случаев острова развертки можно беспрепятственно перемещать в рабочей области UV Edit в любое место. Однако иногда бывает нежелательно выносить развертку за границы базовой области UV, например, чтобы гарантировать, что развертка не “уедет”, при запекании в атласы.

Делаем отменяемый оператор в Blender неотменяемым

Проектируя новые операторы в Blender, мы можем делать их отменяемыми и не отменяемыми, указывая значение “UNDO” в параметре bl_options оператора. Но как быть, если нам нужно исключить из очереди отмены какой-либо уже существующий, например, системный оператор? Это очень просто сделать, переопределив оператор на собственный, без указания “UNDO” в его параметрах.

Операторы с возможностью отмены (Ctrl + z) и без нее

Проектируя операторы, чаще всего мы предусматриваем возможность отмены выполненного ими действия – если после исполнения оператора пользователь нажмет комбинацию клавиш Ctrl + z, все воздействие нашего оператора на сцену должно быть отменено. Однако в некоторых случаях может понадобиться определить оператор, который будет игнорироваться при попытке отмены пользователем его действий. API в Blender предоставляет нам возможность создавать оба вида операторов, просто указывая возможность или запрет отмены в их параметрах.

Кастомные иконки в EnumProperty в Blender

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

Онлайн расширения Blender

В Blender версии 4.1 и ниже, все аддоны устанавливались локально. Чтобы установить аддон, нужно было скачать его на компьютер, открыть рабочую область Preferences, перейти на вкладку Add-ons и инсталлировались аддон нажав на кнопку Install. Начиная с версии 4.2 открылись Extensions – для установки стали доступны аддоны, размещенные онлайн.

Вынос регуляторов Max/Min сокетов в Geometry Nodes на пользовательскую панель

Для того чтобы в Blender вынести значение сокета на панель модификатора Geometry Nodes нужно просто создать линк и соединить нужный сокет на нужном ноде с пустым сокетом на ноде Group Input. После этого в панели модификатора появляется поле, в котором можно менять значение нужного сокета. Далее это поле мы можем вынести на пользовательскую панель, обратившись к нему как к динамическому свойству.

Изменение порядка сокетов в нодовых группах Geometry Nodes

Изменить порядок сокетов в нодовой группе вручную можно простым перетаскиванием – в N-панели во вкладке Group – Interface зажимаем нужный сокет и перетягиваем его мышкой на нужное место. Переместить сокет в групповом ноде на новое место при помощи Blender Python API можно, используя функцию move объекта interface.

Заголовки для нодов Reroute в Blender Geometry Nodes

А вы знаете, что для нодов Reroute в Blender Geometry Nodes можно задавать собственные текстовые заголовки? Так как ноды Reroute чаще всего используются для упрощения и улучшения читаемости нодовых деревьев в Geometry Nodes, помечать такие ноды заголовком с короткой информационной надписью может оказаться очень удобным – не нужно будет запоминать или каждый раз прокручивать дерево нод, чтобы узнать, откуда на данный Rerout идет линк.

Быстрая установка точки, в которую направлены источники освещения в сцене

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