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

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

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

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

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

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

С ростом популярности 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.

Портирование аддона для Blender 2.7 в Blender 2.8

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

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

Читать далее «Портирование аддона для Blender 2.7 в Blender 2.8»

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

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

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

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

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

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

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

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

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

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

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

Читать далее «Создание процедурных текстур в Blender»

Изучаем петли (loops)

В общем понимании «петля» или в терминологии 3D – «луп» (с английского loop – петля) обычно представляет собой последовательное выделение нескольких точек, ребер или полигонов меша.

Однако во внутренней структуре меша присутствует отдельный элемент, который тоже называется «луп» (будем придерживаться терминологии) и представляет собой условную комбинацию одного вертекса с одним ребром меша. Попробуем разобраться, для чего нужны эти «лупы».

Читать далее «Изучаем петли (loops)»

Как передать дополнительные параметры в скрипт или аддон при запуске Blender из командной строки

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

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

Рендер объекта с отражением на белом фоне

Чаще всего предметная визуализация выполняется на однородном белом фоне. Достичь этого стандартными средствами настройки сцены достаточно сложно — при увеличении освещенности объект «засвечивается», при уменьшении — фон вместо белого становится серым. И если сам объект можно просто отрендерить на прозрачном фоне и затем наложить на белый, то как быть с его отражением?

Рассмотрим способ, как можно отрендерить объект и его отражение на белом фоне.

Читать далее «Рендер объекта с отражением на белом фоне»

Отладка многофайлового аддона в Blender быстрой переустановкой

Для отладочного запуска разрабатываемого многофайлового аддона в Blender удобно использовать следующую систему. Однако описанный поход обладает одним недостатком: импортируемые в файле __init__.py модули становятся доступны только после выполнения самого файла (после того, как отработает функция register() ). Это означает, что любые обращения к импортируемым модулям до их регистрации вызовут ошибку. В большинстве случаев это не критично, однако вызовет проблемы, если в аддоне например используется наследование от класса, описанного в импортируемом модуле т.к. описание классов в модуле обрабатывается раньше инициализации аддона.

Чтобы получить больше свободы при работе с импортируемыми модулями, для отладки аддона можно использовать другой принцип — не запускать аддон непосредственно из директории разработки, а инсталлировать его в Blender и проверять работу сразу «на чистовую». Однако ручная переустановка аддона требует выполнения определенного набора действий, что излишне затрудняет подобную отладку. Решить данную проблему можно проводя переустановку аддона для тестов в автоматическом режиме.

Читать далее «Отладка многофайлового аддона в Blender быстрой переустановкой»

Работа с UV через API Blender

Доступ к активной развертке:

Доступ к развертке по имени:

Читать далее «Работа с UV через API Blender»

Вращение текстуры нодами

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

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

При помощи связки других нодов можно реализовать нужный функционал, лишенный недостатка нода Mapping. Рассмотрим, как построить связку нодов для вращения текстуры вокруг оси Z объекта на случайную величину.

Читать далее «Вращение текстуры нодами»

Еще один способ сделать резьбу в Blender

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

Читать далее «Еще один способ сделать резьбу в Blender»

Создание плавающей панели в аддонах Blender

Для размещения элементов пользовательского интерфейса при разработке аддонов Blender кроме обычных панелей (N/T/Properties) и их подпанелей можно использовать и так называемые плавающие панели — появляющиеся на экране в произвольном месте при нажатии пользователем определенного сочетания клавиш или при совершении им какого-либо действия. Простейшим примером таких панелей является панель, появляющаяся при нажатии клавиши f6 сразу после добавления в сцену какого-либо объекта (shift+a).

API Blender предоставляет разработчикам возможность создавать подобные панели для своих аддонов. Рассмотрим процесс создания плавающей панели на примере всплывающего окна с сообщением типа «Messagebox».

Читать далее «Создание плавающей панели в аддонах Blender»

Создание труб и проводов в Blender с помощью кривых

Моделировать тонкие протяженные объекты вроде труб и проводов при создании сцен приходится достаточно часто — в интерьерных сценах, научных, технических или фантастических. Одним из самых простых и удобных способов создания подобных объектов — использовать кривые (curves).

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

Читать далее «Создание труб и проводов в Blender с помощью кривых»

Установка Blender на сервер Debian (Linux)

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

Для примера рассмотрим установку Blender на серверную операционную систему Debian.

Читать далее «Установка Blender на сервер Debian (Linux)»

Рендер тени на прозрачном фоне

Часто бывает необходимо получить рендер какого-либо объекта с отбрасываемой им тенью на прозрачном фоне. Такая задача возникает если требуется реалистично встроить 3D-объект в фотографию или же при использовании полученного изображения в качестве спрайта в компьютерной игре.

В Blender нет специального шейдера, так называемого «Shadow catcher», как в 3D Studio Max, который, оставаясь прозрачным, отображал бы тень. Однако добиться желаемого результата все же возможно.

Рассмотрим, как можно получить рендер тени на прозрачном фоне средствами Blender:

Читать далее «Рендер тени на прозрачном фоне»

Борьба со ступенчатостью при сохранении градиента в JPG

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

Однако, если подобное изображение требуется сохранить в формате JPG, градиент из плавного часто становится ступенчатым, что сильно портит впечатление от рисунка. Этот неприятный эффект называют «banding». Можно ли как-то его побороть?

Читать далее «Борьба со ступенчатостью при сохранении градиента в JPG»

Копирование отдельного модификатора на несколько объектов

Для сложных объектов иногда бывает необходимо добавить определенный модификатор на каждую составляющую его часть. Самый простой способ — последовательно перебрать все части объекта и добавить нужный модификатор на каждую. Но если объект состоит из множества частей, это займет уйму времени.

Рассмотрим способы, которыми можно значительно облегчить эту работу:

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

Вы все еще начинаете с дефолтного куба?

На секунду задумайтесь — в каком количестве реальных сцен вы действительно что-то создали, использовав этот самый дефолтный куб?

Удаление дефолтного куба

Немного, правда? Но все равно, каждый раз создавая чистую сцену, вы нажимаете: x — delete. Снова и снова. Давайте уже наденем белые перчатки фокусника и раз и навсегда избавимся от этого бесмыссленого действия:

Читать далее «Вы все еще начинаете с дефолтного куба?»

Совмещение цветного рендера с «гипсовым»

Для эффектной демонстрации своих работ хорошим приемом является показ рядом с цветным рендером еще и «гипсового» (Clay render) — подчеркивающего объем, освещение, топологию моделей, а так же, в случае фотореалистичного рендера, хорошо показывающего «тридешность» сцены. Еще более эффектным приемом может стать совмещение этих двух рендеров в одном изображении.

Совмещенный рендер

Читать далее «Совмещение цветного рендера с «гипсовым»»