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

Добавил пользователь Евгений Кузнецов
Обновлено: 04.10.2024

Текстуры - подготовленные вручную или процедурно сгенерированные изображения, накладываемые на поверхность моделей с целью их детализации. Для соотнесения точек 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, либо использовать глубокое копирование уже непосредственно в приложении.

Здравствуйте, в этом уроке постараюсь объяснить как создавать керамическую плитку в 3d max. способом моделирования.

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

Открываем 3d max и создаем плоскость Plain, буду создавать ее не привязываясь к каким либо размерам, но при построении реального объекта нужно ориентироваться на размер пола..или например размер стены.

К примеру создаем плоскость Plain размером 3000х3000 мм.


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

К примеру наша плитка будет 300х300 мм. Создаем прямоугольник размером 300х300, обязательно ставим галочку возле пункта autogid – что бы наша плитка разместилась на одном уровне с плоскостью.


После чего переключаемся на вид top, подвигам плитку к краю нашей плоскости, и начинаем увеличивать кол-во сегментов плоскости, пока они максимально не подгоняется к раз меру плитки.

После чего мы получим плоскость разбитую на ровные части. Конечно можно высчитать кол-во граней, но иногда размеры бывают не совсем кратен, и считать не удобно.


Далее выбираем нашу плоскость и конвертируем в Editable Poly


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

Итак для начала создаем материал швов, допустим назовем его “shvi” и покрасим его в белый цвет. К тому же нам необходимо сейчас присвоить материалы к нужным полигонов, а настройки самого материала можно сделать позже.

Когда мы создали материал применяем его ко всем выделенным полигоном, маленькой кнопочкой показанной на скриншоте.


Возвращаемся к нашей плоскости, к режиму редактирования полигонов и выполняем следующие действия:

Убедившись в том что мы выбрали все полигоны, нажимаем на кнопку Inset, - откроется окно настроек , где нам нужно изменить следующие параметры, выбрать режим:

Inset type – By Poligon

А размер выбрать на свое усмотрение, что бы максимально визуально было пхоже на размер швов плитки.


Теперь не сбрасывая выделения, применяем второй материал к выделенным объектам, собственно сам материал плитки, таким же образом как мы делали это со швами.


Далее можем закрыть окно материалов, и приступить к дальнейшему моделированию плитки

Переходим к редактированию наших полигнов, и пользуемся инструментом Extrude


После того как выдавили плитку, теперь осталось снять фаску с граней.

Обязательно удерживая клавишу Ctrl – переходим в режим редактирования граней.


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


Когда мы убедились что все нужные грани выбраны, теперь снимаем фаску, в режиме редактирование граней Edge нажимаем на инструмент фаски Сhamfer как показано на рисунке ниже, и снимаем фаску 1 мм.


Вот в итоге мы получаем плитку, конечно в разных условиях параметры и размеры могут отличатся, но принцип останется таким же.

UV-развертка необходима для того, что-бы мы могли наложить текстуру на 3D-объект. А если точнее, с помощью развертки мы указываем как именно 2D текстура должна накладываться на 3D объект.

Я буду показывать на примере Blender 2.8. На примере кубика, так как его геометрия самая простая, да и он есть на сцене с самого начала. Если выбрать куб и перейти на вкладку UV-Editing, то вы увидите вот такую картину.

Как сделать UV-развертку в Blender 2.8+

Нажатием на TAB перейдем в режим редактирования и выберем все вершины нажатием A. Слева мы увидим уже готовую развертку для куба.

Как сделать UV-развертку в Blender 2.8+

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

Швы - это разрезы на поверхности 3D объекта, которые разрезают объект так чтобы его можно было развернуть на плоскость.

Хм, наверное звучит не совсем понятно, но думаю я смогу показать все на примере. Давайте изуродуем развертку этого куба как по нашему мнению "будет лучше"(нет)😁.

Я выделил верхние несколько граней. Делается это ЛКМ в режиме выделения граней, который в свою очередь выбирается вверху слева или на цифрах на клавиатуре, нажатием 2.

Как сделать UV-развертку в Blender 2.8+

Далее нужно пометить их как швы. Жмем ПКМ и в меню выбираем Mark seam (Пометить шов). Далее снова выбираем все кнопкой A и сверху в меню выбираем пункт UV. В выпавшем меню жмем Unwrap. Слева отобразиться новая развертка.

Как сделать UV-развертку в Blender 2.8+

Кхм, даа.. Ну, что навыделяли то и получили) Все это было сделано для примера и понимания того как нужно или ненужно делать развертку. Думаю лучше вернуть старую развертку. Выделяем все кнопкой A и помечаем все грани как швы. ПКМ - Mark seam. Далее в меню вверху UV - Unwrap.

Как сделать UV-развертку в Blender 2.8+

Не плохо, но это не то что было. Можно конечно и так пользоваться, но мы ведь хотели "как было". Давайте сотрем все метки швов.

Для этого выберем все грани, ПКМ - Clear seam. UV - Unwrap.

Как ни чего не поменялось? Все должно было сработать!

Ладно ладно, шучу, нужно указать стандартные швы в ручную😊.

У меня получилось что-то такое.

Как сделать UV-развертку в Blender 2.8+

Попробуйте сделать это сами, а что-бы помочь понять "как?". Представьте, что этот куб нужно собрать из картона или бумаги. Слева эта самая бумага и показывается. А швы это разрезы по собранному кубу.

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

Рисование по объекту

Ну вот вы и разобрались как делать развертку. Возможно даже уже нажали на пункт верхнего меню Texture paint. И при попытке что-то нарисовать у вас вылезла ошибка "нет текстуры". Все правильно. Мы ведь не сохранили текстуру и не назначили ее объекту.

На вкладке Texture paint в верхнем меню выбираем New и в новом окне настраиваем параметры и название будущей текстуры.

Как сделать UV-развертку в Blender 2.8+
Как сделать UV-развертку в Blender 2.8+

И сохраняем текстуру куда угодно, лучше в папку с вашим проектом.

После этого необходимо наложить текстуру на объект. В правом меню выбираем пункт "Настройки материалов" и уже в материале меняем просто цвет на текстуру.

Как сделать UV-развертку в Blender 2.8+
Как сделать UV-развертку в Blender 2.8+
Как сделать UV-развертку в Blender 2.8+

Куб почернел, так как текстура пустая. Теперь можно красить куб удобным способом. Например можно делать это прямо в Blender.

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

Как сделать UV-развертку в Blender 2.8+

Текстуру нужно сохранять после изменения, как мы уже сохраняли.

Так же, естественно, можно редактировать текстуру в любом графическом редакторе, например, GIMP, PhotoShop и т.д.

Ну вот, думаю к этому моменту вы уже понимаете как сделать UV-развертку в Blendr 2.8+. Спасибо за внимание и легкого моделирования!

Материал – это набор параметров, определяющих характер поверхности объекта (а в некоторых случаях – и его объема). Они включают цвет (если быть точным, несколько компонентов цвета для разных составляющих освещенности), текстуру, параметры прозрачности, отражения и преломления и многие другие. В общем случае, эти параметры определяют закон, по которому свет должен отражаться от поверхности объекта.

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

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

Но если объекты отражают свет, почему же далеко не любая поверхность может служить зеркалом? Все дело в том, что идеальным зеркалом является только идеально гладкая поверхность, в то время как обычные поверхности в той или иной степени шероховаты – то есть, состоят из множества микроскопических граней-отражателей. Свет, попадая на поверхность объекта, многократно отражается от этих микрограней и рассеивается в пространстве, в результате чего мы не видим точных отражений, а только сплошной цвет.

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

Самая простая такая формула – закон Ламберта (Lambert), который определяет интенсивность диффузной освещенности в точке как косинус угла между направлением света и нормалью к поверхности в этой точке.

Модель Ламберта хорошо подходит только для сравнительно гладких поверхностей. Для моделирования шероховатой, бархатистой или запыленной поверхности часто используют диффузную модель Орена-Найара (Oren-Nayar), которая основана на предположении, что поверхность состоит из множества бесконечно малых микрограней, освещение каждой из которых описывается моделью Ламберта. Модель Орена-Найара имеет параметр для контроля шероховатости поверхности (Roughness). Этот параметр определяет, сколько света отразится назад в направлении источника света.

В Blender чаще всего используются именно эти две диффузные модели. Помимо диффузной, используется также бликовая составляющая освещенности. Бликовая составляющая (specular term) – это количество света, зеркально отраженного поверхностью. Блик – это прямое отражение источника света на поверхности объекта. Если учесть, что в компьютерной графике используются идеализированные объекты, возникает закономерный вопрос: почему точечный источник света, не имеющий объема и невидимый сам по себе, отражается как относительно крупный размытый световой блик? Этот феномен также объясняется наличием микрограней: они имеют собственные вектора нормалей, отклонение которых от основной нормали поверхности меняют интенсивность зеркально отраженного света.

Для сравнительно гладких материалов (таких, как пластик или металл) обычно пользуются эмпирической моделью Фонга (Phong). Она не соответствует точному физическому описанию отражения света, но в большинстве случаев позволяет достичь приемлемых реалистичных результатов. Формула Фонга основана на простом наблюдении: блестящие поверхности дают маленькие и резкие блики, в то время как матовые – большие и размытые. Более согласованная с физикой модель, которая поддерживается в Blender – модель Кука-Торренса (Cook-Torrance). Она основана на допущении, что поверхность состоит из микрограней, каждая из которых является идеальным зеркалом.

Зная, где и как правильно применять эти модели, можно моделировать объекты, по внешнему виду максимально приближенные к реальным.

Так, для матовых поверхностей вроде камня, бетона или бумаги лучше всего подходит модель Ламберта. Блики на пластике, фарфоре, металле, матовом стекле имитируются моделью Фонга. Бархат, вельвет, ковры и некоторые другие виды тканей лучше всего воссоздаются моделями Орена-Найара и Кука-Торренса. В Blender материал объекту можно добавить в редакторе свойств, который по умолчанию находится в правой части окна программы. Переключите панель со значками на Material, добавьте объекту новый материал (если его нет) при помощи кнопки New.

Рассмотрим основные параметры материала.

Diffuse. Цвет и модель диффузной (рассеянной) компоненты освещенности. Вы можете указать цвет, нажав по нему левой кнопкой мыши – появится RGB-палитра с возможностью точного подбора каналов цвета.

Specular. Цвет и модель бликовой (зеркальной) компоненты освещенности. Форма блика зависит от выбранной модели и специфичных для нее параметров – это может быть как маленькая резкая точка, так и большое размытое пятно.

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

Mirror. Если поставить галочку напротив этого параметра, поверхность объекта будет зеркально отражать окружающие предметы. Степень отражаемости контролируется параметром Reflectivity.

Текстура

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