stringtranslate.com

Затенение

Затенение относится к изображению восприятия глубины в 3D-моделях (в области 3D-компьютерной графики ) или иллюстрацияхизобразительном искусстве ) путем изменения уровня темноты . [1] Затенение пытается аппроксимировать локальное поведение света на поверхности объекта и его не следует путать с методами добавления теней, такими как теневое отображение или теневые объемы , которые подпадают под глобальное поведение света.

В рисунке

Затенение традиционно используется в рисовании для изображения диапазона темноты путем нанесения носителя более плотно или с более темным оттенком для более темных областей, и менее плотно или с более светлым оттенком для более светлых областей. Световые узоры, такие как объекты, имеющие светлые и затененные области, помогают при создании иллюзии глубины на бумаге. [2] [3]

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

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

В компьютерной графике

Изображение сферы
Метод затенения Гуро , разработанный Анри Гуро в 1971 году, был одним из первых методов затенения, разработанных для трехмерной компьютерной графики .
Изображение шестнадцати веревочных узлов
Узел, закрашенный различными материалами , включая алюминий, латунь, бронзу, медь, электрум, золото, железо, олово, серебро, глину, фольгу, глазурь, пластик, резину, атлас и бархат. Создано в Mathematica 13.1

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

Затенение выполняется в процессе рендеринга программой, называемой шейдером .

Угол наклона поверхности к источнику света

Затенение изменяет цвета граней в 3D-модели в зависимости от угла наклона поверхности к источнику или источникам света.

На первом изображении ниже грани коробки визуализированы, но все одного цвета. Здесь также визуализированы линии краёв, что делает изображение более заметным.

Второе изображение — это та же модель, отрисованная без краевых линий. Трудно сказать, где заканчивается одна грань коробки и начинается другая.

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

Типы освещения

Эффекты затенения от прожектора с использованием трассировщика лучей

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

Окружающее освещение

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

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

Точечное освещение

Свет исходит из одной точки и распространяется во всех направлениях.

Освещение

Моделирует прожектор : свет исходит из одной точки и распространяется конусом .

Освещение территории

Свет исходит из небольшой области на одной плоскости . (Более реалистичная модель, чем точечный источник света.)

Направленное освещение

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

Расстояние спада

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

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

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

Расчет

Уменьшение расстояния можно рассчитать несколькими способами:

Методы затенения

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

Плоское затенение

Плоская штриховка текстурированного кубоида
Графический комплекс морской ракушки с плоским затенением, смоделированный в Mathematica
Графический комплекс морской ракушки с плоским затенением, смоделированный в Mathematica

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

Плавное затенение

В отличие от плоской заливки, где цвета меняются прерывисто на границах полигонов, при плавной заливке цвет меняется от пикселя к пикселю, что приводит к плавному переходу цвета между двумя соседними полигонами. Обычно значения сначала вычисляются в вершинах, а для вычисления значений пикселей между вершинами полигонов используется билинейная интерполяция . Типы плавной заливки включают заливку по Гуро [4] и заливку по Фонгу [5] .

затенение по Гуро
  1. Определите нормаль в каждой вершине многоугольника.
  2. Примените модель освещения к каждой вершине, чтобы рассчитать интенсивность света от нормали вершины.
  3. Интерполируйте интенсивности вершин, используя билинейную интерполяцию по поверхностному полигону.

Проблемы:

Фонг-шейдинг

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

  1. Вычислите нормаль N для каждой вершины многоугольника.
  2. Используя билинейную интерполяцию, вычислите нормаль N i для каждого пикселя. (Нормаль необходимо перенормировать каждый раз.)
  3. Применяем модель освещения к каждому пикселю, чтобы рассчитать интенсивность света из N i .

Отложенное затенение

Отложенное затенение — это метод затенения, при котором вычисление затенения откладывается на более поздний этап путем рендеринга в два прохода, что потенциально повышает производительность, не отбрасывая дорогостоящие затененные пиксели. Первый проход захватывает только параметры поверхности (такие как глубина, нормали и параметры материала), второй выполняет фактическое затенение и вычисляет окончательные цвета. [6] [7] [8] : 884 

Другие подходы

Оба метода затенения Гуро и Фонга могут быть реализованы с использованием билинейной интерполяции . Бишоп и Ваймер [9] предложили использовать разложение в ряд Тейлора полученного выражения с применением модели освещения и билинейной интерполяции нормалей. Следовательно, была использована интерполяция полиномов второй степени . Этот тип биквадратной интерполяции был далее разработан Баррерой и др. [10] , где один полином второго порядка использовался для интерполяции диффузного света модели отражения Фонга , а другой полином второго порядка использовался для зеркального света.

Сферическая линейная интерполяция ( Slerp ) использовалась Куиджем и Блейком [11] для вычисления как нормали по полигону, так и вектора в направлении к источнику света. Похожий подход был предложен Хастом [12] , который использует кватернионную интерполяцию нормалей с тем преимуществом, что нормаль всегда будет иметь единичную длину, и вычислительно сложная нормализация избегается.

Плоское и гладкое затенение

Компьютерное зрение

Реконструкция " Форма из штриховки "

В компьютерном зрении некоторые методы 3D-реконструкции основаны на затенении или форме-из-затенения . На основе затенения изображения трехмерная модель может быть реконструирована из одной фотографии. [13]

Смотрите также

Ссылки

  1. ^ "Графика: Затенение". hexianghu.com . Получено 2019-09-10 .
  2. ^ "Drawing Techniques". Drawing With Confidence. Архивировано из оригинала 24 ноября 2012 г. Получено 19 сентября 2012 г.
  3. ^ "Учебник по штриховке, как штриховать в рисовании". Dueysdrawings.com. 2007-06-21 . Получено 2012-02-11 .
  4. ^ Гуро, Анри (1971). «Непрерывное затенение криволинейных поверхностей». IEEE Transactions on Computers . C-20 (6): 623–629. doi :10.1109/TC.1971.223313. S2CID  123827991.
  5. ^ BT Phong, Освещение для изображений, созданных компьютером, Communications of ACM 18 (1975), № 6, 311–317. ( PDF )
  6. ^ «Прямой рендеринг против отложенного рендеринга».
  7. ^ «LearnOpenGL — Отложенное затенение».
  8. ^ Акенин-Мёллер, Томас; Хейнс, Эрик; Хоффман, Нати (2018). Рендеринг в реальном времени (Четвертое издание). ISBN 978-1-1386-2700-0.
  9. Гэри Бишоп и Дэвид М. Ваймер. 1986. Быстрое затенение по Фонгу. SIGGRAPH Comput. Graph . 20, 4 (август 1986), 103–106.
  10. ^ Т. Баррера, А. Хаст, Э. Бенгтссон. Быстрое программное затенение с качеством, близким к качеству по Фонгу. WSCG'06 , стр. 109–116. 2006
  11. ^ Kuijk, AAM и EH Blake, Более быстрое затенение по Фонгу с помощью угловой интерполяции. Computer Graphics Forum 8(4):315–324. 1989 ( PDF )
  12. ^ А. Хаст. Затенение с помощью кватернионной интерполяции. WSCG'05 . С. 53–56. 2005.
  13. ^ Хорн, Бертольд КП «Форма из затенения: метод получения формы гладкого непрозрачного объекта с одного вида». (1970). ( PDF )

Дальнейшее чтение