Объёмные лучи — программная методика (техника) в трёхмерной компьютерной графике, предназначенная для создания эффекта трёхмерных лучей света, проходящих через окружение трёхмерной сцены.[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 года.

Ссылки

править