Затенение относится к изображению восприятия глубины в трехмерных моделях (в области трехмерной компьютерной графики ) или иллюстрациях (в визуальном искусстве ) путем изменения уровня темноты . [1] Затенение пытается приблизить локальное поведение света на поверхности объекта, и его не следует путать с методами добавления теней, такими как отображение теней или теневые объемы , которые подпадают под глобальное поведение света.
На чертеже
Затенение традиционно используется в рисовании для изображения диапазона темноты путем нанесения более плотного материала или более темного оттенка для более темных областей и менее плотного или более светлого оттенка для более светлых областей. Световые узоры, например объекты со светлыми и затемненными участками, помогают создать иллюзию глубины на бумаге. [2] [3]
Существуют различные методы затенения, в том числе перекрестная штриховка , когда перпендикулярные линии различной степени близости рисуются в сетке для затенения области. Чем ближе линии вместе, тем темнее выглядит область. Точно так же, чем дальше друг от друга линии, тем светлее будет область.
Порошок затенение является черчением затенения метода. В этом стиле, топал порошок и бумажные пни используются , чтобы нарисовать картину. (Это может быть цвет.) Порошок для культивирования гладкий и не имеет блестящих частиц. На используемой бумаге должны быть мелкие зерна, чтобы порошок оставался на бумаге.
В компьютерной графике
В компьютерной графике затенение относится к процессу изменения цвета объекта / поверхности / многоугольника в 3D-сцене на основе таких вещей, как (но не ограничиваясь) угол поверхности к источникам света, ее расстояние от источников света, ее угол относительно свойства камеры и материала (например, функция двунаправленного распределения коэффициента отражения ) для создания фотореалистичного эффекта.
Затенение выполняется в процессе рендеринга программой, называемой шейдером .
Угол поверхности к источнику света
Затенение изменяет цвета лиц в 3D-модели в зависимости от угла наклона поверхности к источнику света или источникам света.
На первом изображении ниже изображены грани коробки, но все они одного цвета. Здесь также отрисованы краевые линии, что упрощает просмотр изображения.
Второе изображение - это та же модель, но без краевых линий. Трудно сказать, где заканчивается одна грань коробки и начинается другая.
На третьем изображении включено затенение, что делает изображение более реалистичным и упрощает определение лица.
Виды освещения
Когда шейдер вычисляет результирующий цвет, он использует модель освещения для определения количества света, отраженного в определенных точках на поверхности. Различные модели освещения можно комбинировать с различными методами затенения - в то время как освещение говорит, сколько света отражается, затенение определяет, как эта информация используется для вычисления окончательного результата. Например, он может вычислять освещение только в определенных точках и использовать интерполяцию для заполнения остальных. Шейдер также может решить, сколько источников света учитывать и т. Д.
Окружающее освещение
Источник окружающего света представляет собой всенаправленный источник света фиксированной интенсивности и фиксированного цвета, который одинаково воздействует на все объекты в сцене (вездесущий). Во время рендеринга все объекты в сцене становятся ярче с заданной интенсивностью и цветом. Этот тип источника света в основном используется для обеспечения общей картины различных объектов в ней. Это самый простой для реализации тип освещения, который моделирует, как свет может многократно рассеиваться или отражаться , тем самым создавая однородный эффект.
Окружающее освещение можно комбинировать с окружающим окклюзией, чтобы показать, насколько открыта каждая точка сцены, влияя на количество окружающего света, которое она может отражать. Это создает рассеянное, ненаправленное освещение по всей сцене, не отбрасывая четких теней, но с затемненными закрытыми и защищенными областями. Результат обычно визуально похож на пасмурный день.
Точечное освещение
Свет исходит из одной точки и распространяется во всех направлениях.
Точечное освещение
Моделирует прожектор : свет исходит из одной точки и распространяется конусом наружу .
Освещение зоны
Свет исходит из небольшой области на одной плоскости . (Более реалистичная модель, чем точечный источник света.)
Направленное освещение
Направленный источник света одинаково освещает все объекты с заданного направления , как световой луч бесконечного размера и на бесконечном расстоянии от сцены; есть затенение, но не может быть никакого спада расстояния. Это похоже на солнце .
Падение расстояния
Теоретически две параллельные поверхности освещаются практически одинаково от дальнего незаблокированного источника света, такого как солнце. Эффект уменьшения расстояния создает изображения с большей степенью затенения, поэтому они будут реалистичными для ближних источников света.
На левом изображении не используется уменьшение расстояния. Обратите внимание, что цвета на лицевых сторонах двух ящиков абсолютно одинаковы. Может показаться, что есть небольшая разница в местах, где две грани пересекаются напрямую, но это оптическая иллюзия, вызванная вертикальным краем внизу, где встречаются две грани.
Правое изображение действительно использует спад расстояния. Обратите внимание на то, что передняя сторона коробки доводчика ярче, чем передняя сторона задней коробки. Кроме того, по мере удаления пол из светлого становится темным.
Расчет
Спад расстояния можно рассчитать несколькими способами:
- Степень расстояния - для данной точки на расстоянии x от источника света интенсивность получаемого света пропорциональна 1 / x n .
- Нет ( n = 0 ) - интенсивность получаемого света одинакова независимо от расстояния между точкой и источником света.
- Линейный ( n = 1 ) - для данной точки на расстоянии x от источника света интенсивность получаемого света пропорциональна 1 / x .
- Квадратичный ( n = 2 ) - вот как интенсивность света уменьшается в реальности, если свет имеет свободный путь (то есть в воздухе нет тумана или каких-либо других предметов, которые могут поглощать или рассеивать свет). Для данной точки на расстоянии x от источника света интенсивность получаемого света пропорциональна 1 / x 2 .
- Также можно использовать любое количество других математических функций .
Техники затенения
Во время затенения для расчета освещения часто требуется нормаль к поверхности . Нормали можно предварительно вычислить и сохранить для каждой вершины модели.
Плоское затенение
Здесь освещение оценивается только один раз для каждого многоугольника (обычно для первой вершины многоугольника, но иногда и для центроида для треугольных сеток) на основе нормали к поверхности многоугольника и в предположении, что все многоугольники плоские. Вычисленный цвет используется для всего многоугольника, благодаря чему углы выглядят резкими. Обычно это используется, когда более сложные методы затенения слишком дороги в вычислительном отношении. Зеркальные блики плохо отображаются с помощью плоского затенения: если в репрезентативной вершине есть большая зеркальная составляющая, эта яркость отображается равномерно по всей поверхности. Если зеркальный блик не попадает в репрезентативную точку, он полностью пропускается. Следовательно, компонент зеркального отражения обычно не включается в вычисление плоского затенения.
Плавное затенение
В отличие от плоского затенения, когда цвета меняются прерывисто на границах многоугольника, при плавном затенении цвет меняется от пикселя к пикселю, что приводит к плавному переходу цвета между двумя соседними многоугольниками. Обычно значения сначала вычисляются в вершинах, а для вычисления значений пикселей между вершинами многоугольников используется билинейная интерполяция . Типы плавного затенения включают затенение Гуро [4] и затенение Фонга . [5]
Затенение по Гуро
- Определите нормаль в каждой вершине многоугольника.
- Примените модель освещения к каждой вершине, чтобы вычислить интенсивность света от нормали вершины.
- Интерполируйте интенсивности вершин с помощью билинейной интерполяции по полигону поверхности.
Проблемы:
- Из-за того, что освещение вычисляется только в вершинах, неточности (особенно зеркальных бликов на больших треугольниках) могут стать слишком очевидными.
- Тавровые соединения с прилегающими полигонами иногда могут приводить к визуальным аномалиям. В общем, следует избегать Т-образных переходов.
Затенение по Фонгу
Затенение Фонга похоже на затенение Гуро, за исключением того, что вместо интерполяции интенсивности света нормали интерполируются между вершинами, а освещение оценивается попиксельно. Таким образом, зеркальные блики вычисляются гораздо точнее, чем в модели затенения Гуро.
- Вычислите нормальное число N для каждой вершины многоугольника.
- Используя билинейную интерполяцию, вычислите нормаль N i для каждого пикселя. (Норма должна быть каждый раз перенормирована.)
- Примените модель освещения к каждому пикселю, чтобы вычислить интенсивность света от N i .
Отложенное затенение
Отложенное затенение - это метод затенения, с помощью которого вычисление затенения откладывается на более поздний этап путем рендеринга за два прохода, потенциально повышая производительность, не отбрасывая дорогостоящие затененные пиксели. Первый проход только захватывает параметры поверхности (такие как глубина, нормали и параметры материала), второй выполняет фактическое затенение и вычисляет окончательные цвета. [6] [7] [8] : 884
Другие подходы
Оба Гуро и Фонга затенения могут быть реализованы с помощью билинейной интерполяции . Бишоп и Веймер [9] предложили использовать разложение в ряд Тейлора полученного выражения в результате применения модели освещения и билинейной интерполяции нормалей. Следовательно, использовалась полиномиальная интерполяция второй степени . Этот тип биквадратной интерполяции был дополнительно разработан Баррерой и др. [10], где один полином второго порядка использовался для интерполяции рассеянного света модели отражения Фонга, а другой полином второго порядка использовался для зеркального света.
Сферическая линейная интерполяция ( Slerp ) использовалась Куиджем и Блейком [11] для вычисления как нормали к многоугольнику, так и вектора в направлении к источнику света. Похожий подход был предложен Хастом [12], который использует кватернионную интерполяцию нормалей с тем преимуществом, что нормаль всегда будет иметь единичную длину и избежать вычислительной тяжелой нормализации.
Плоское или плавное затенение
Плоский | Гладкий |
---|---|
Использует один и тот же цвет для каждого пикселя на грани - обычно это цвет первой вершины. | Плавное затенение использует линейную интерполяцию цветов или нормалей между вершинами. |
Края кажутся более выраженными, чем на реальном объекте, потому что на самом деле почти все края несколько круглые. | Края исчезают с помощью этой техники |
Одинаковый цвет для любой точки лица | Каждая точка лица имеет свой цвет |
Визуализируются отдельные лица | Визуализируйте подстилающую поверхность |
Не подходит для гладких предметов | Подходит для любых объектов |
Менее затратно с точки зрения вычислений | Более затратный в вычислительном отношении |
Компьютерное зрение
В компьютерном зрении некоторые методы трехмерной реконструкции основаны на затенении или изменении формы на основе затенения . На основе затенения изображения трехмерная модель может быть восстановлена из одной фотографии. [13]
Смотрите также
- Шейдер
- Список распространенных алгоритмов затенения
- Список художественных техник
- Полоски под зебру для визуализации кривизны
- Ламбертовская отражательная способность
Рекомендации
- ^ «Графика: Затенение» . hexianghu.com . Проверено 10 сентября 2019 .
- ^ «Техника рисования» . Рисунок с уверенностью. Архивировано из оригинального 24 ноября 2012 года . Проверено 19 сентября 2012 года .
- ^ «Учебник по затенению, Как затенять на рисунке» . Dueysdrawings.com. 2007-06-21 . Проверено 11 февраля 2012 .
- ^ Гуро, Анри (1971). «Непрерывное затемнение криволинейных поверхностей». Транзакции IEEE на компьютерах . С-20 (6): 623–629. DOI : 10.1109 / TC.1971.223313 .
- ^ Б.Т. Фонг, Освещение для компьютерных изображений , Сообщения ACM 18 (1975), нет. 6, 311–317. ( PDF )
- ^ «Прямая визуализация против отложенной визуализации» .
- ^ «LearnOpenGL - отложенное затенение» .
- ^ Акенин-Мёллер, Томас; Хейнс, Эрик; Хоффман, Нати (2018). Рендеринг в реальном времени (четвертое изд.). ISBN 978-1-1386-2700-0.
- ^ Гэри Бишоп и Дэвид М. Веймер. 1986. Быстрое затенение Фонга. SIGGRAPH Comput. График . 20, 4 (август 1986), 103–106.
- ^ Т. Баррера, А. Хаст, Э. Бенгтссон. Программное обеспечение быстрого затенения, близкого к фонгу . WSCG'06 , стр. 109–116. 2006 г.
- ^ Kuijk, AAM и EH Blake, Более быстрое затенение Фонга с помощью угловой интерполяции . Форум компьютерной графики 8 (4): 315–324. 1989 ( PDF )
- ^ А. Хаст. Затенение кватернионной интерполяцией . WSCG'05 . С. 53–56. 2005 г.
- ^ Хорн, Бертольд К.П. « Форма из затенения: метод получения формы гладкого непрозрачного объекта с одного взгляда ». (1970). ( PDF )
дальнейшее чтение
- Введение в затенение.