Материалы в компьютерной графике

В реальном мире мы зачастую не задумываемся над тем, почему тот или иной предмет выглядит подобным образом? Само-собой разумеещееся, что стекло пропускает свет, стена шершавая, а хромированая поверхность отражает окружающий мир. Если мы что-то изготавливаем своими руками, то уже начинаем прикидывать, что необходимо сделать для того, чтобы изделее выглядело так, как нам необходимо. Мы можем отполировать поверхность металла, покрасить дерево или подобрать цветное стекло. Изготовляя что-то мы выбираем материал исходя из функционального и эстетического соображения: металл для почности, пластмасса для уменьшения веса и т.д. Свойства материала предопределены заранее его структурой и обработкой: шерсть выглядит совершенно иначе, чем ручка из пластика.
В 3D мире физических материалов не существует. Все свойства материала задаются с учетом характеристик прототипа этого материала из жизни или придумаываются для фантастических сюжетов. Какие же это свойства?

Во-первых это цвет. Мы говорим: красная майка или зеленый автомобиль. А еще может быть рисунок, например розовый зайчик на синем заборе детского сада. Применительно к 3D графике говорят о карте Diffuse или карте на канале Diffuse. Это может быть просто цвет заданный с помощью цифрового или визуального представления, может быть процедурная карта или текстура. Текстура - это, попросту, картинка из файла. Процедурная карта - это картинка, сгенерированная с помощью определенных алгоритмов. Самая, пожалуй, популярная процедурная карта - шахматная или Checker. Это чередующиеся в шахматном порядке квадраты двух цветов.

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

В реальной жизни идельно гладких поверхностей мало. Полируют зеркало или кузов автомобиля, но большинство поверхностей имеют шероховатости заметные невооруженным глазом. Деревянная, каменная, кирпичная поверхости имеют мелкие впадины и выпуклости. Даже, на первый взгляд, гладкая поверхность при близком рассмотрении не такая уж и гладкая. Иногда специально в декоративных целях придают неровности поверхности. Свет, попадая на шершавую поверхность отражается под множеством углов, что придает свою неповторимость предмету.
Для имитаци неровностей в 3D графике используют процедурные или текстурные карты которые применяются на каналах Bump или Displacement. В первом случае исходная поверхность не модифицируется, рельеф имитируется лишь игрой теней. Лучший результат получется если поверхность располагается под прямым углом к наблюдателю. Bump - довольно быстрый способ получить имитацию неровностей. В случае с Displacement модифицируется сама поверность, результат более реалистичный, даже под углами близкими к 180 градусам ощущуение рельефа не пропадает. Но за это приходится расплачиваться большим временем визуализации, да и при определенных условиях возможны артефакты. Что применять: Bump или Displacement? - зависит от конкретного случая.

На картинке ниже: процедурная карта Checker на А) канале Bump; B) канале Displacement; текстура кожи на C) канале Bump; D) канале Displacement.

Но для того чтобы точно, еще говорят фотореалистично, передать ту или иную поверхность Diffuse и Bump мало. Мы, как правило, можем с первого взгляда отличить пластмасовый шарик от металлического и глянцевый журнал от журнала из обычной бумаги. Все дело в отражающей способности. Металл блестит на солнце, а камень - нет. Хорошо отражающие поверхности мы называем зеркальными, а плохо - матовыми. Отражающая способность материала зависит от степени его шероховатости и физических свойств. В компьютерной трехмерной графике за отражающую способность отвечает канал Reflect. На этот канал можно применить цвет, текстуру или процедурную карту. Самый простой случай - когда отражающая способность задается оттенками серого, где белый цвет - абсолютное отражение, черный - абсолютное поглощение.
Однако, отражение-отражению рознь. Отражения бывают четкими или размытыми. Это свойство, Glossiness, как правило, задается в диапазоне от 0 до 1, где 1 - полностью четкое отражение.

На картинке ниже шар отражается в двух плоскостях. Для левой плоскости отражение задано цветом RGB 254,254,254 и Glossiness равно 0,99, для правой отражение такое же, но Glossiness равно 0,75.

До сих пор мы говорили о непрозрачных материалах. Но стекло, пластик, вода и т.д. - полностью или частично прозрачные материала. Для имитации прозрачности служит канал Refraction. Опять же, это может быть цвет, процедурная карта или текстура. Как и для отражений, для прозрачности задается Glossiness, который отвечает за размытие. Также для прозрачных предметов важен параметр преломления IOR. Благодаря ему мы видим воду в стакане, так как на границе воды и стекла, воды и воздуха луч света преломляется, позволяя увидеть прозрачный стакан, а в нем прозрачную воду. Для обычного стекла IOR принят равным 1,53, для воды 1,33, для воздуха - 1.

Выше были рассмотрены основные параметры 3D материалов. Но настоящие, реальные материалы, как правило, сложнее. К примеру, свеча или человеческая кожа пропускают свет на определенную глубину, т.е. являются частично прозрачными. Для имитации таких материалов используют Sub-Surface Scattering (SSS, что означает подповерхностное рассеивание) материалы. Отражения тоже бывают разные, т.е., по-хорощему, отражения для пластмассы и металла необходимо считать по отличающимся формулам. И это далеко не все, скажем так, дополнительные параметры.
С совершенствованием компьютерной техники и математического аппарата для расчета компьютерных материалов последние становятся сложнее и все более реалистичнее. И с уверенностью можно говорить о том, что в будущем даже компьютерые игры, где просчет картинки происходит в реальном времени, будут выглядеть фотореалистично.