Освещение компьютерной графики — это набор методов, используемых для имитации света в сценах компьютерной графики . Хотя методы освещения обеспечивают гибкость в уровне детализации и доступной функциональности, они также работают на разных уровнях вычислительных требований и сложности . Графические художники могут выбирать из множества источников света, моделей, методов затенения и эффектов в соответствии с потребностями каждого приложения.
Источники света позволяют по-разному вводить свет в графические сцены. [1] [2]
Точечные источники излучают свет из одной точки во всех направлениях, при этом интенсивность света уменьшается с расстоянием. [3] Примером точечного источника является отдельная лампочка. [4]
Направленный источник (или удаленный источник) равномерно освещает сцену с одного направления. [4] В отличие от точечного источника, интенсивность света, создаваемого направленным источником, не меняется с расстоянием в масштабе сцены, поскольку направленный источник рассматривается так, как будто он находится очень далеко. [4] Примером направленного источника является солнечный свет на Земле. [5]
Прожектор создает направленный конус света. [6] Свет становится более интенсивным по мере приближения наблюдателя к источнику прожектора и к центру светового конуса. [6] Примером прожектора является фонарик. [5]
Area lights — это 3D-объекты, которые излучают свет. В то время как точечные и прожекторные источники света считаются бесконечно малыми точками, area lights рассматриваются как физические формы. [7] Area light создает более мягкие тени и более реалистичное освещение, чем точечные и прожекторные источники света. [8]
Источники окружающего света освещают объекты, даже если нет других источников света. [6] Интенсивность окружающего света не зависит от направления, расстояния и других объектов, что означает, что эффект полностью равномерен по всей сцене. [6] Этот источник гарантирует, что объекты видны даже в полной темноте. [5]
Lightwarp — это метод, при котором объект в геометрическом мире преломляет свет в зависимости от направления и интенсивности света. Затем свет деформируется с использованием рассеянного окружающего света с диапазоном цветового спектра . Затем свет может быть отраженно рассеян для получения большей глубины резкости и преломлен . Метод используется для создания уникального стиля рендеринга и может использоваться для ограничения переэкспонирования объектов. Такие игры, как Team Fortress 2, используют метод рендеринга для создания стилизованного вида с затенением мультяшной cel . [9]
HDRI означает High dynamic range image и представляет собой 360° изображение, которое обернуто вокруг 3D-модели в качестве уличной обстановки и обычно использует солнце в качестве источника света в небе. Текстуры модели могут отражать прямой и окружающий свет и цвета из HDRI. [10]
В компьютерной графике общее воздействие источника света на объект определяется комбинацией взаимодействий объекта с ним, обычно описываемых как минимум тремя основными компонентами. [11] Три основных компонента освещения (и последующие типы взаимодействия) — это рассеянное, окружающее и зеркальное. [11]
Рассеянное освещение (или диффузное отражение ) — это прямое освещение объекта равномерным количеством света, взаимодействующего с рассеивающей свет поверхностью. [4] [12] После того, как свет падает на объект, он отражается в зависимости от свойств поверхности объекта, а также угла падения света. [12] Это взаимодействие вносит основной вклад в яркость объекта и формирует основу его цвета. [13]
Поскольку окружающий свет не имеет направления, он равномерно взаимодействует со всеми поверхностями, а его интенсивность определяется силой источников окружающего света и свойствами материалов поверхности объектов, а именно их коэффициентами отражения окружающего света . [13] [12]
Зеркальный компонент освещения придает объектам блеск и блики. [13] Это отличается от зеркальных эффектов, поскольку другие объекты в окружающей среде не видны в этих отражениях. [12] Вместо этого зеркальное освещение создает яркие пятна на объектах на основе интенсивности зеркального компонента освещения и коэффициента зеркального отражения поверхности. [12]
Модели освещения используются для воспроизведения эффектов освещения в визуализируемых средах, где свет аппроксимируется на основе физики света. [14] Без моделей освещения воспроизведение эффектов освещения, возникающих в естественном мире, потребовало бы больше вычислительной мощности, чем это практично для компьютерной графики. [14] Цель этой модели освещения или освещения — вычислить цвет каждого пикселя или количество света, отраженного для различных поверхностей в сцене. [15] Существуют две основные модели освещения: объектно-ориентированное освещение и глобальное освещение. [16] Они отличаются тем, что объектно-ориентированное освещение рассматривает каждый объект индивидуально, тогда как глобальное освещение отображает, как свет взаимодействует между объектами. [16] В настоящее время исследователи разрабатывают методы глобального освещения, чтобы более точно воспроизвести, как свет взаимодействует с окружающей средой. [16]
Объектно-ориентированное освещение, также известное как локальное освещение, определяется путем сопоставления одного источника света с одним объектом. [17] Этот метод быстро вычисляется, но часто является неполным приближением того, как свет будет вести себя в сцене в реальности. [17] Его часто аппроксимируют путем суммирования комбинации зеркального, рассеянного и окружающего света определенного объекта. [14] Двумя преобладающими моделями локального освещения являются модели освещения Фонга и Блинна-Фонга. [18]
Одной из наиболее распространенных моделей отражения является модель Фонга. [14] Модель Фонга предполагает, что интенсивность каждого пикселя является суммой интенсивности, обусловленной рассеянным, зеркальным и окружающим освещением. [17] Эта модель учитывает местоположение наблюдателя для определения зеркального света с использованием угла света, отраженного от объекта. [18] Берется косинус угла и возводится в степень, определенную дизайнером. [17] При этом дизайнер может решить, насколько широким должен быть блик на объекте; из-за этого степень называется значением блеска. [18] Значение блеска определяется шероховатостью поверхности, где зеркало будет иметь значение бесконечности, а самая шероховатая поверхность может иметь значение единицы. [17] Эта модель создает более реалистично выглядящий белый блик на основе перспективы наблюдателя. [14]
Модель освещения Блинна-Фонга похожа на модель Фонга, поскольку она использует зеркальный свет для создания блика на объекте на основе его блеска. [19] Модель освещения Блинна-Фонга отличается от модели освещения Фонга, поскольку модель Блинна-Фонга использует вектор, нормальный к поверхности объекта и находящийся на полпути между источником света и наблюдателем. [14] Эта модель используется для получения точного зеркального освещения и сокращения времени вычислений. [14] Процесс занимает меньше времени, поскольку нахождение направления вектора отраженного света является более сложным вычислением, чем вычисление вектора нормали на полпути . [19] Хотя это похоже на модель Фонга, она дает другие визуальные результаты, и показатель зеркального отражения или блеск могут потребовать модификации для получения аналогичного зеркального отражения. [20]
Глобальное освещение отличается от локального освещения, поскольку оно рассчитывает свет так, как он будет проходить через всю сцену. [16] Это освещение в большей степени основано на физике и оптике, при этом световые лучи рассеиваются, отражаются и бесконечно отражаются по всей сцене. [21] Все еще ведутся активные исследования глобального освещения, поскольку оно требует большей вычислительной мощности, чем локальное освещение. [22]
Источники света испускают лучи, которые взаимодействуют с различными поверхностями посредством поглощения, отражения или преломления. [3] Наблюдатель сцены увидит любой источник света, который достигнет его глаз; луч, который не достигнет наблюдателя, останется незамеченным. [23] Можно смоделировать это, заставив все источники света испускать лучи, а затем вычислить, как каждый из них взаимодействует со всеми объектами на сцене. [24] Однако этот процесс неэффективен, так как большинство световых лучей не достигнет наблюдателя и будет тратить время обработки. [25] Трассировка лучей решает эту проблему, обращая процесс, вместо этого отправляя лучи зрения от наблюдателя и вычисляя, как они взаимодействуют, пока не достигнут источника света. [24] Хотя этот способ более эффективно использует время обработки и создает имитацию света, близко имитирующую естественное освещение, трассировка лучей все еще имеет высокие вычислительные затраты из-за большого количества света, которое достигает глаз наблюдателя. [26]
Излучение учитывает энергию, выделяемую окружающими объектами и источником света. [16] В отличие от трассировки лучей, которая зависит от положения и ориентации наблюдателя, освещение с помощью излучательности не зависит от положения взгляда. [25] Излучение требует большей вычислительной мощности, чем трассировка лучей, но может быть более полезным для сцен со статическим освещением, поскольку его нужно вычислить только один раз. [27] Поверхности сцены можно разделить на большое количество участков; каждый участок излучает немного света и влияет на другие участки, затем необходимо одновременно решить большой набор уравнений, чтобы получить окончательный излучательности каждого участка. [26]
Картирование фотонов было создано как двухпроходный алгоритм глобального освещения, который более эффективен, чем трассировка лучей. [28] Это основной принцип отслеживания фотонов, испускаемых источником света, через ряд этапов. [28] Первый проход включает в себя испускание фотонов из источника света и отражение их первого объекта; затем записывается эта карта расположения фотонов. [22] Карта фотонов содержит как положение, так и направление каждого фотона, который либо отражается, либо поглощается. [28] Второй проход происходит с рендерингом , где отражения рассчитываются для разных поверхностей. [29] В этом процессе карта фотонов отделяется от геометрии сцены, что означает, что рендеринг может быть рассчитан отдельно. [22] Это полезный метод, поскольку он может имитировать каустику, и шаги предварительной обработки не нужно повторять, если вид или объекты меняются. [29]
Полигональное затенение является частью процесса растеризации , где 3D- модели рисуются как 2D- пиксельные изображения. [18] Затенение применяет модель освещения в сочетании с геометрическими атрибутами 3D-модели, чтобы определить, как освещение должно быть представлено в каждом фрагменте (или пикселе) результирующего изображения. [18] Полигоны 3D-модели хранят геометрические значения, необходимые для процесса затенения. [30] Эта информация включает значения положения вершин и нормали поверхности , но может содержать дополнительные данные, такие как текстуры и карты рельефа . [31]
Плоское затенение — это простая модель затенения с равномерным применением освещения и цвета для каждого полигона. [32] Цвет и нормаль одной вершины используются для расчета затенения всего полигона. [18] Плоское затенение обходится недорого, поскольку освещение для каждого полигона нужно рассчитывать только один раз за рендеринг. [32]
Затенение по Гуро — это тип интерполированного затенения, при котором значения внутри каждого полигона являются смесью значений его вершин. [18] Каждой вершине присваивается собственная нормаль, состоящая из среднего значения нормалей поверхности окружающих полигонов. [32] Затем освещение и затенение в этой вершине рассчитываются с использованием средней нормали и выбранной модели освещения. [32] Этот процесс повторяется для всех вершин в 3D-модели. [2] Затем затенение ребер между вершинами рассчитывается путем интерполяции между значениями вершин. [2] Наконец, затенение внутри полигона рассчитывается как интерполяция значений окружающих ребер. [2] Затенение по Гуро создает плавный эффект освещения на поверхности 3D-модели. [2]
Затенение Фонга , похожее на затенение Гуро, является другим типом интерполяционного затенения, которое смешивает значения вершин для затенения полигонов. [21] Ключевое различие между ними заключается в том, что затенение Фонга интерполирует значения нормали вершины по всему полигону, прежде чем вычисляет его затенение. [32] Это контрастирует с затенением Гуро, которое интерполирует уже затененные значения вершин по всему полигону. [21] После того, как затенение Фонга вычислило нормаль фрагмента (пикселя) внутри полигона, оно может применить модель освещения, затенив этот фрагмент. [32] Этот процесс повторяется до тех пор, пока каждый полигон 3D-модели не будет затенен. [21]
Каустика — это эффект света, отраженного и преломленного в среде с искривленными границами раздела или отраженного от искривленной поверхности. [33] Они выглядят как ленты концентрированного света и часто видны при взгляде на водоемы или стекло. [34] Каустика может быть реализована в 3D-графике путем смешивания карты текстуры каустики с картой текстуры затронутых объектов. [34] Текстура каустики может быть либо статическим изображением, которое анимировано для имитации эффектов каустики, либо расчетом каустики в реальном времени на пустом изображении. [34] Последнее более сложно и требует обратной трассировки лучей для имитации фотонов, движущихся через среду 3D-рендеринга. [33] В модели освещения с отображением фотонов выборка Монте-Карло используется в сочетании с трассировкой лучей для вычисления интенсивности света, вызванного каустикой. [33]
Отражение карт (также известное как отображение окружения) — это метод, который использует 2D-карты окружения для создания эффекта отражательной способности без использования трассировки лучей. [35] Поскольку внешний вид отражающих объектов зависит от относительного положения наблюдателей, объектов и окружающей среды, графические алгоритмы создают векторы отражения, чтобы определить, как раскрашивать объекты на основе этих элементов. [36] Используя 2D-карты окружения вместо полностью визуализированных 3D-объектов для представления окружения, отражения на объектах можно определить с помощью простых, не требующих больших вычислительных затрат алгоритмов. [35]
Системы частиц используют наборы мелких частиц для моделирования хаотичных, высокосложных событий, таких как огонь, движущиеся жидкости, взрывы и движущиеся волосы. [37] Частицы, которые составляют сложную анимацию, распределяются эмиттером, который дает каждой частице ее свойства, такие как скорость, продолжительность жизни и цвет. [37] Со временем эти частицы могут перемещаться, менять цвет или изменять другие свойства, в зависимости от эффекта. [37] Обычно системы частиц включают случайность , например, в начальных свойствах, которые эмиттер дает каждой частице, чтобы сделать эффект реалистичным и неоднородным. [37] [38]