Затенение относится к изображению восприятия глубины в 3D-моделях (в области 3D-компьютерной графики ) или иллюстрациях (в изобразительном искусстве ) путем изменения уровня темноты . [1] Затенение пытается аппроксимировать локальное поведение света на поверхности объекта, и его не следует путать с методами добавления теней, такими как наложение теней или объемы теней , которые подпадают под глобальное поведение света.
Штриховка традиционно используется в рисовании для изображения темных участков путем нанесения носителя более плотным или с более темным оттенком для более темных областей и менее плотным или с более светлым оттенком для более светлых областей. Световые узоры, например объекты, имеющие светлые и затененные области, помогают создать на бумаге иллюзию глубины. [2] [3]
Существуют различные методы затенения, в том числе перекрестная штриховка , при которой перпендикулярные линии различной близости рисуются в виде сетки для затенения области. Чем ближе линии расположены друг к другу, тем темнее кажется область. Аналогично, чем дальше друг от друга линии, тем светлее кажется область.
Порошковая растушевка — это метод эскизной растушевки. В этом стиле для рисования рисунка используется пеньковый порошок и обрывки бумаги. (Он может быть цветным.) Порошок для культи гладкий и не имеет блестящих частиц. Используемая бумага должна иметь мелкие зерна, чтобы порошок оставался на бумаге.
В компьютерной графике затенение относится к процессу изменения цвета объекта/поверхности/многоугольника в 3D-сцене, основанному на таких вещах, как (но не ограничиваясь) угол наклона поверхности к источникам света, ее расстояние от источника света, ее угол к источнику света. свойства камеры и материала (например, функция двунаправленного распределения отражательной способности ) для создания фотореалистичного эффекта.
Затенение выполняется в процессе рендеринга программой, называемой шейдером .
Затенение изменяет цвета граней в 3D-модели в зависимости от угла поверхности к источнику света или источникам света.
На первом изображении ниже показаны грани коробки, но все они одного цвета. Здесь также визуализируются краевые линии, что облегчает просмотр изображения.
Второе изображение — та же модель, но без краевых линий. Трудно сказать, где заканчивается одна грань коробки и начинается следующая.
На третьем изображении включена затенение, что делает изображение более реалистичным и позволяет легче увидеть, какое лицо какое.
Когда шейдер вычисляет результирующий цвет, он использует модель освещения , чтобы определить количество света, отраженного в определенных точках поверхности. Различные модели освещения можно комбинировать с разными методами затенения — хотя освещение говорит о том, сколько света отражается, затенение определяет, как эта информация используется для расчета конечного результата. Например, он может рассчитывать освещение только в определенных точках и использовать интерполяцию для заполнения остальных. Шейдер также может решить, сколько источников света учитывать и т. д.
Источник окружающего света представляет собой всенаправленный источник света с фиксированной интенсивностью и фиксированным цветом, который одинаково влияет на все объекты в сцене (вездесущ). Во время рендеринга все объекты сцены подсвечиваются заданной интенсивностью и цветом. Этот тип источника света в основном используется для обеспечения сцены базовым видом различных объектов в ней. Это самый простой тип освещения, который моделирует многократное рассеяние или отражение света , тем самым создавая равномерный эффект.
Окружающее освещение можно комбинировать с фоновой окклюзией, чтобы показать, насколько экспонирована каждая точка сцены, влияя на количество окружающего света, которое она может отражать. Это создает рассеянное, ненаправленное освещение по всей сцене, не отбрасывая четких теней, но затемняя закрытые и защищенные области. Результат обычно визуально похож на пасмурный день.
Свет исходит из одной точки и распространяется во всех направлениях.
Моделирует прожектор : свет исходит из одной точки и распространяется конусом наружу .
Свет исходит из небольшой области в одной плоскости . (Более реалистичная модель, чем точечный источник света.)
Направленный источник света одинаково освещает все объекты с заданного направления , как источник света бесконечного размера и на бесконечном расстоянии от сцены; затенение есть, но спада по расстоянию быть не может. Это похоже на солнце .
Теоретически две параллельные поверхности освещаются практически одинаково от удаленного незаблокированного источника света, такого как солнце. Эффект спада на расстоянии создает изображения, которые имеют больше затенения и поэтому будут реалистичными для близких источников света.
На левом изображении не используется спад расстояния. Обратите внимание, что цвета на лицевой стороне двух коробок совершенно одинаковы. Может показаться, что существует небольшая разница в том месте, где две грани непосредственно перекрываются, но это оптическая иллюзия , вызванная вертикальным краем ниже места встречи двух граней.
На правом изображении используется спад расстояния. Обратите внимание, что передняя поверхность коробки доводчика ярче, чем передняя поверхность задней коробки. Кроме того, по мере удаления пол меняется от светлого к темному.
Спад расстояния можно рассчитать несколькими способами:
Во время затенения нормаль к поверхности часто необходима для расчета освещения. Нормали могут быть предварительно рассчитаны и сохранены для каждой вершины модели.
Здесь освещение оценивается только один раз для каждого многоугольника (обычно для первой вершины в многоугольнике, но иногда и для центроида для треугольных сеток), на основе нормали к поверхности многоугольника и в предположении, что все многоугольники плоские. Вычисленный цвет используется для всего многоугольника, благодаря чему углы выглядят острыми. Обычно это используется, когда более продвинутые методы затенения слишком затратны в вычислительном отношении. Зеркальные блики плохо визуализируются при плоской штриховке: если в репрезентативной вершине имеется большой зеркальный компонент, эта яркость прорисовывается равномерно по всему лицу. Если зеркальный свет не попадает на репрезентативную точку, он полностью пропускается. Следовательно, компонент зеркального отражения обычно не включается в расчет плоского затенения.
В отличие от плоского затенения, при котором цвета меняются прерывисто на границах полигонов, при плавном затенении цвет меняется от пикселя к пикселю, что приводит к плавному переходу цвета между двумя соседними полигонами. Обычно значения сначала вычисляются в вершинах, а для расчета значений пикселей между вершинами многоугольников используется билинейная интерполяция . Типы плавной штриховки включают штриховку Гуро [4] и штриховку Фонга . [5]
Проблемы:
Затенение Фонга похоже на затенение Гуро, за исключением того, что вместо интерполяции интенсивности света нормали интерполируются между вершинами, а освещение оценивается попиксельно. Таким образом, зеркальные блики вычисляются гораздо точнее, чем в модели затенения Гуро.
Отложенное затенение — это метод затенения, при котором вычисление затенения откладывается на более поздний этап путем рендеринга в два прохода, что потенциально повышает производительность за счет не отбрасывания дорогостоящих затененных пикселей. Первый проход фиксирует только параметры поверхности (такие как глубина, нормали и параметры материала), второй выполняет фактическое затенение и вычисляет окончательные цвета. [6] [7] [8] : 884
И затенение Гуро , и затенение Фонга могут быть реализованы с использованием билинейной интерполяции . Бишоп и Веймер [9] предложили использовать разложение результирующего выражения в ряд Тейлора в результате применения модели освещения и билинейной интерполяции нормалей. Поэтому использовалась полиномиальная интерполяция второй степени . Этот тип биквадратичной интерполяции был дополнительно развит Баррерой и др., [10] , где один полином второго порядка использовался для интерполяции рассеянного света модели отражения Фонга , а другой полином второго порядка использовался для зеркального света.
Сферическая линейная интерполяция ( Slerp ) использовалась Куиджем и Блейком [11] для вычисления как нормали к многоугольнику, так и вектора по направлению к источнику света. Похожий подход был предложен Хастом [12] , который использует кватернионную интерполяцию нормалей с тем преимуществом, что нормаль всегда будет иметь единичную длину и позволяет избежать сложной в вычислительном отношении нормализации.
В компьютерном зрении некоторые методы 3D-реконструкции основаны на затенении или форме из затенения . На основе затенения изображения трехмерную модель можно восстановить по одной фотографии. [13]