Как сделать пиксельную текстуру в blender

Обновлено: 04.07.2024

В этом видио, я посторался осветить тему текстурирования в Blender. Надеюсь получилось нормально \(* 0 * )/ текстура из .

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

Текстурирование в Blender 2.8 - крайне важный процесс, представляющий процесс наложения текстур в шейдинге.

Это урок по созданию объемных, реалистичных моделей с использованием PBR текстур Я использовал 5 текстур: Albedo, .

Создаем слои материалов из нескольких шейдеров, комбинируя один общий материал, который удобно регулировать и .

Привет. Что мы будем делать в этом уроке: 1) Создадим комнату и предметы интерьера (диван, подушки, тумба и т.д) 2) С .

Хотите узнать больше о процессе UV-развёртки в версии Blender 2.8 (и выше), который так необходим при .

Hey folks here is the "official" part TWO of the shoe tutorial series. In this video we take the model created in the first part and .

Текстуры - подготовленные вручную или процедурно сгенерированные изображения, накладываемые на поверхность моделей с целью их детализации. Для соотнесения точек 3D поверхности и пикселей плоского изображения, как правило, используются текстурные развертки. По этой причине текстуры иногда называют картами.

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

Типы текстур¶

Опция выбора типа текстуры Type расположена во вкладке Textures . Движком поддерживаются текстуры следующих типов:

Image or Movie , изображение или фильм

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

Может использоваться в следующих случаях:

карта бликов (specular map) , может также содержаться в альфа-канале диффузной текстуры

карта высот (height map), может содержаться только в альфа-канале карты нормалей, используется для реализации рельефной поверхности (parallax mapping)

используется для реализации одной из методик освещения от окружающей среды

применена на кубе в стартовой сцене Blender’a. Также используется для рендеринга сцены в текстуру , а также для рендеринга canvas-текстуры .

Общие настройки¶

Размер растров для текстур-изображений (длина и ширина изображения в пикселах) должен быть числом 2 N , т.е. 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096 пикселов. Использование текстур других размеров (т.н. NPOT) поддерживается, но не рекомендуется. Для корректной работы компрессии текстур размер должен составлять не менее 4 пикселов. Как правило, используются изображения квадратной формы (например, 512 x 512 px), однако могут использоваться и прямоугольные (например, 4 x 128 px). Использование изображений размером более 2048 пикселов не рекомендуется.

Image Mapping > Extension

Режим интерпретации текстурных координат (в WebGL - Wrap Mode). Доступен для текстур типа Image or Movie . В случае значения Repeat движок устанавливает для текстуры режим REPEAT . При этом целочисленная часть текстурных координат игнорируется, используется только дробная часть. Во всех остальных случаях (например, Extend ) движок устанавливает CLAMP_TO_EDGE . При этом происходит ограничение текстурных координат отрезком [0, 1]. Значение по умолчанию Repeat .

Тип текстурных координат. Поддерживаются UV (использовать развертку), Normal (использовать направление на камеру, только для диффузных текстур, применяется для создания материалов в стиле material capture, matcap) и Generated (исходные недеформированные координаты объекта). Значение по умолчанию Generated .

Масштабирование развертки по соответствующим осям. Значения по умолчанию 1.0.

Export Options > Do Not Export

Не экспортировать текстуру.

Export Options > Disable Compression

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

Export Options > Shore Distance Map

Export Options > Anisotropic Filtering

Фактор анизотропной фильтрации для индивидуальной текстуры. Имеет приоритет перед аналогичной настройкой для сцены. Значение по умолчанию DEFAULT (т.е. использовать настройки сцены).

Текстура пены. Используется материалом для рендеринга воды.

Для карт нормалей текстурная компрессия не применяется.

Диффузная текстура (diffuse map)¶

Диффузная текстура применяется для указания распределения цвета рассеянного света (модель Ламберта).

Активация¶

Выставить опцию Diffuse > Color на панели Textures > Influence .

Дополнительные настройки¶

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

Тип взаимодействия с цветом материала ( Material > Diffuse > Color ), или с вертексным цветом, если включена опция Vertex Color Paint . Поддерживаются Mix (смешивается с цветом), Multiply (умножается на цвет). Значение по умолчанию Mix .

Карта бликов (specular map)¶

Карта бликов применяется для указания распределения цвета отраженного света (модель Фонга).

Активация¶

Выставить опцию Specular > Color на панели Textures > Influence .

Дополнительные настройки¶

Степень влияния текстуры на цвет отраженного света. Значение по умолчанию 1.0.

Тип взаимодействия с цветом отраженного света материала ( Material > Specular > Color ). Поддерживается только Mix (смешивается с цветом). Значение по умолчанию Mix .

Карта бликов может быть упакована в альфа-канал диффузной текстуры в целях оптимизации. В этом случае для текстуры необходимо одновременно выставить опции Diffuse > Color и Specular > Color . Цветовой диапазон ограничен оттенками серого цвета.

Карта нормалей (normal map)¶

Карта нормалей применяется для указания распределения нормалей (перпендикуляров) к поверхности с целью увеличения уровня детализации ее рельефа. Информация о нормалях должна храниться в текстурном пространстве координат. Карты нормалей в объектном пространстве не поддерживаются.

Активация¶

Выставить параметр Image > Color Space в значение Non-Color .

Выставить опцию Geometry > Normal на панели Textures > Influence .

Дополнительные настройки¶

Степень участия карты в расчетах нормалей. Значение по умолчанию 1.0.

Карта высот (height map). Parallax mapping¶

Карта высот содержит информацию о распределении относительных высот рельефа. Более высокий уровень поверхности обозначается более светлым цветом. Карта высот в сочетании с картой нормалей требуются в качестве входящих данных для реализации рельефной поверхности (parallax mapping). Карта высот должна содержатся в альфа-канале карты нормалей.

_images/textures_height_map.jpg

Активация¶

Для карты нормалей дополнительно к опции Geometry > Normal активировать панель Parallax .

Дополнительные настройки¶

Фактор влияния эффекта рельефной поверхности. Значение по умолчанию 0.03.

Parallax > Parallax Steps

Количество итераций в расчетах рельефной поверхности. Большее значение приводит к лучшему качеству и к большим затратам вычислительных ресурсов. Значение по умолчанию 10.

Parallax > Parallax LOD distance

Расстояние на котором виден эффект параллакса.

_images/textures_parallax.jpg

Карта смешивания (stencil map)¶

Специальная текстура (цветная или оттенков серого), содержащая информацию о распределении других текстур по поверхности.

Активация¶

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

В случае обычных материалов карта смешивания должна располагаться в текстурном слоте между двумя смешиваемыми диффузными текстурами. Для текстуры смешивания необходимо одновременно выставить опции RGB to Intensity и Stencil на панели Textures > Influence .

Дополнительные настройки¶

В случае обычных материалов для одной из смешиваемых диффузных текстур поддерживается тип текстурных координат Normal (“matcap”).

Ограничения¶

В случае обычных материалов движком интерпретируется только красный канал текстуры смешивания. Карта бликов или карта нормалей при их наличии смешиванию не подвергаются. Настройка масштабирования Mapping > Size извлекается из первой текстуры и применяется ко всем остальным текстурам.

Пример¶

Материал яблока имеет текстуры: карту нормалей, диффузную текстуру с картой бликов в альфа-канале, карту смешивания, диффузную карту “matcap”, карту зеркального отражения.

_images/textures_stencil_apple.jpg

_images/textures_stencil_apple_separate_textures.jpg

Видео-текстуры¶

В качестве текстуры может применяться видеозапись. Для этого должен быть выбран тип текстуры Image or Movie .

Видеотекстура поддерживает только воспроизведение видеоряда. Звуковое сопровождение следует накладывать, используя объект типа SPEAKER .

Поддерживаемые форматы (контейнеры):¶

webm, кодек VP8 (Chrome, Firefox)

m4v, кодек H.264 (Chrome, Safari, IE)

ogv, кодек Theora (Chrome, Firefox)

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

Файлы в форматах mp4 и ogg имеют различное расширение для звуковой и видео-информации: расширения .mp4 и .ogg используются для звуков, .m4v и .ogv - для видео.

Конвертация ресурсов в различные форматы описывается в соответствующем разделе .

Настройка текстуры¶

При использовании видео-текстуры можно настроить следующие опции на панели Texture > Image :

Длина воспроизводимого фрагмента видеозаписи в кадрах.

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

Начинать воспроизводить видеозапись заново каждый раз после ее завершения.

Image > Allow NLA

Воспроизводить текстуру в рамках NLA-сценария. Необходимо также включить NLA глобально на сцене, активировав панель Scene > NLA . По умолчанию включено.

Для текстур, управляемых через NLA будет актуальна следующая опция:

Задержка воспроизведения видеозаписи в кадрах при использовании нелинейной анимации.

Для текстур, управляемых не через NLA будет актуальна следующая опция:

Image > Auto Refresh

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

_images/video_tex.jpg

Существует возможность ускоренного воспроизведения видеозаписей. Для этого необходимо задать значение свойства Scene > Dimensions > Frame rate отличным от значения fps (кадров в секунду) для видеозаписи. При этом скорость воспроизведения видеозаписи рассчитывается как отношение Frame rate сцены к fps видеозаписи.

_images/fps.jpg

При использовании видео-текстур совместно с NLA кадры видео могут воспроизводиться не в точном соответствии со сделанными в Blender’е настройками. Возможно отставание видео в пределах 5-6 кадров, связанное с небольшой задержкой при старте/паузе тега .

Особенности работы на мобильных устройствах¶

Присутствуют следующие особенности реализации на мобильных устройствах:

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

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

не гарантируется стабильная работа при выставлении опции Offset в ненулевое значение.

не на всех устройствах поддерживается ускоренное воспроизведение видео.

на iPad и iPhone отсутствует возможность управления громкостью звука видеофайла, поэтому следует убрать аудио дорожку из видео перед добавлением файла в Blender.

Карта окружения (environment map)¶

Применяется в качестве карты зеркального отражения (mirror map) , в качестве статической текстуры неба (skydome) , а также для реализации одной из методик освещения от окружающей среды .

В движке представлена кубической текстурой. Растры для карт окружения должны содержать 6 спроецированных изображений окружающей среды, упакованных в 2 ряда по 3 (формат, используемый в Blender’e). Размер растров для каждого из изображений должен подчиняться правилу 2 N (512, 1024 и т.п.).

Во избежание проявления швов рекомендуется использовать формат без потери качества (PNG).

_images/environment_map.jpg

Создание карты окружения¶

Blender позволяет запекать сцену в карту окружения. Для этого:

Создать сцену для запекания.

Добавить пустой объект в предполагаемом центре обзора ( Add > Empty ).

Перейти во вкладку World , затем перейти во вкладку Textures , создать новую текстуру, выбрать тип Environment Map .

На панели Environment Map выбрать источник Static , выбрать созданный пустой объект в поле Viewport Object , установить разрешение 2 N (512, 1024 и т.п.).

Выполнить рендеринг сцены F12 (требуется наличие камеры).

Сохранить карту окружения в файл.

_images/environment_map_baking_ui.jpg

Карта зеркального отражения (mirror map)¶

Применяется для визуализации отражающей способности поверхности. Представляет собой карту окружения .

Активация¶

Выбрать тип текстуры ( Type ) Environment Map . Выставить опцию Shading > Mirror на панели Textures > Influence .

Дополнительные настройки¶

Степень влияния карты зеркального отражения. Значение по умолчанию 1.0.

Текстура неба (skydome)¶

Применяется для визуализации бесконечно удаленного окружения (например, небесного свода). Представляет собой карту окружения .

Также может применяться для реализации одной из методик освещения от окружающей среды .

Активация¶

Создать текстуру мира (world texture) с типом “Environment Map”. Выбрать опцию Export Options > Sky Texture Usage > SKYDOME , предварительно выставив опцию World > Render Sky на вкладке World .

Поведение текстуры приближено к поведению рендера в Blender Internal. Поэтому, при стандартных настройках текстуры, она может не отображаться. Для отображения текстуры активируйте флаг в панели текстуры Influence > Horizon и установите значение Horizon равное 1.0.

Для имитации освещения от окружающей среды можно воспользоваться опцией Export Options > Sky Texture Usage > ENVIRONMENT_LIGHTING . При этом необходимо также выбрать соответствующую опцию в настройках мира: Environment Lighting > Sky Texture .

Для создания обоих эффектов от одной текстуры необходимо выставить опцию Export Options > Sky Texture Usage > BOTH .

_images/skydome.jpg

Дополнительные настройки¶

Движком поддерживаются параметры вкладки Influence для настройки отображения неба. Смешивание текстуры с цветом производится в зависимости от параметров World > Horizon Color (цвет горизонта) и World > Zenith Color (цвет зенита), а также флагов Paper Sky , Blend Sky и Real Sky . Поддерживаются все типы смешивания ( Mix , Add , Multiply и т.д.).

_images/skydome.jpg

Параметры вкладки Influence влияют только на отображение неба. Они не влияют на отображение освещения от окружающей среды .

Особые типы текстур¶

Для использования особых типов текстур необходимо выставить тип текстуры None на панели Textures .

_images/type_none.jpg

В меню Textures > Export Options имеется возможность задать основные свойства для данного типа текстуры:

Export Options > Source Type

Выбор особого типа текстуры: Scene - для рендеринга 3D сцены в текстуру, Canvas - использование HTML-элемента и None - отсутствие текстуры.

Export Options > Source ID

Имя сцены, которая будет отображена в текстуре, в случае 3D сцены либо идентификатор HTML-элемента в случае Canvas-текстуры.

Export Options > Source Size

Export Options > Extension

Export Options > Enable Mipmapping

Включение MIP-текстурирования для Canvas-текстуры. По умолчанию включено.

_images/canvas_tex.jpg

Рендеринг в текстуру¶

Изображение 3D сцены может быть использовано в качестве текстуры на объекте другой (“главной”) сцены. Этот приём известен как “рендеринг в текстуру ”. Для того, чтобы использовать его, выполните следующие действия:

Создаёте новую сцену, которая будет использоваться для рендеринга в текстуру.

Для удобства переименуйте сцену.

Создайте для сцены группу настроек World .

Добавьте в сцену необходимые объекты.

Добавьте в сцену камеру и настройте её.

Затем переключитесь на главную сцену.

Выберите нужный вам объект и создайте для него UV-развёртку.

Создайте текстуру, которая будет использоваться для рендеринга.

Для этой текстуры выставьте тип None .

На панели Mapping , установите параметр Coordinates в значение UV .

В поле Export Options > Source Type указать тип Scene .

В поле Export Options > Source ID указать название сцены-источника.

В поле Export Options > Source Size указать размер текстуры в пикселях.

Также поддерживается циклическое отображение сцен друг в друга.

Примечание

В проекте должна присутствовать хотя бы одна сцена, которую не отображают другие.

Canvas-текстуры¶

В качестве текстуры используется HTML-элемент . Его редактирование осуществляется при помощи API.

В главной сцене для текстуры целевого объекта выставить тип None , в поле Export Options > Source Type указать тип Canvas . В поле Export Options > Source Size указать размер текстуры в пикселях.

Для работы с этими текстурами используется модуль textures . Пример работы с ним описан ниже.

Для получения контекста используется функция get_canvas_ctx() , куда передается объект и имя текстуры, задаваемое в Blender. После преобразований с контекстом вызывается функция update_canvas_ctx() , которая осуществляет визуализацию изменений на указанном объекте, в указанной текстуре.

Примечание

Если в Blender на разных объектах была назначена одна и та же текстура типа Canvas, то и после загрузки в движке будет одна общая текстура, а не несколько уникальных. Результат работы с ней будет заметен на всех использующих её объектах. Это может быть полезно с точки зрения оптимизации. Если же требуется противоположное поведение, то следует назначить разные текстуры ещё в Blender, либо использовать глубокое копирование уже непосредственно в приложении.

Это первая статья из цикла по работе в Blender. Вот ссылки на все три, выбирай ту, которая тебе нужна:

Эта статья поможет новичкам, которые хотят научиться работать с материалами в Blender. Ты узнаешь, как правильно настраивать материалы и какие дополнительные расширения использовать, чтобы облегчить работу. Внимательное изучение статьи займет около 10 минут. Если возникнут вопросы — пиши в чат-бот (кнопка справа внизу). Там на связи живой менеджер :) Он поможет разобраться. Ну что, давай начнем!


Дополнительные программы для удобства

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

Substance Painter — программа для текстурирования 3D-моделей и создания текстурных карт для них. Отсюда будем импортировать текстуры.

Node Wrangler — аддон с инструментами, который улучшает и ускоряет воркфлоу основанный на нодах (node-based workflow).

Активируем его так:

Во вкладке Edit заходим в настройки Preferences и ставим галочку в Addons. Для удобства ищем аддон через поисковую строку.

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

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

Для примера сгенерируем текстуру с изображением простого круга.

shift+a – Mesh – Plane

на которую будем проецировать создаваемую текстуру. Назначим ей дефолтный материал. В редакторе материалов Node Editor, кроме уже имеющихся нодов, добавим ноды Texture Coordinates и Mapping:

shift+a – Input – Texture Coordinate

shift+a – Vector – Mapping

Соединим выход Object нода Texture Coordinate со входом Vector нода Mapping. Таким образом мы назначаем плоскости систему координат Object, что означает, что центр координат накладываемой текстуры будет совпадать с центом Origin плоскости, а координатные оси текстуры будут направлены так же, как оси плоскости.


Теперь обратим внимание на то, какими исходными данными мы располагаем. Это значения трех координаты X, Y и Z в трехмерном пространстве, которые мы получаем с выхода Vector нода Mapping.

Все процедурные текстуры – трехмерные и описываются не двумя координатами, а тремя. Поэтому в сущности нам нужно построить не круг на плоскости, а сферу в трехмерном пространстве. Сечение сферы по оси Z даст нужный нам круг.

Настало время взять в руки справочник по математике и поискать формулу, связывающую имеющиеся у нас данные о координатах X, Y и Z с необходимой нам формой сферы. Формула легко находится:

Теперь нужно воссоздать эту формулу при помощи нодов в редакторе Node Editor.

Добавим нод, разбивающий Vector на отдельные координаты X, Y, Z:

shift+a – Converter – Separate XYZ

и соединим его с нодом Mapping. Теперь мы имеем доступ к координатам, нужным для построения формулы.

Последовательно по действиям воссоздадим формулу при помощи нодов.

Добавим нод Math:

shift+a – Converter – Math

и переключим его в режим вычитания Subtract. В этом режиме из верхнего входящего значения нода вычитается нижнее значение. На верхний вход подадим координату X, нижний вход сделаем равным нулю (X0 = 0) чтобы круг строился из начала координат. Таким образом мы задали часть формулы X – X0.


Добавим еще один нод Math и переключим его в режим Power – возведение в степень. На верхний вход подадим значение Value нода Subtract, нижнее установим равным 2. Таким образом мы возводим X – X0 в квадрат.


Сделаем такие же группы для координат Y и Z.


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


Подключим выход последнего нода на вход Color нода Diffuse и в окне 3D_View перейдем в режим Rendered для просмотра результата.


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

Между нодом Duffuse и последним нодом Add вставим еще один нод Math и переключим его в режим Less Than. На верхний вход подадим значение нода Add, а второй установим равный 1. Теперь результат вычислений меньший единицы будет равен 1, а все, что больше – равно 0. Таким образом мы получаем точный процедурный круг с радиусом 1.


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

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


Управлять расположением и размером круга также можно меняя значения в ноде Mapping.

Читайте также: