Наука создания фотореалистичного 3D. Часть 1

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

Разрешение на публикацию нижеприведенного материала на ВсехСоветах любезно предоставлено администрацией сайта Компьютерная графика. За кулисами.

Итак, приступим.
Введение в физику компьютерной графики.

Признак опытного CG-специалиста – это использование физически корректного процесса работы. Если вы будете работать в соответствии с физическими законами (или так близко к ним, как позволяет ваше знание физики и математики), то вы получите более предсказуемый результат.

Накладывая одну техническую уловку (чаще всего в настройках материала и/или света) поверх другой, вы быстро создаете такую структуру сцены, которую сложно изменять и управлять ей. Более того, если такие материалы осветить не так, как изначально задумывал дизайнер шейдеров (shaders - материалы), то в лучшем случае результат будет странным, в худшем – придется все переделывать наново.

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

Старайтесь сохранить физическую правильность как можно дольше и используйте свое «право на вольность художника», только если это абсолютно необходимо.

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

Лучшие способы получить худшую 3D-картинку.

  • Не используйте глобальное освещение (Global illumination - GI) – оставляйте 100% черные тени. Также можно просто чрезмерно засветить картинку.
  • Использовать только процедурные шейдеры и ни в коем случае не прибегать к вручную нарисованным текстурам. Можно также использовать элементарные повторяющиеся (тайленые - tiled) текстуры.
  • В текстурах максимально использовать: 100% белый, 100% черный и чрезвычайно насыщенные цвета.
  • Не используйте отражательную способность материалов и тем более не делайте текстур для передачи свойств отражения.
  • Если вы (по какой-то ненормальной причине) решили использовать отражения, то используйте только зеркальное отражение и ни в коем случае не размывайте его.
  • Под любым поводом игнорируйте такую вещь как френелевское затухание (Fresnel falloff).
  • Не обращайте внимания на бамп (bump) и дисплейсмент (displacement). Старательно притворяйтесь, что простая и абсолютно гладкая поверхность, которую вы создали, действительно существует в реальности.
  • Активируйте устарелую симуляцию "Освещение окружения" (Ambient Lighting) и не используйте свойство света затухать обратно пропорционально квадрату расстояния. Исключение составляют только солнце и луна – им нужно включить эту возможность. Игнорируйте масштаб сцены.
  • Всегда используйте жесткие (по краям, неразмытые) тени.
  • Не используйте опции камеры из реального мира. Игнорируйте экспозицию (exposure), глубину резкости (depth of field) и ни за что не делайте движущиеся объекты размытыми (motion blur).

Примечание: Глубина резкости (Depth of Field, DOF) - понятие используемое в фотографии и обозначающее пространство в поле зрения камеры, в пределах которого объекты находятся в фокусе (т. е. получаются четкими на снимке).

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

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

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

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

Создавая фотореалистичную картинку, мы делаем ее именно ФОТОреалистичной. Это означает, что когда мы рендерим сцену, то мы имитируем ФОТО и ВИДЕОизображение реального мира, а не то как МЫ ВИДИМ реальный мир.

Реальные объекты и их имитация с помощью 3d-геометрии.

Геометрия большинства компьютерных (CG) моделей не может сравниться с геометрией и микроструктурой объектов из реального мира.

Моделирование всех деталей не имеет смысла, поскольку такую модель будет сложно привязывать (riq) и текстурить (map). Также будет накладно вращать такую модель в окнах проекций 3d-редактора, поэтому мы используем карты дисплейсмента, бампа или нормалей (normal maps).

Примечание: Привязка 3d-персонажей - сетап, риг (от англ. rig - снаряжение, оснастка(персонажа)). Этим занимается сетапщик (от англ. setup - настройка) - человек, который занимается настройкой. Создает скелет, управлялки (специальные 3d-элементы, за которые аниматор, дергая как за ниточки кукловод, управляет персонажем), динамику ткани, волос, селектор (продвинутая версия системы управлялок с графическим интерфейсом).

Совет: для достижения реалистичного результата - ВСЕГДА используйте бамп, а лучше дисплейсмент на ЛЮБОЙ поверхности.

К примеру, в любом фильме с применением КГ используют как МИНИМУМ цвет, бамп (и/или дисплейсмент) и карту зеркальности (specular) для КАЖДОЙ поверхности. Это в дополнение к тому, что для всех этих параметров создается вручную нарисованная текстура, а не просто выставляется числовое значение.

Грязь (Dirt).

Конечно, в архитектурной визуализации не делают грязные и старые дома (если сам клиент этого не захочет). Но грязь помогает «выдать» картинку за реалистичную.

Даже идеальное здание – никогда не идеально.

Грязь – это прекрасно, грязь – это детали, грязь – это масштаб. Запомните: чем мельче детали  грязи, тем массивнее кажется объект.

Масштаб грязи говорит о масштабе объекта.

Моделируйте только то, что вы видите (используйте референсы (references) – примеры из реальной жизни, фото и видео справочную информацию).

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

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

Примечание: более подробно про развертку можно прочитать тут.

Цвет, неровности, зеркальность

Скругление углов, фаска.

Есть одна вещь, которая касается моделирования, но относится к освещению – это скругление граней (fillet - фаска). Фаску делают ради игры света на ней. Световые блики на фаске особым образом подчеркивает
форму объекта со скругленными углами.

Фаска

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

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

Закон сохранения энергии.

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

Тем не мене, лучшее серебряное зеркало отражает 99% света. Поэтому, никогда не отражайте больше света, чем излучили.

Яркость (brightness) также не должна принимать значения 0% или 100%, поскольку также должен выполняться закон сохранения энергии. Обычно нужно выставлять значение яркости для цвета (diffuse)
около 20-80% для диэлектриков, но 0% для металлов (почему так, объясняется позже).

Значение насыщенности цвета (saturation) тоже не должно быть 100%, держите его на уровне 80%, поскольку материал не может стопроцентно отражать (или поглощать) весь свет.

Яркость и насыщенность цвета в 3D

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

Свет.

Существует прямой и непрямой свет.
Прямое освещение – это случай когда луч попадает на поверхность и… там же останавливается. В этом случае свет не отбивается от поверхности. В реальном мире такое никогда не случается.

Прямое и непрямое освещение

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

Обратноквадратичное затухание света (Inverse-square Light Falloff) означает, что с увеличением в два раза расстояния от источника света до объекта, яркость света уменьшается в 4 раза.

Световая перспектива (Light Perspective): чем дальше источник света (ИС), тем более однородным будет освещение.

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

Именно по этой причине для солнца, которое находится так далеко и имеет такие огромные размеры, не имеет смысла использовать обратноквадратичное затухание. Поэтому мы игнорируем это затухание в КГ и не используем его для солнца, луны и света от звезд.

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

Обратноквадратичное затухание света

Обратноквадратичное затухание отраженного света.

Если вы пододвинете источник света ближе к его зеркальному (не глянцевому) отражению, то размер его отражения увеличится, но не станет ярче. Чтобы это стало понятно, рассмотрим пример. Вы пододвинули источник света в 2 раза ближе к его зеркальному отражению. Как следствие, в 4 раза увеличилась яркость отраженного источника, НО ведь и площадь отраженного источника увеличилось в 4 раза. Поэтому суммарная яркость отражения не меняется.

Также, глянцевое отражение источника света может казаться ярче, чем зеркальное отражение. Но это за счет того, что площадь блика у глянцевого отражения больше (при других равных условиях). И хотя маленькое концентрированное зеркальное отражение на самом деле ярче, но мы этого не видим из-за ограниченного динамического диапазона.

Обратноквадратичное затухание отраженного света

Угол падения равен углу отражения.

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

В 3ds Max есть инструмент выравнивания блика - «Place Highlight», с помощью которого можно поместить блик на объекте в нужное место.

Рассеивание света.

В реальном мире свет постоянно рассеивается. Очень редко можно встретить четкую тень или четкое пятно света от прожектора. Но при создании прожектора (spotlight) в 3d-редакторе вы получаете источник света без затухания по краям, что неправильно. Края должны быть размыты. Сравните, к примеру, с неточечным источником (area light – можно встретить разные варианты перевода этого термина: объемный ИС, рассеивающий ИС), который представляет собой отличный пример реалистичного источника света.

Рассеивание света

Тень в компьютерной графике.

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

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

Четкие и мягкие тени

Если вы хотите добиться фотореалистичности, то нужно также помнить о воздушной перспективе. Этот эффект обязательно должен присутствовать на ваших экстерьерах (а часто и в интерьерах).

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

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

Проблема засветки изображения.

На очень светлых (overexposed - передержанных) участках рендера картинка может выглядеть слишком насыщенной, что, конечно же, неверно. Этот дефект должен быть исправлен при постобработке или в Photoshop’е, или в программе для композитинга (compositing).

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

Свойства света в 3D.

Когда фотон (photon - элементарная частица света, квант света) сталкивается с поверхностью происходит одно из трех явлений (по крайней мере, именно эти три случая имитируют в КГ):

  • Отражение.
  • Прохождение (прозрачность, полупрозрачность, а также подповерхностное рассеивание).
  • Поглощение.

Объект также может испускать свет – это называется излучение.

Отражение, поглощение, прохождение света

Типы материалов.

В реальном мире существует два типа материала (вообще-то три, но для КГ третий тип – полупроводники, не имеет ценности):

  • Проводники (металлы).
  • Диэлектрики (все остальные материалы).

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

  • Окрашивание (color-bleeding – колор блидинг, линька, перепечатывание цвета), если свет отражаясь рассеивающей поверхностью (diffuse surface) окрашивает близлежащие поверхности.
  • Отраженная каустика (reflection caustics - отраженные блики) если свет отражается зеркальной поверхностью.
  • Преломленная каустика (refracted caustics - преломленные блики) если свет проходит сквозь преломляющую поверхность.
  • Подповерхностное рассеивание (subsurface scattering) если свет частично поглощается поверхностью, а частично выходит с той же стороны.

Каустика, окрашивание, подповерхностное рассеивание

Каустика – происходит из-за фокусировки света. Каустика может порождаться отражающими или преломляющими поверхностями.

Продолжение смотрите тут

Источник Компьютерная графика. За кулисами.