Объёмные лучи

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
Фотография: Пример сумеречных лучей, которые возникают во время заката
Фотография: Пример эффекта Тиндаля, когда солнечные лучи проходят через туман.
Компьютерная графика: лесная местность в анимационном фильме «Big Buck Bunny», отчётливо видно объёмные лучи.
Компьютерная графика: объёмные лучи в компьютерной игре «Crysis», которая использует игровой движок «CryEngine 2».
Объемные лучи в игры S.T.A.L.K.E.R. Clear Sky

Объёмные лучи — программная методика (техника) в трёхмерной компьютерной графике, предназначенная для создания эффекта трёхмерных лучей света, проходящих через окружение трёхмерной сцены.[1] В реальном мире эффект трёхмерных лучей представлен так называемым оптическим эффектом Тиндаля, когда лучи света проходят через облако газа, дыма, пыли, аэрозоля или пара в затёмненном пространстве. При прохождении света через такую среду лучи света «подствечивают» частички пыли или жидкости, которые распылены в воздухе, в результате чего можно увидеть эффект «объёмных лучей». Ещё одним проявлением подобного оптического эффекта являются сумеречные и противосумеречные лучи. Программная методика объёмных лучей предназначена для моделирования всех вышеописанных оптических эффектов в трёхмерной среде. Она широко используется в кинематографе и трёхмерном моделировании и рендеринге, а также в интерактивных приложениях компьютерной графики, включая компьютерные игры.

Принцип работы[править | править вики-текст]

Объемное освещение требует наличия двух компонентов: теневой карты (англ. shadow map) освещаемого пространства и буфер глубины. Начиная с самой близкой к виртуальной камере плоскости, вся сцена трассируется и значения выборок (семплов) записываются в буфер ввода. Для каждого семпла проводится определение: освещается ли он светом из нужного источника света или нет; для этого используются данные из теневой карты. В итоге только освещенные семплы влияют на окончательный цвет пикселя.[2]

Для функционирования в режиме реального времени вышеописанная методика требует оптимизации. Одним из возможных оптимизационных подходов является рендеринг освещаемого объёма в намного меньшем разрешении чем то, которое используется в изначальном графическом контексте. Вследствие такого подхода создаются нежелательные эффекты алиасинга, которые могут быть устранены посредством применения фильтра размытия (англ. blur).[2]

Ещё одной оптимизационной методикой является рендеринг «неточных» эффектов. Этот алгоритм размывает светящиеся объекты в стороне от центра основного источника света. Как правило, прозрачность постепенно сокращается с каждым проходом размытия, особенно в более светящиеся сценах. Следует иметь в виду, что для работы этого алгоритма необходимо присутствие на экране источника света.[3]

Примечания[править | править вики-текст]

  1. David "Spunk" Grampa, Dan "Tweak Monkey" Kennedy. 3D Dictionary Volumetric Lighting (англ.). Tweak3D.net (13 декабря 2002 года). Проверено 23 января 2010. Архивировано из первоисточника 15 апреля 2012.
  2. 1 2 jim coe. Volumetric Lighting in Vue 5 (англ.). Art Head Start (15 апреля 2006 года). Проверено 23 января 2010. Архивировано из первоисточника 15 апреля 2012.
  3. Dario Corno. Lesson: 36 (англ.). GameDev.net. Проверено 23 января 2010. Архивировано из первоисточника 15 апреля 2012.

Внешние ссылки[править | править вики-текст]