blender-handbook

1.3. Материалы и текстуры

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

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

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

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

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

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

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

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

Цвет блика может не совпадать с цветом материала. Это справедливо для некоторых многослойных материалов – например, пластик представляет собой «слоеный пирог» из пигмента и прозрачного полимера: блик дают прозрачные слои, а диффузное рассеивание – цветные. Однородные материалы такого эффекта не производят, и блики на них имеют тот же цвет, что и сами материалы. Яркий пример – металл.

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

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

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

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

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

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

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

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

Текстура

Текстура – это изображение, которое определяет цвет (или какую-либо другую характеристику) материала в каждой точке поверхности. Говорят, что текстура накладывается на поверхность: иными словами, создается особая «карта», сопоставляющая поверхность с плоским изображением. Эту карту называют UV-разверткой или просто разверткой. В Blender вы можете создавать развертки вручную, но в случае использования базовых примитивов за вас это автоматически сделает сама программа.

Текстуру можно добавить в материал, переключившись на Texture на панели со значками свойств. У материала может быть более чем одна текстура – это часто бывает необходимо для создания сложных эффектов. Добавьте первую текстуру, нажав кнопку New. По умолчанию создается процедурная (то есть, автоматически сгенерированная программой) текстура типа «облака» (Clouds). Есть также несколько других типов процедурных текстур: «дерево», «мрамор», диаграмма Вороного, шум и т.д. Естественно, Blender позволяет в качестве текстуры выбрать произвольное растровое изображение: для этого переключите тип текстуры (Type) на Image or Movie («Изображение или фильм») и на вкладке Image нажмите Open. Если ваш объект – куб (или параллелепипед), то можно указать тип автоматической развертки на вкладке «Mapping»: Projection → Cube.

На вкладке Influence («Влияние») можно управлять характеристиками материала, на которые влияет данная текстура. По умолчанию стоит цвет (Color) – текстура влияет на диффузный цвет материала. Она также может влиять на бликовую составляющую, прозрачность, отражаемость и геометрию поверхности.

НазадК оглавлениюДалее