Tutorials

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

Градиент, помимо ноды “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.7 в Blender 2.8

В API последней версии Blender 2.8 разработчики внесли множество изменений, поэтому практически все скрипты и аддоны, написанные для более ранних версий Blender (2.7 и ниже), перестали работать. Для того, чтобы пользоваться полюбившимися аддонами в новой версии Blender, их нужно портировать – исправить их код для корректной работы с новым API Blender.

Изменения, которые необходимо внести в код аддона, чтобы он заработал в Blender 2.80:

Использование IDE Microsoft Visual Studio Code для написания скриптов/аддонов в Blender

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

Одной из таких сред разработки является Visual Studio Code от компании Microsoft. Это бесплатная универсальная IDE, поддерживающая разработку на различных языках программирования, в том числе и на языке API Blender – Python.

Тайлинг процедурных текстур в Blender

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

В отличие от изображений, загружаемых из графических файлов, процедурный рисунок всегда создается в единственном экземпляре. Так происходит потому, что вся математика, образующая собственно процедурное изображение, завязана на исходных данных – координатах, которые начинаются от 0, распространяются до бесконечности и не повторяются. Однако с помощью все той же математики мы сможем решить и эту задачу.

Создание процедурных текстур в Blender

Все процедурные текстуры в Blender основаны на математике. Даже такие нерегулярные структуры, как Voronoi и Noise, на самом деле сгенерированы по четким математическим формулами. Внутри каждого базового нода из редактора материалов Blender зашит точный математический алгоритм, в результате работы которого и получается нужное изображение.

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