Python

Как получить промежуточную матрицу трансформации из имеющейся

При повороте или перемещении объекта с помощью матриц трансформации, в ряде случаев нам нужно иметь возможность выделить из целого поворота/перемещения его часть. Например, поворачивая объект на 180 градусов, нам нужно повернуть его  не сразу, а в несколько приемов, каждый раз поворачивая его, допустим на 30 градусов. Помочь с этим нам может линейная интерполяция матриц.

Сравнение векторов

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

Строим окружность по трем точкам в Blender

Из курса математики мы знаем, что через любые три точки в пространстве можно провести только одну окружность. Пусть у нас есть три точки в сцене Blender, заданные координатами V0 (x0, y0, z0), V1 (x1, y1, z1) и V2 (x2, y2, z2). Давайте разберемся, как мы можем построить окружность, которая проходит через эти три точки.

Получаем матрицу поворота из одного вектора в другой

Выравнивание плоскости одно объекта по плоскости другого объекта – частая задача в 3D моделировании. Проще всего выровнять плоскости ориентируясь на векторы их нормалей – нужно повернуть исходную плоскость так, чтобы вектор ее нормали совпадал с вектором нормали плоскости по которой производится выравнивание. Следовательно, задачу поворота одной плоскости в другую можно свести к задаче поворота вектора нормали первой плоскости до вектора нормали второй плоскости.

Скрываем все входы-выходы на нодах в Blender при помощи Python API

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

Соответствие полигонов и треугольников при триангуляции меша в Blender

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

Создание входов и выходов для нода Capture Attribute в Blender Geometry Nodes

Начиная с версии Blender 4.2 нод Capture Attribute функционально изменился. Если раньше у этого нода всегда был только один вход Value и только один выход Attribute, кроме стандартного входа-выхода геометрии, предназначенные для записи атрибутов, то начиная с версии 4.2 количество входов-выходов для записи атрибутов сделано динамическим.

Выделяем ребра на границах меша в Blender

Часто бывает нужно выделить все граничные ребра меша – ребра, которые находятся на внешнем периметре меша, или расположены вокруг незакрытых полигонами областей меша. Такая операция может быть выполнена пользователем из пункта меню Select – Select Loops – Select Boundary Loop.

Привязка пользовательского оператора к инструменту

Мы можем привязывать к кнопкам на панели инструментов (T-Панель) не только системные операторы, но и пользовательские, созданные нами. Принцип подключения в Blender Python API – одинаковый, как для системных, так и для пользовательских операторов.

Создаем кастомное окно в Blender при помощи PySide

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