Карта освещения

Материал из Википедии — свободной энциклопедии
(перенаправлено с «Lightmap»)
Перейти к навигации Перейти к поиску

Карта освещения (карта теней; англ. lightmap) — метод освещения пространства в 3D-приложениях, заключающийся в том, что создаётся текстура, содержащая информацию об освещённости трёхмерных моделей[1][2].

Описание метода

[править | править код]

Метод значительно экономит ресурсы компьютера, поскольку приложению не приходится рассчитывать падение света в режиме реального времени. По реалистичности результат использования данного метода значительно превосходит использование динамического освещения, при котором падение света и тени рассчитываются перед каждым кадром. Это связано с тем, что большинство 3D-приложений при создании карт освещения учитывают отражения света и их дальнейшее падение на другие поверхности, подобно тому, как свет ведет себя в реальном мире. Однако данный метод допустим только в случае со статическими объектами. Карты освещения для движущихся моделей создают только в случаях, если источник света присоединен к движущейся модели и результат ее освещения не зависит от ее перемещения и вращения.

Почти всегда карты освещения выравниваются с обычными текстурами полигонов, и каждый тексел карты соответствует 4-32 текселам текстуры. Размеры карты определяются размерами минимального, ограничивающего полигон прямоугольника, стороны которого параллельны текстурным векторам.

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

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

Во время рендеринга карты освещения могут накладываться вторым проходом, с использованием альфа-блендинга. При наличии мультитекстурного оборудования можно накладывать текстуру и карту освещения за один проход.

Данный метод освещения поддерживается такими игровыми движками, как id Tech, Unreal Engine, Lithtech, GoldSrc, Xash3D, Source, X-Ray, Unity

Примечания

[править | править код]
  1. Термины (cnews.ru). Дата обращения: 9 августа 2008. Архивировано 23 августа 2011 года.
  2. Лайтмап в Вики для разработчиков Valve (англ.). Архивировано 23 августа 2011 года.