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