Нормально о нормалях

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

Автор Михаил Солуянов.

Краткое содержание:

  • 0:08 Проверьте себя: попробуйте найти ошибку
  • 0:34 Что такое Нормаль?
  • 1:12 В чем отличие карт нормалей DirectX и OpenGL?
  • 2:05 Как использовать DirectX карты в Blender?
  • 2:26 Инверсия карты нормалей на вывернутых полигонах
  • 2:53 Бонус

Выравнивание элементов пользовательского интерфейса по колонкам

Часто элементы интерфейса, размещаемые в пользовательских панелях, не соответствуют друг другу по размерам, в результате чего общая компоновка панели выглядит не красиво. В качестве наглядного примера создадим пользовательскую панель и разместим на ней кнопку оператора и текстовое поле ввода.

Выровнять размеры кнопки и поля ввода здесь напрашивается само собой.

Читать далее «Выравнивание элементов пользовательского интерфейса по колонкам»

Eeve шейдер органики – вирус под электронным микроскопом

Два урока по созданию шейдера вируса под электронным микроскопом для рендер-движка Blender EEVEE.

nCoV-2019 Electron Microscope shader
 

SARS-CoV-2 2019-nCoV
Автор: Виталий Сокол

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Читать далее «Создание кастомного свойства»

Рисование в окне вьюпорта

API Blender предоставляет возможность рисовать в окне вьюпорта (3D Viewport) при помощи модуля gpu.

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

Читать далее «Рисование в окне вьюпорта»

Как привязать к нажатию кнопки вызов функции, а не оператора

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

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

Читать далее «Как привязать к нажатию кнопки вызов функции, а не оператора»

Передача параметров в оператор

При создании собственных операторов иногда бывает нужно передавать в них определенные значения – вызывать операторы с параметрами.

Передаваемый параметр должен быть определен, как свойство оператора.

Читать далее «Передача параметров в оператор»

Решаем проблему несоответствия размера сечения пути с применённым к нему профилем самому профилю

Автор: Андрей М.

Рубрика “Много букв о простом”

Нужна мне рама. Нет, две рамы: одна побольше другая поменьше, но сделанные из одного профиля. Нарисовал прямоугольник, выставил нужные размеры, продублировал, выставил другие размеры. Нарисовал отдельно профиль. Для сечения обоим прямоугольникам применил этот профиль. …почему получились разные рамы? И ни одна не соответствует размеру профиля? А, масштаб забыл применить. Применил. Размеры сечения поменялись, стали другими, но опять не равными профилю. Как сделать равными – читай ниже!

Решаем проблему несоответствия размера сечения пути с применённым к нему профилем самому профилю.

Такая проблема возникает, когда путь для профилирования строится любым образом, но потом масштабируется до нужного размера. При этом не важно приведён масштаб у него к 1 или нет. Если мы применим к нему нужный нам профиль, то он будет отличается по размеру от заданного… Почему? Сейчас увидим.

Читать далее «Решаем проблему несоответствия размера сечения пути с применённым к нему профилем самому профилю»

Создание точки на кривой Безье

Кривая Безье строится по четырем точкам: две основные точки (p0, p1) и две опорные (p0_hr, p1_hl).

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

Читать далее «Создание точки на кривой Безье»

Симуляция жидкости в Blender 2.80

Автор Pavel_Blend

Про что эта статья?

В этой статье я расскажу про симулятор жидкости в Blender 2.80. Этот симулятор был впервые добавлен в блендер ещё в конце 2005 года, в версию 2.40. С тех пор он изменялся не значительно (изменения были в основном в начале, после внедрения в блендер). Код симулятора был написан сторонним разработчиком по имени Nils Thuerey. Он написал библиотеку для симуляции жидкостей и назвал её El’Beem. Движок является воксельным и основан на методе решёточных уравнений Больцмана. Лучше всего подходит для создания воды, но имеет возможность создавать вязкие жидкости (мёд, шоколад…), которые реализованы не совсем хорошо. Скоро в блендер внедрят новый симулятор Mantaflow (кстати, Nils Thuerey принимает участие в его разработке).

Читать далее «Симуляция жидкости в Blender 2.80»

Shadow catcher в EEVEE

В рендер-движке Cycles есть удобная возможность отрендерить объект с тенью на прозрачном фоне с помощью материала с функцией рендера только падающих на него теней “shadow catcher”. В рендер-движке EEVEE такой функции у материалов нет. Однако в EEVEE можно собрать свой “shadow catcher” на основе нодов.

Готовый материал “EEVEE Shadow Catcher” можно скачать в библиотеке BIS.

Читать далее «Shadow catcher в EEVEE»

Таймлапс моделирования софы “Canasta”

Таймлапс полигонального моделирования софы “Canasta”.

В процессе моделирования использованы паттерны для модификатора “Tissue” из набора TISSUE: PATCH.

Автор: 1D_Inc.

Освещение текстурой из лампы

В Blender Cycles при использовании стандартных источников освещения типа Light можно освещать объекты, используя любую текстуру, а не только отдельный цвет.

Добавим в сцену любой объект, например сферу:

shift+a – Mesh – UVSphere

и назначим ей простой диффузный материал.

Читать далее «Освещение текстурой из лампы»

Как превратить одиночный элемент BIS в паттерн

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

Для примера загрузим из библиотеки круговой элемент и разместим его по центру объекта.

Читать далее «Как превратить одиночный элемент BIS в паттерн»

Процедурные градиенты

Градиент, помимо ноды “Gradient Texture”, можно получить с помощью достаточно простых формул. Рассмотрим математику на примере сферического градиента.

  1. Равномерный градиент

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

Читать далее «Процедурные градиенты»

Пикселизирование текстуры

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

Возьмем для примера простую процедурную текстуру градиента от красного цвета через зеленый к синему.

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

Читать далее «Пикселизирование текстуры»

Как защитить свой аддон от распространения через агрегаторы

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

Читать далее «Как защитить свой аддон от распространения через агрегаторы»

Как управлять видимостью объектов во вьюпорте и при рендере

Самый простой способ заставить нужный объект появляться и исчезать – назначить ему ключи анимации. Для этого нужно навести курсор на значок глаза (видимость во вьюпорте) или фотоаппарата (видимость при рендере) в окне “Outliner”, нажать клавишу “i” и далее в Graph Editor управлять созданным ключом так же, как с обычными ключами анимации.

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

“hide_viewport” property cannot be animated

или

“hide_render” property cannot be animated

Однако с помощью Blender Python API видимостью таких объектов можно управлять.

Читать далее «Как управлять видимостью объектов во вьюпорте и при рендере»

Создание свойств для аддона

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

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

Создадим простейший аддон и добавим ему глобальный параметр, поместив его в панель свойств аддона:

Читать далее «Создание свойств для аддона»

Делаем каплю воды и правильный шейдер

Урок по созданию “сплеша” – красивых капель и водяных брызг и настройке процедурного шейдера воды.

Автор: Виталий Сокол.

Blender 2.79, рендер Cycles.