Научная статья на тему 'Генерация мягких теней при использовании алгоритма трассировки лучей'

Генерация мягких теней при использовании алгоритма трассировки лучей Текст научной статьи по специальности «Математика»

CC BY
719
67
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ФОТОРЕАЛИСТИЧЕСКИЕ ИЗОБРАЖЕНИЯ / ТРАССИРОВКА ЛУЧЕЙ / МЯГКИЕ ТЕНИ / АЛГОРИТМ ТЕНЕВЫХ КАРТ / АЛГОРИТМ ТЕНЕВЫХ ОБЪЕМОВ / МЕТОД СВЕТОВЫХ СЕТОК / PHOTOREALISTIC RENDERING / RAY TRACING / SOFT SHADOWS / SHADOW MAP / SHADOW VOLUME / LIGHT MESHES METHOD

Аннотация научной статьи по математике, автор научной работы — Дебелов Виктор Алексеевич, Новиков Илья Евгеньевич

В данной статье авторы рассматривают задачу сложности расчета четких теней и генерации мягких теней в рамках алгоритма рекурсивной лучевой трассировки Виттеда [Whitted, 1980]. На основании четких формулировок показаны преимущества и недостатки популярных алгоритмов генерации четких теней, построенных на основе методов «теневых карт» и «теневых объемов». Рассмотрены их модификации, позволяющие генерировать мягкие тени. Сформулирован метод световых сеток, приведены методы его ускорения. Определено место метода световых сеток во всей палитре алгоритмов, являющихся модификациями алгоритма Виттеда.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Soft Shadow Generation via Recursive Ray Tracing

The problem of computational complexity for a calculation of hard shadows and generation of soft shadows via the light backwards recursive ray tracing algorithm is considered. Basing on exact formulations advantages and drawbacks of popular algorithms for hard shadow generation are demonstrated. Along with basic «shadow map» and «shadow volume» algorithms their modifications that allow to produce soft shadows are considered too. The light meshes method (LMM) is formulated, and algorithms developed for its acceleration are described. Also in the paper are defined the place and value of LMM in the whole palette of Whitted-like algorithms.

Текст научной работы на тему «Генерация мягких теней при использовании алгоритма трассировки лучей»

УДК 004.925.3

В. А. Дебелов 1 2, И. Е. Новиков 2

1 Новосибирский государственный университет ул. Пирогова, 2, Новосибирск, 630090, Россия

2 Институт вычислительной математики и математической геофизики СО РАН ул. Акад. Лаврентьева, 6, Новосибирск, 630090, Россия

E-mail: [email protected]

ГЕНЕРАЦИЯ МЯГКИХ ТЕНЕЙ ПРИ ИСПОЛЬЗОВАНИИ АЛГОРИТМА

ТРАССИРОВКИ ЛУЧЕЙ *

В данной статье авторы рассматривают задачу сложности расчета четких теней и генерации мягких теней в рамках алгоритма рекурсивной лучевой трассировки Виттеда [Whitted, 1980]. На основании четких формулировок показаны преимущества и недостатки популярных алгоритмов генерации четких теней, построенных на основе методов «теневых карт» и «теневых объемов». Рассмотрены их модификации, позволяющие генерировать мягкие тени. Сформулирован метод световых сеток, приведены методы его ускорения. Определено место метода световых сеток во всей палитре алгоритмов, являющихся модификациями алгоритма Виттеда.

Ключевые слова: фотореалистические изображения, трассировка лучей, мягкие тени, алгоритм теневых карт, алгоритм теневых объемов, метод световых сеток.

1. Введение

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

Существуют разные алгоритмы реалистической визуализации, выбор конкретного алгоритма для применения на практике зависит от цели, для которой создается изображение. Например, для компьютерных игр высокая скорость расчета изображения приоритетнее высокого качества изображения, недостаток качества часто компенсируется высокой динамикой видеоряда. В этой области применяется алгоритм сканирующей строки - OpenGL 1 и DirectX 2. Если высокое качество изображения и физическая корректность приоритетнее скорости расчета, подходящими алгоритмами являются вычислительно трудоемкие излучатель-ность [Cohen, Wallace, 1993; Foley et al., 1990] и Monte-Carlo path tracing [Foley et al., 1990]. Но в подавляющем большинстве случаев на практике требуется решение задачи реалистической визуализации, сбалансированное по скорости расчета и качеству изображения. На современном этапе этому критерию наиболее полно отвечает алгоритм обратной рекурсивной лучевой трассировки (ОРЛТ), известный как light-backwards recursive ray tracing, который был введен Виттедом еще в 1980 г. [Whitted, 1980] и до сих пор в основном применяется на практике.

Анализ трехмерных сцен, используемых на практике, показывает, что они содержат лишь небольшое число полупрозрачных объектов, либо вовсе не содержат их. В этом несложно убедиться, если взять в качестве примера популярную компьютерную игру Quake3 или ани-

* Работа выполнена при финансовой поддержке РФФИ (проекты № 06-07089216-а, 08-07-12094-офи).

1 http://www.sgi.com/products/software/opengl/.

2 http://msdn.microsoft.com/en-us/directx/default.aspx.

3 http://www.idsoftware.com/games/quake/.

ISSN 1818-7900. Вестник НГУ. Серия: Информационные технологии. 2009. Том 7, выпуск 2 © В. А. Дебелов, И. Е. Новиков, 2009

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

2. Обратная рекурсивная лучевая трассировка

Рассмотрим задачу рендеринга - расчета реалистического изображения трехмерной сцены при помощи алгоритма ОРЛТ.

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

• В каждой точке поверхности определены свойства отражения, которые задаются коэффициентами: kd - коэффициент диффузного отражения, ks - коэффициент зеркального отражения, kt - прозрачность, na, nt - показатели преломления среды с внешней (куда направлена нормаль) и внутренней сторон поверхности.

• Для поверхности определена операция пересечения с лучом.

• В каждой точке поверхности P определена нормаль.

• Все объекты сцены задаются в декартовой мировой системе координат XYZ .

Сцена освещается nL точечными источниками освещения Ц, специфицированными ин-тенсивностями излучения Ii и позициями в пространстве LPt, i = 1,...,nL .

Рис. 1. Схема ОРЛТ

Камера - это набор параметров, характеризующих наблюдателя: позиция и ориентация в пространстве (где стоит наблюдатель, куда он смотрит, наклон вертикальной оси наблюдателя), высота и ширина экрана (поле зрения наблюдателя).

Алгоритм ОРЛТ заключается в попиксельном расчете изображения (рис. 1). Через каждый пиксель выпускается луч из камеры в сцену. Отыскивается ближайшая точка пересечения луча со сценой, и значение закраски пикселя рассчитывается, исходя из свойств материала поверхности сцены в точке и источников освещения, из которых она видна. Пусть луч из ка-

4 http://shrek.com.

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

Следуя [Foley et al., 1990] 5, формулу расчета значения закраски в точке P по ОРЛТ IRT (P) можно выразить следующим образом:

Irt (P) = IakaOd + £ V(LP,P) x fatt iIi ГkdOd ((, Д ) + ksOs ((, V) i=1 Г

ksIr + ktIt, (1)

здесь (,) - скалярное произведение, а все значения берутся в некоторой данной объектной точке P поверхности сцены; IRT - искомая интенсивность закраски; Ia и ka - интенсивность и коэффициент отражения рассеянного света, соответственно; Od - диффузный цвет поверхности; fatt i - коэффициент ослабления интенсивности i -го источника в зависимости от расстояния; Os - цвет зеркальной компоненты; nShiny - степень зеркальности; N, Di,Rf и

V - это нормаль, направление на i -й источник, соответствующий ему вектор направления отражения и направление на камеру, соответственно; Ir - интенсивность, пришедшая с направления отраженного вектора (от точки Q на рис. 1); It - интенсивность, пришедшая через поверхность из-за прозрачности (от точки G). Функция видимости V(LPt, P) может принимать значение 1, если позиция i -го точечного источника света видна из точки P и 0 иначе. Эта функция говорит о том, находится тестируемая точка в тени i -го источника (значение 0), или освещена им (значение 1).

Кратко формула (1) переписывается в виде

IRT (P) = Ambient + URT (P) + ksIr + ktIt. (2)

Выражение для IRT без последних двух слагаемых характеризует отсутствие рекурсии и

прозрачности. В таком случае дерево лучей не строится, т. е. ОРЛТ заменяется нерекурсивной обратной лучевой трассировкой (ОЛТ), также этот алгоритм расчета часто называется ray casting, а модель освещенности называется локальной моделью освещенности с тенями. Возможны и более сложные, чем формула (1), расчетные формулы, но всех их с точки зрения нашей задачи можно обобщить в следующей записи:

nL

Urt (P) = IV (LP, P)Q(L,, P), (3)

i=1

где Q(Li,P) характеризует конкретную локальную модель освещенности, т. е. обеспечивает расчет освещенности точки P на основе характеристик источников и поверхности сцены в этой точке. Существует много конкретных формул расчета - выражений для Q(Lt, P) (см., например: [Foley et al., 1990; Роджерс, 1989]). Первое слагаемое в формулах (1) и (2) мы также опустили из внимательного рассмотрения, поскольку во всех модификациях ОРЛТ оно неизменно.

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

3. Камера, буфер глубины, изображение

Классическую модель камеры Cam(Oc, Ac,Vup,dc,w,h), которая применяется в подавляющем большинстве приложений и алгоритмов, можно представить следующим образом (рис. 2).

5 См. также: http://www.web3d.org/x3d/ specifications/vrml/ISO-IEC-14772-VRML97/.

Рис. 2. Модель камеры

• Точка Oc - положение наблюдателя, или «фокус» камеры, или верхушка камеры.

• Точка внимания Ас - направление OcAc задает ось камеры и направление съемки или вида.

• Vup - «вектор вверх», задающий крен камеры.

• dc - расстояние от наблюдателя до плоскости изображения.

• Система координат камеры XCYCZC с началом в точке йс определена однозначно через Ac и Vup . Для сохранения правосторонности системы координат камеры ось Zc направлена

противоположно направлению вида.

• П - порт вывода - прямоугольник на плоскости изображения размерами 2w х 2h перпендикулярный оси камеры. Ось камеры проходит через его центр. На нем введена двумерная декартова система координат UV, начало которой в центре прямоугольника. Ось V

строится однозначно по вектору V .

• На П формируются карта глубины D и изображение F .

На прямоугольнике порта вывода [-w,w]х[-h,к] в системе координат UV построим функцию D(u,V), которую будем называть картой глубины. Из точки OC через точку (^ V) е П проведем луч в пространстве сцены. Если этот луч не пересекается с поверхностью сцены, мы отмечаем этот факт, полагая D(u, V) = -1. В противном случае в качестве D(u, V) берем значение расстояния от точки Oc до ближайшей точки пересечения луча с объектами сцены. Отметим, что построенная функция в общем случае разрывна.

Построим вторую функцию F(^ V) на том же прямоугольнике П , которую будем называть изображением. Аналогично предыдущему из точки Oc через точку (п,V) еП проведем луч в пространстве сцены. Рассматриваем ближайшую к камере (к Oc) точку пересечения этого луча с поверхностью сцены - точку P (см. рис.1), и в качестве F(^V) берем интенсивность освещенности этой точки. Если пересечений луча со сценой нет, то F(^ V) = —1, чтобы обозначить факт фона изображения. Расчет искомой интенсивности может быть проведен любым алгоритмом по любой модели освещенности. Поскольку мы рассматриваем ОРЛТ, то будем считать, что значение интенсивности рассчитано по формуле (1). Полученное изобра-

жение идеально, оно реалистично отображает сцену и свободно от артефактов. По сути дела, таким образом мы рассчитываем «фотографии».

Введем оператор Tr, который переводит координату точки сцены из системы камеры XcYcZc в мировую систему координат сцены XYZ : P(u,v,wP(x,y,z), т. е. Tr(u,v, w) = (x, y, z).

На практике функции D и F рассчитываются только в ряде точек порта вывода, что приводит к возникновению артефактов. Для получения дискретных аналогов изображения и карты глубины на прямоугольник П накладывается сетка из N x M квадратных пикселей. Не ограничивая общности, будем считать, что при расчете дискретных аналогов лучи пускаются через центры пикселей. Дискретное изображение обозначим через FB или FB[N,M] и будем называть буфером кадра. Аналогично для дискретной карты глубины введем обозначение DB или DB[N,M] и будем называть буфером глубины. Число пикселей N x M характеризует разрешение буферов.

Примечания.

1. Буфера глубины и кадра рассчитываются по требованию.

2. Часто используемый прием субпиксельного рендеринга также вкладывается в описанную схему. В этом случае N и M увеличиваются в требуемое число раз.

4. Теория метода теневых карт

4.1. Непрерывный случай. Идею алгоритма теневых карт (АТК) [Williams, 1978] рассмотрим по шагам для сцены с одним источником L : интенсивность I, позиция в сцене LP .

1. Строим камеру Cam(Oc,Ac,Vup,dc,w,h) для получения изображения сцены. Оператор перевода координат TrCam . Порт вывода nCam . Рассчитываем буфер глубины DCam .

2. Для источника L строим камеру LCam(LP,AL,VupL,dL,wL,hL). Выбор точки внимания Al и направления вверх VupL не оказывает влияния на дальнейшие рассуждения, поэтому мы на этом вопросе здесь не останавливаемся. Порт вывода ПL . Оператор перевода координат TrL . Строим карту глубины DL , которую назовем полной теневой картой.

3. Строим изображение сцены FCam в камере Cam, опираясь на обе карты глубины.

3.1. Если глубина изображаемой точки w = DCam(u,v) = —1, т. е. это точка фона, полагаем FCam (u, v) = -1, т. е. цвет фона. Выход.

3.2. Иначе вычисляем (x,y,z) = TrCam(u,v,w) - координаты изображаемой точки в мировой системе координат.

3.3. Вычисляем расстояние до источника d = 11(x,y,z) -LP||.

3.4. Переводим в систему координат порта вывода камеры источника LCam : (uL,vL, wl) = Tr[\x,y, z).

3.5. Выбираем из карты глубины камеры источника значение dL = DL(uL,vL).

3.6. Если dL < d, то источник заслонен от тестируемой точки (x,y,z) некоторой другой точкой поверхности сцены, и, следовательно, вклад источника в освещение данной точки считать не надо, он равен нулю.

3.7. Иначе рассчитываем получаемую за счет источника интенсивность тестируемой точки по формуле (1) и добавляем в FCam(u,v).

В случае нескольких источников необходимо строить столько же камер для них.

4.2. Дискретный случай. В действительности мы не имеем возможности считать непрерывные изображения. Как правило, они считаются на некотором равномерном растре из пикселей, наложенном на прямоугольник nCam. Дискретное изображение - буфер кадра FBCam [ NCam, MCam ] - это рассчитанный массив значений искомых интенсивностей. Аналогично и буфер глубины имеет дискретную структуру - массив DBCam [ NCam, MCam ] значений глу-

бины. Аналогично для камеры из источника рассчитывается буфер глубины ОБЬ [Ыь,Мь ], который обычно называется теневой картой. Размерности растров обеих камер в общем случае разные.

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

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

Пусть мы определяем интенсивность в центре некоторого пикселя - точке (и, V) е ПСат . Согласно алгоритму из п. 4.1 на шаге 3.4 получаем (иЬ,vЬ) е ПЬ . Это точка прямоугольного порта вывода камеры источника, но, как правило, не центр пикселя этого порта. Все артефакты на изображениях в реализациях метода теневых карт возникают именно из-за этого. Какое значение взять в качестве йЬ ? Можно применить различные подходы:

• Взять из ближайшего центра пикселя.

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

• Сделать более мелкий растр Ыь х МЬ для теневой карты ОБЬ.

Все это достаточно приемлемо работает, пока изображаемая точка находится вдали от границы поверхности примитива. Но мы указывали, что настоящая неизвестная функция буфера глубины ОЬ разрывна, а по дискретным значениям из ОБЬ [ЫЬ,МЬ ] мы этот факт установить не можем.

Таким образом, избежать артефактов в методе теневых карт невозможно. Пользователь может для отдельной сцены подобрать тем или иным способом разрешение растров обеих камер, их ракурсы и т. д. для того, чтобы убрать все артефакты. Но если ему приходится делать фильм по динамической сцене, артефакты с большой вероятностью проявятся на промежуточных кадрах. Единственный случай, когда расчет будет точным: когда источник и наблюдатель находятся в одной точке.

4.3. Примеры артефактов на изображениях. На рис. 3, а мы видим теневую карту, рассчитанную для сцены, изображенной на рис. 3, б.

а б

<

Рис. 3. а - теневая карта; б - алиасинг («А») и протечки света / тени («П»)

А

П

Поскольку теневая карта - это информация о глубине точек в сцене, представленная таблицей конечного размера, неизбежны ошибки при вычислении видимости. Алиасинг

(aliasing) включает в себя целую группу артефактов, присущих АТК, наиболее известное проявления алиасинга - «зубчатая» граница тени. Этот артефакт проявляется, когда нескольким пикселям изображения соответствует один и тот же элемент теневой карты. В таком случае зритель способен различить проекции отдельных прямоугольных элементов теневой карты на изображении, что делает границу тени неровной. Протечки света (light leaks) -другой артефакт, выражающийся в виде темных (светлых) полос или пятен, например, на стыках некомпланарных полигонов. Это обусловлено тем, что в процессе расчета могут ошибочно использоваться элементы теневой карты, соответствующие частям сцены, лежащим за непрозрачной преградой. Тогда свет (тень) как бы «протекает» сквозь преграду.

Еще одна проблема АТК - зависимость качества изображения от камеры источника LCam и основной камеры изображения Cam . LCam определяет телесный угол части сцены, соответствующей одному элементу (пикселю) теневой карты, увеличение телесного угла приводит к проявлению алиасинга. Например, при приближении источника к сцене часть сцены, видимая источником, уменьшается. Возникает необходимость увеличивать раствор камеры, что приводит к увеличению телесного угла и, следовательно, алиасингу. Аналогичный эффект получаем при приближении Cam к сцене. Построив дополнительные теневые карты или увеличив размер теневых карт, можно решить проблему, но только для фиксированной конфигурации сцены. Не предложено реализации АТК, которая гарантированно позволяла бы получать изображения, свободные от артефактов. Например, в динамической сцене, где параметры камер LCam и Cam изменяются, следует ожидать проявления графических артефактов. На рис. 4 изображена сцена, освещенная одним источником, который находится над чайником, Cam и LCam имеют близкие позиции, АТК в этом случае дает аккуратную тень, без артефактов. Изменим положение камеры Cam, на границе тени проявился алиасинг (рис. 4, б).

а б

Рис. 4. Зависимость от LCam и Cam : из изображения (а) можно получить (б) сдвигом камеры

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

АТК теоретически позволяет получать изображения с тенями и в рекурсивном случае. Однако подбор параметров расчета, позволяющих получить изображения без графических артефактов, становится еще более сложным даже для статических сцен, если в принципе возможным. На рис. 5, а, б изображение сцены, состоящей только из диффузных поверхностей, рассчитанное в Autodesk 3ds Max по ОРЛТ и АТК соответственно. В изображении, полученном по АТК, присутствует алиасинг. Добавим в сцену зеркально отражающий объект (рис. 5, в, г). В изображении, полученном по АТК, на границе пола и зеркала проявились протечки света / тени, причем протечки присутствуют как перед зеркалом, так и в зеркале. Точно так же алиасинг виден как на полу, так и в отражении. Иначе говоря, за счет рекурсии количество артефактов непредсказуемо увеличивается, поэтому из практических соображений АТК не применяется, когда требуется получить качественное изображение.

Рис. 5. ОРЛТ (слева) и АТК (справа): а и б - расчет без рекурсии, алиасинг; в и г - рекурсивный расчет, протечки света / тени; д и е - тень от полупрозрачного объекта

Еще один недостаток АТК - неспособность работать с полупрозрачными объектами. Добавим в нашу сцену полупрозрачный объект, который отбрасывает частичную тень в изображении, рассчитанном по ОРЛТ (рис. 5, д). АТК в том же случае дает полную тень, как если бы полупрозрачный объект был непрозрачен (рис. 5, е). Этот недостаток сужает область применимости АТК до класса сцен, содержащих только непрозрачные объекты.

5. Теория метода теневых объемов

Алгоритм теневых объемов (АТО) [Crow, 1977] для определения видимости использует дополнительные геометрические построения, называемые теневыми объемами (рис. 6). Теневые объемы - это полубесконечные поверхности, получаемые вытягиванием геометрии силуэтов объектов от источника на бесконечность. Если изображаемая объектная точка попадает внутрь хотя бы одного теневого объема, источник не виден - точка в тени источника.

5.1. Непрерывный случай. Пусть сцена состоит из гладких поверхностей. Для камеры Cam, введенной в п. 4, определим понятие силуэта ^(O) для объекта сцены O . ^(O) - это множество всех точек P примитива сцены O , которые удовлетворяют, по крайней мере, одному из условий.

• P является граничной точкой поверхности примитива.

б

а

в

д

• Луч OcP , выпущенный из верхушки камеры источника LCam, перпендикулярен нормали к поверхности примитива п ^).

Рис. 6. Схема алгоритма теневых объемов

Теневой объем V(O, L) примитива O относительно источника L - это поверхность, образованная лучами, выпущенными из верхушки камеры источника и проходящими через все точки ^(O). В общем случае эта поверхность кусочно-непрерывная, т. е. представляет собой несколько поверхностей. Здесь требуется так задавать дополнительные поверхности, чтобы нормаль смотрела вовне теневого объема. На практике это очень просто решается алгоритмически 6.

Алгоритм метода теневых объемов можно выразить следующим образом.

1. Строим камеру Cam(Oc,Ac,Vup,dc,w,h) для получения изображения сцены. Оператор перевода координат Trcam. Порт вывода nCam .

2. Рассчитываем карту глубины DCam. Этот расчет заключается в расчете изображения сцены FCam в камере Cam при выключенном расчете освещенности, т. е. IRT (P) = Ambient.

3. Для всех объектов сцены строим теневые объемы, их объединение назовем теневым объемом SV(L) сцены относительно источника L. Очевидно, что это кусочно-непрерывная поверхность.

4. Вводим еще одну функцию SCam на прямоугольнике ПCam, которую будем называть стенсил. В точках (u,v) enCam, где DCam(u, v) = -1 полагаем SCam(u,v) = -1. Иначе SCam (u,v) = c, где c - некоторый счетчик, вычисляемый по следующему алгоритму.

5. Находим точку P(u,v, w) в системе координат камеры, где w = Dcam(u,v) ^-1 (не фон), переводим ее координаты в мировую систему (x, y, z) = TrCam (u, v, w). Пускаем луч OcP в пространстве сцены и подсчитываем число пересечений этого луча с поверхностями из теневого объема SV(L). Вначале счетчик c = 0 .

5.1. После нахождения очередного пересечения луча OcP с теневым объемом в некоторой точке Q проверяем по карте глубины: если OcQ > DCam(u, v) = OcP , то переходим к

6 http://msdn.microsoft.com/en-us/directx/default.aspx.

поиску следующей точки пересечения, поскольку найденная точка не может заслонять тестируемую точку P, она дальше от камеры.

5.2. Иначе анализируем скалярное произведение t = (OcP,n(Q)), где n(Q) - нормаль в точке Q .

5.3. Если t = 0, то счетчик не изменяется. Если t < 0, то увеличиваем счетчик c = c +1. Это означает, что луч вошел в очередной теневой объем очередного примитива.

5.4. Если t > 0, то уменьшаем счетчик c = c — 1. Это означает, что луч вышел из очередного теневого объема очередного примитива. На рис. 6 проиллюстрирован этот алгоритм.

6. Строим изображение сцены FCam в камере Cam . При этом включен расчет освещенности (расчет по формуле IRT (P) := IRT (P) + URT (P)).

6.1. Если w = DCam (u, v) = —1, т. е. это точка фона, и на шаге 2 она уже была определена FCam (u, v) = —1, т. е. цвет фона. Выход.

6.2. Если SCam(u, v) > 0, т. е. эта точка в тени источника L, а на шаге 2 алгоритма FCam (u, v) уже была рассчитана. Выход.

6.3. Определяем координаты объектной точки в пространстве сцены (х, y, z) = TrCam (u,v, w) и вычисляем вклад URT (P) источника L в освещенность точки, опираясь на формулу (2).

5.2. Дискретный случай. Данное изложение опирается на возможности современных графических плат. Реализация алгоритма теневых объемов на центральном процессоре не имеет

практического смысла. В дискретном случае на прямоугольнике ПCam рассчитываются массивы FBCam [ NCam,

MCam ] - буфер кадра, DB^ [ NCam, MCam ] - буфер глубины и

SBCam [NCam ,MCam ] - стенсил-буфер.

Шаг 2 алгоритма заключается в однократном применении операции «Z-буфер», когда в FBCam [NCam,MCam ] формируется изображение без учета влияния источников, а в буфере DBCam [ NCam, MCam ] глубины ближайших к камере точек сцены.

Шаг 5 также заключается в однократном применении операции «Z-буфер», когда в массиве SBCam [NCam,MCam ] насчитываются значения видимости источника. Отметим, что здесь вместо поверхностей сцены проецируются поверхности теневого объема.

Шаг 6: опять однократное применение операции «Z-буфер», когда в FBCam[NCam,MCam] изображение дополняется вкладом источника в интенсивность пикселя.

Общие замечания. Поскольку задача определения силуэта объекта очень сложна, все известные реализации АТО выполнены для сцен, состоящих из полигональных сеток. В этом случае силуэт приближается объединением ребер двух смежных полигонов, один из которых обращен к источнику, другой - от источника.

Алгоритм рассчитывает изображения свободные от артефактов, свойственных АТК, поскольку в отличие от АТК он оперирует с одним и тем же массивом пикселей при организации буферов. Тем не менее, дискретная версия АТО зависит от точности выполнения операции «Z-буфер» (которая достаточно ощутима) и в каждом из трех ее применений может дать сбой. В случае, когда источник близок к объекту, вблизи силуэта объекта проявляются артефакты (рис. 7), причина которых - самозатенение. Поскольку для полигональных сцен силуэт объекта приближен объединением ребер полигонов, каждый полигон либо вовсе не затеняется объектом, либо целиком в тени объекта. Полигоны, ребра которых образуют силуэт, могут быть затенены частично, но они ошибочно затеняются целиком.

Численные эксперименты для сцены, содержащей 50 тыс. треугольников и освещенной разным числом источников показали, как и ожидалось, что время расчета по АТО линейно зависит от числа треугольников и числа источников в сцене, но составляет доли секунды на графическом акселераторе. Отметим, что современный графический акселератор позволяет строить теневые объемы без участия центрального процессора. В сравнении с АТК вычислительные затраты АТО существенно больше (см.: [Chan, Durand, 2004]). Поскольку теневые объемы вытянуты «на бесконечность», после растеризации каждый из них может занимать

большую часть прямоугольника изображения, что в совокупности требует большого числа расчетов на акселераторе.

Рис. 7. Артефакты вблизи силуэта объекта

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

6. Комбинированные алгоритмы генерации теней

Алгоритмы АТК и АТО могут быть скомбинированы, чтобы получить алгоритм, которому присущи их лучшие качества. Примером этого является Hybrid shadow rendering algorithm (HSRA) [Chan, Durand, 2004]. Идея HSRA состоит в том, чтобы использовать быстрый АТК для расчета теней всюду, кроме границ тени, потому что на границах тени АТК дает алиа-синг. Естественно сделать предположение, что если применить значительно более медленный АТО только для расчета границ тени, то полученное изображение будет свободно от алиасинга, а итоговое время расчета изображения будет меньше, чем при расчете с использованием базового алгоритма ОРЛТ. Согласно [Ibid.], для некоторых сцен было достигнуто ускорение более чем в 2,5 раза.

Рассмотрим кратко основную идею на основе изложенного в предыдущих разделах.

1. Для камеры LCam рассчитывается теневая карта DL [NL,ML ] .

2. Для каждого пикселя (и, v) е nCam определить, принадлежит ли он границе тени. Если принадлежит, выполнить расчет интенсивности по АТО, иначе выполнить расчет по АТК.

Чтобы определить принадлежность пикселя границе тени на шаге 2, расстояние от изображаемой точки до источника сравнивается со значениями глубины из четырех ближайших пикселей теневой карты DL [NL,ML ] . Если результаты сравнения совпадают (все соседние пиксели освещены или в тени одновременно), пиксель не принадлежит границе тени, иначе -принадлежит.

Отметим, что HSRA решает только одну проблему АТК, а именно: алиасинг на границе тени. Все остальные проблемы АТК присущи и HSRA - это протечки света / тени и зависимость от взаимного расположения камеры и источника.

7. Четкие и мягкие тени

Почему исследователи уделяют так много внимания генерации теней в изображении трехмерной сцены (см. обзоры, посвященные теням: [Hasenfratz et al., 2003; Woo et al., 1990])? Исследования [Hasenfratz et al., 2003] подтверждают важность теней в восприятии трехмер-

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

В ОРЛТ используется точечный источник освещения, поэтому ОРЛТ теоретически может производить только четкие тени (рис. 8, слева), характеризующиеся резкой границей между освещенной и неосвещенной областями, тогда как на практике (в природе) мы чаще видим мягкие тени, имеющие плавный переход от освещенной области к неосвещенной (рис. 9, справа). Четкие тени часто порождают фантомы, т. е. иллюзию того, что тень является отдельным объектом сцены или рисунком на поверхности объекта. Мягкие тени не только повышают реалистичность изображения, но также несут дополнительную информацию: размеры и конфигурация источника, взаимное расположение источника, затеняющего объекта и затеняемого объекта. Рассмотрим далее, как можно получить мягкие тени, основываясь на ОРЛТ при расчете изображений. Заметим, что выражение «генерация теней» обобщает два разных понятия: «расчет теней» и «имитация теней».

7.1. Наивный подход. Мягкие тени можно получить с помощью ОРЛТ, если заменить объемный источник множеством точечных источников (рис. 8). Этот подход к генерации мягких теней назовем наивным (например, он реализован как «Area shadows» в Autodesk 3ds Max), т. е. ОРЛТ не изменяется (источник остается точечным), но изменяется освещение в сцене (множество точечных источников вместо одного). Наивный подход позволяет рассчитывать тени, корректные с точки зрения используемой модели освещения, но при этом требует очень больших вычислительных затрат: сотни и тысячи точечных источников, чтобы получить качественное изображение (см.: [Hasenfratz et al., 2003]).

Рис. 8. Наивный подход: 1 (слева), 5 (по центру) и 225 (справа) источников

На рис. 8 приводится 3 варианта расчета одной и той же сцены: слева представлено изображение с четкой тенью, т. е. сцена с одним источником; в середине изображение для сцены, в которой добавлены еще 4 источника близкие к исходному; справа изображение для 225 источников. Соотношение времен расчета изображений на рис. 8 выражается как 2 : 6 : 172. Даже для такой простой сцены видно, что время расчета изображения растет пропорционально числу источников. Этот факт подчеркивает актуальность исследований и разработки алгоритмов генерации (имитации) мягких теней в рамках ОРЛТ.

Основные характеристики наивного подхода:

• Алгоритм свободен от артефактов.

• Алгоритм правильно работает в рекурсивной постановке.

• Алгоритм правильно работает в случае наличия в сцене полупрозрачных поверхностей.

• Скорость расчета изображений во много раз медленнее, чем у базового ОРЛТ с одним точечным источником.

7.2. Актуальность разработки алгоритмов генерации мягких теней. Наивный подход позволяет создавать реалистичные изображения, но требует больших вычислительных затрат. На практике часто требуется быстрый расчет изображения, пусть даже с некоторым нарушением реалистичности. Это, прежде всего, относится к получению предварительных изображений при создании, например, трехмерного мультфильма. В таком случае дерево лучей, как правило, не строится, т. е. ОРЛТ заменяется нерекурсивным ОЛТ. При этом достаточно имитировать мягкие тени, создавая иллюзию реалистичности, например, мультфильм Shrek 7: тени в изображениях мягкие, и зрителю не важно, насколько точно они рассчитаны.

7 http://shrek.com.

Анализ существующих алгоритмов генерации мягких теней показывает, что большинство из них подходит только для быстрого получения предварительных изображений. Большинство алгоритмов генерации мягких теней основано на АТК и АТО, насчитывается более 30 модификаций, что подтверждает значимость этой задачи [Новиков, 2008] 8.

7.3. Метод теневых карт и мягкие тени. Рассмотрим один наиболее продвинутый алгоритм имитации мягких теней, имеющий в своей основе метод теневых карт, - это алгоритм Single sample soft shadows на основе карт глубины (SSSS) [Brabec, Seidel, 2002], который, по нашему мнению, дает наиболее сбалансированное решение по скорости расчета и качеству изображения в сравнении с подобными алгоритмами. Алгоритм расчета по SSSS (рис. 9) опишем, основываясь на описании алгоритма АТК.

1. Выполнить шаги 1, 2, 3.1 - 3.5 АТК.

2. Если dL < d, т. е. изображаемая точка P(x,y, z) в тени источника L, то для пикселя теневой карты (uL, vL) найти ближайший пиксель (pL, qL), такой что г =||(uL, vL) - (pL, qL)|| < R и DBl [pL, qL] > d, где R - максимальный радиус поиска. Другими словами, (pL, qL) - ближайший к (uL, vL) пиксель из освещенной области в пределах R, а r - расстояние до границы четкой тени.

3. Если (pL, qL) не был найден по достижении R, вклад источника L в освещенность

точки P равен нулю. Иначе определить значение видимости как V(LP,P) = 0,5 х (1 - r/R), рассчитать интенсивность для точки P по формуле (1) и добавить в FCam (u, v).

4. Если dL > d, т. е. изображаемая точка P освещена источником L, для пикселя теневой карты (uL,vL) найти ближайший пиксель (pL, qL), такой что r = ||(uL,vL) - (pL, qL)|| < R и DBl [pL, qL] < d . Иначе говоря, (pL, qL) - ближайший к (uL, vL) пиксель из области тени в пределах максимального радиуса R .

5. Если (pL, qL) не был найден по достижении R, определить значение видимости как

V(LP, P) = 1. Иначе определить значение видимости как V(LP, P) = 0,5 х (1 + r/R) . Рассчитать интенсивность для точки P по формуле (1) и добавить в FCam (u, v).

Рис. 9. Схема SSSS

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

На рис. 10 (слева) видны артефакты, которые присущи базовому АТК: алиасинг и протечки света / тени. В расчетах по SSSS [Ibid.] используются уникальные идентификаторы (ID) объектов сцены, которые необходимы, чтобы корректно обрабатывать ситуацию, когда изображаемая точка лежит в тени того же объекта, которому она принадлежит, т. е. самозатене-

8 См. также: http://www.nsc.ru/ws/YM2008/14366/Novikov.pdf.

ние. При проверке работоспособности алгоритма каждому треугольнику сцены был присвоен уникальный ГО, как если бы каждый треугольник был отдельным объектом сцены. При таком подходе к распределению ГО наблюдаются темные полосы на стыках треугольников, образующих изображенный объект. Поэтому был применен более сложный подход: компланарные треугольники получают одинаковый ГО. Видно (см. рис. 10, справа), что проблема решена лишь частично. Авторы исходят из предположения, что типичная трехмерная сцена - это набор отдельных объектов с разными ГО. В нашем случае изображенная беседка является одним объектом. Ее можно разделить на несколько объектов, но для этого требуется либо разработать более сложный алгоритм распределения ГО (авторы 8888 не исследовали эту проблему), либо специально подготавливать сцену для расчетов по 8888, что потребует от дизайнера времени, пропорционального сложности сцены. Но даже предварительная подготовка сцены не способна полностью решить проблему. На стыке верхней и нижней частей крыши беседки (см. рис. 10), имеющих разные ГО, мы видим темную полосу. Но если объединить их (присвоить одинаковый ГО), верхняя часть крыши не сможет затенять нижнюю по 8888. Следовательно, в этом случае темная полоса является неустранимым артефактом.

Рис. 10. SSSS, артефакты

Таким образом, на примере SSSS показано, что алгоритмы генерации мягких теней, основанные на АТК не только страдают от тех же артефактов, что и базовый алгоритм, но и имеют свои специфические недостатки.

SSSS был предложен в 2002 г. и часто используется в качестве примера того, как можно получить мягкие тени при помощи АТК. Разработка алгоритмов генерации мягких теней продолжается по сей день. Одной из недавних работ является Soft shadow mapping by back-projection (SSMB) [Guennebaud et al., 2006]. SSMB представляет собой комбинацию алгоритмов АТК и Backprojection [Drettakis, Fiume, 1994] для расчета теней от прямоугольных источников. Идея Backprojection состоит в том, что поверхности сцены разбиваются на конечное число элементов, и для определения видимости источника в изображаемой точке элементы, лежащие между точкой и источником, проецируются на поверхность источника. Площадь проекции элементов на источник, отнесенная к площади источника, дает искомое значение видимости. В SSMB используется та же идея, но на источник проецируются не элементы сцены, а пиксели теневой карты, точнее их представление в пространстве сцены. Для пикселя теневой карты с координатами (u, v) и глубиной w получим точку в мировых

координатах (х, y, z) = TrCam (u, v, w). Построим прямоугольник с центром в этой точке, плоскость которого параллельна плоскости источника, а стороны параллельны сторонам источника. Длины сторон прямоугольника рассчитываются исходя из размеров теневой карты wL и hL и глубины w . Полученный прямоугольник является представлением пикселя теневой карты в объектном пространстве. Можно сказать, что совокупность таких прямоугольников, полученных для каждого пикселя теневой карты, дает «восстановленную» геометрию сцены.

источник

Рис. 11. SSMB, артефакты

Поскольку «восстановленная» геометрия разрывна, между прямоугольниками, соответствующими двум смежным пикселя теневой карты могут быть щели (gaps) или перекрытия (overlapping), что изображено на рис. 11. Щели и перекрытия приводят к протечкам света / тени, так как вклад каждого прямоугольника в видимость источника вычисляется независимо от остальных прямоугольников. Алиасинг также присутствует в изображениях, полученных по SSMB (см.: [Guennebaud et al., 2006]). Таким образом, SSMB в полной мере наследует недостатки АТК. Позднее SSMB был доработан с целью устранения проблемы щелей и перекрытий [Guennebaud et al., 2007]. Авторы SSMB отмечают, что, хотя доработанный алгоритм полностью исключает эту проблему, алиасинг, тем не менее, по-прежнему остается актуальным недостатком SSMB.

7.4. Метод теневых объемов и мягкие тени. Среди алгоритмов генерации мягких теней, основанных на АТО, наиболее часто упоминается алгоритм Soft shadow volumes (SSV) [As-sarsson, Akenine-Möller, 2003]. SSV формулируется для источников произвольной формы, но авторами предложена реализация только для плоских прямоугольных источников. Помимо теневых объемов в SSV используются клинья (wedges) - полубесконечные объемы, подобные теневым объемам. Каждый клин строится из ребра силуэта объекта. Если назначение теневого объема - ограничить область сплошной тени, то назначение клина - ограничить область полутени. Схему построения клина можно увидеть на рис. 12.

Pe6f

d

Источник

произвольной

формы

клин

Рис. 12. Построение клина

Расчет изображения осуществляется в той же постановке, что для алгоритма АТО. На прямоугольнике П Сат вводим еще одну функцию видимости ^гСат . Подобно другим функци-

ям в алгоритме используется ее сеточный аналог - массив WBCam [NCam,MCam ] - буфер видимости. Изначально во всех точках (u,v) еПCam полагаем WCam(u,v) = 1. Также нам понадобится еще одна стенсил-функция для локальных расчетов STCam на ПCam и соответствующий

ей буфер STBCam [NCam,MCam ] . Алгоритм расчета по SSV:

1. Выполнить шаги 1 - 5 АТО. На шаге 2 расчет изображения сцены при включенном расчете освещенности, т. е. IRT(P) = URT(P).

2. Если SCam (u, v) > 0, т. е. эта точка в тени источника L, тогда WBCam (u, v) = 0.

3. Обнулить значения второго стенсила, т. е. STCam(u,v) = 0 для всех (u,v) е nCam.

4. Для всех ребер силуэтов объектов сцены построить клинья. Клин строится из ребра силуэта объекта, а ребру соответствует четырехугольник вытянутый «на бесконечность». Если спроецировать все такие четырехугольники на источник освещения относительно изображаемой точки, то площадь проекции будет видимой площадью источника освещения (рис. 13). Эта идея заимствована из алгоритма Backprojection [Drettakis, Fiume, 1994].

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Рис. 13. Вычисление видимой площади источника освещения

5. Выполнить шаг 5 (подшаги 5.1-5.4) для сцены, состоящей из клиньев, формируя дополнительный стенсил STCam.

6. Если STCam (u,v) > 0 , то эта точка в области полутени, определить видимую часть источника и сохранить в WCam (u, v).

7. Рассчитать итоговое изображение сцены как IRT (P) = WBCam (u, v)IRT (P) + Ambient.

На шаге 6 для изображаемой точки рассчитывается видимая часть источника освещения. Таким образом, суть SSV сводится к следующему: получить четкие тени, используя стандартный АТО, определить области изображения, в которых должна быть полутень, и только для этих областей применить Backprojection.

Замечание. Алгоритм SSV в действительности не рассчитывает правильно освещенность сцены прямоугольными источниками. Скорее это попытка генерации мягких теней от точечных источников, которые имитируются в виде прямоугольных. В данном случае, «мягкость» тени, т. е. ширина зоны полутени, существенно зависит от того как по отношению к конкретной объектной точке ориентирован мнимый прямоугольник. Можно, конечно, использовать веер из прямоугольников, но тогда исчезают преимущества SSV, связанные с ускорением расчета.

8. Метод световых сеток

8.1. Теория метода. Метод световых сеток (МСС) является оригинальной модификацией ОРЛТ, разработанной для создания мягких теней в изображении пространственной сцены. Первый вариант метода описан в работе [Debelov, Sevastyanov, 2004]. Уже на том этапе МСС позволял получать мягкие тени, не менее реалистичные, чем с помощью алгоритмов, разработанных другими авторами. При этом МСС не ограничивался модификацией расчета видимости источников, но также модифицировал учет свойств поверхностей сцены и интенсив-ностей источников. Это создавало определенные трудности при сравнении изображений, полученных по МСС и по базовому ОРЛТ. Поэтому было принято решение обратиться к бо-

лее традиционному подходу к имитации теней и построить новый метод так, чтобы его связь с ОРЛТ была более явной, но при этом задействовать оригинальную идею МСС. МСС был кардинально переработан, его современное состояние, излагаемое в этой главе, было впервые описано в работе [Дебелов и др., 2005].

Световая сетка ЬМ = {хк } - это равномерная сетка с шагом к и размером кЬМ = ЫХМ х ИуМ х Ы1^ в пространстве сцены (рис. 14), каждая точка световой сетки хк (световая точка) хранит шкалу видимости для каждого источника.

Рис. 14. Световая сетка и схема МСС

Для расчета видимости в точке ближайшего пересечения луча с поверхностью (объектной точке) P строится интерполяционное множество DIM (P, r) радиуса r по следующему правилу:

Dim (P) = {x: x e LM,||P - x\\ < r, (n(P), x - P) > 0,V(P,x) = 1} . (4)

Из определения видно, что интерполяционное множество включает в себя только световые точки, лежащие на расстоянии меньшем r от точки P с видимой стороны поверхности и видимые точкой P . Результирующая видимость для объектной точки получается как взвешенная сумма значений видимости из световых точек интерполяционного множества. Не ограничивая общности, будем рассматривать случай обычного усреднения.

Аналогично формуле (2) базовую формулу расчета значения закраски в точке P по МСС представим как

Ilm (P) = Ambient + Ulm (P) + ksIr + ktIt. (5)

Одна и та же световая точка может применяться в расчете освещенности многих объектных точек, но мы должны учитывать кроме самого значения видимости световой точки из источника и взаиморасположение объектной точки P и источника Ц. Для этого вводится

[1, ((P),(P - Щ) )> 0

[0,иначе

которая говорит о том: источник освещает объектную точку спереди (значение 1) или сзади (0). Множество DIM (P, r) конечно, обозначим через m число его точек. Если DIM (P, r) = 0 , m = 0 . При вычислении UIM (P) возможны два случая:

• m Ф 0, тогда аналогично формуле (3) запишем основное отличительное выражение формулы метода световых сеток:

функция х( P, Ц) = ■

1

Ulm (P) =-Х

m k=i

nL

i=1

£v (LPt, xk )x( P, L )Q(L, P)

I I

-£v(L>,xk)x(P,L) |Q(L,,P)

m k=i

• т = 0, тогда значение интенсивности в точке Р по МСС рассчитаем по формуле (3), т. е. положим иш (Р) = икт (Р). Из экспериментов мы выяснили, что такое случается чрезвычайно редко, так например, для изображения размером 1000 х 1000 пикселей сцены, состоящей из 230 тыс. треугольников и 9 источников, было выявлено только 8 пикселей, в которых Бш (Р, г) = 0 . Очевидно, что наличие таких случаев не сказывается на скорости расчета.

1 т

Понятно, что 0 <—^У(LPi,хк)х(Р,Ц) < 1. МСС аппроксимирует решения, получаемые

т к=1

по ОРЛТ. Сравним формулы (3) и (6). Очевидно, что вдали от границ теней, где значения видимости для близких сеточных точек совпадают, результаты расчетов по формулам (3) и (6) также совпадают. Вблизи границ теней результаты, очевидно, отличаются, но если мы устремим шаг световой сетки к и радиус интерполяционной сферы г к нулю, то решение по МСС будет сходиться к решению по ОРЛТ.

Построение МСС как аппроксимации ОРЛТ имеет много преимуществ.

• МСС может работать в рекурсивной лучевой трассировке, что отражено в формуле (5).

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

• Поскольку МСС использует операцию пересечения теневого луча со сценой не в каждой объектной точке как ОРЛТ, а только в световых точках, то ожидалось, что МСС не сильно проигрывает ОРЛТ по скорости расчета изображения. Численные эксперименты это подтвердили.

• Как следствие предыдущего, МСС значительно выигрывает по скорости у наивного подхода расчета мягких теней и, следовательно, вполне может заменить последний в ряде приложений.

• МСС может быть встроен в любое приложение, осуществляющее расчет изображения на основе ОРЛТ.

Рис. 15. Изображения, полученные по ОРЛТ (слева) и МСС (справа)

На рис. 16 приведены графики времени расчета изображения по ОРЛТ и МСС для сцены, состоящей из 27 тыс. треугольников, габариты сцены по трем координатным осям: 400 х 200 х 350 (рис. 17). Слева график, демонстрирующий зависимость времени расчета от разрешения изображения. Сцена освещена двумя источниками, для МСС использованы параметры: шаг световой сетки к = 1, радиус интерполяционной сферы г = 3,1. Видно, что существует разрешение (для каждой сцены свое), начиная с которого расчет сцены по МСС быстрее расчета по ОРЛТ. Справа изображен график зависимости времени расчета от числа

источников в сцене. Разрешение изображения составляет 1024 х 1024 пикселей, для МСС использованы параметры: шаг световой сетки к = 2, радиус интерполяционной сферы г = 2,1. Для таких параметров МСС время расчета изображения при одном источнике мало отличается для ОРЛТ и МСС. С увеличением числа источников время расчета для ОРЛТ растет быстрее, чем для МСС. Эти результаты позволяют заключить, что с увеличением разрешения изображения и числа источников в сцене асимптотически МСС показывает лучшие результаты по скорости расчета изображения, чем ОРЛТ.

Рис. 16. Зависимость времени расчета по ОРЛТ и МСС от разрешения изображения (слева)

и числа источников (справа)

Рис. 17. Сцена «Child park»

8.2. Сравнение МСС с другими алгоритмами генерации мягких теней. Ни один из алгоритмов на базе АТК и АТО, не применим на практике в случае рекурсивной лучевой модели из-за наличия артефактов, на которые мы указывали выше. Для сцен, содержащих полупрозрачные поверхности, эти методы не применимы вообще, в то время как для метода световых

сеток было выполнено специальное исследование [Васильева и др., 2008], показывающее применимость.

9. Подходы к ускорению МСС

Основная операция, которая тормозит расчет изображений по ОРЛТ, - это операция пересечения луча со сценой. Тест видимости также производится на основе пересечения луча со сценой. Таким образом, трудоемкость ОРЛТ можно выражать в количестве тестов пересечения лучей со сценой. Все способы ускорения ОРЛТ автоматически являются способами ускорения МСС. В данном разделе рассматриваются методы ускорения (МУ), которые присущи только МСС.

9.1. МУ1 - применение структур ускорения. Операция пересечения луча со сценой является базовой как для ОРЛТ, так и для МСС. В МСС есть вторая базовая операция: проверка локальной видимости, т. е. вычисление V(P,x) в формуле (4), которая использует пересечение отрезка (короткого луча) со сценой. Чтобы добиться приемлемого времени расчета изображения по МСС, алгоритм пересечения луча (АПЛ) должен удовлетворять следующему критерию: вычислительные затраты на пересечение отрезка со сценой должны быть приблизительно пропорциональны длине этого отрезка. Существует множество АПЛ, отвечающих данному критерию - это АПЛ, использующие структуры ускорения [Glassner, 1984]. В численных экспериментах в качестве структуры ускорения для МСС было выбрано равномерное разбиение пространства (uniform grid).

9.2. МУ2 - использование шаблонов. При построении интерполяционного множества для объектной точки P строится сфера радиуса r . Для всех световых точек, попадающих в воображаемый куб, включающий в себя интерполяционную сферу, проверяется условие ||xt - P|| < r . Учитывая, что число точек в кубе больше числа точек, которые попадут в сферу,

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

Рис. 18. Куб с центрами световых точек (слева) и световая подсетка (справа)

Построим куб, включающий в себя все возможные световые точки для всех положений точки Р(Рх,Ру,Р2) между соседними точками световой сетки (рис. 18):

'ЬМ0х < Рх < ьми = ЬМ0х + И,

<т о у < Ру < 1М1 у = шо у + и,

ьмог < Р2 < м = ьмог + И.

Здесь ЬМ0 и ЬМ1 - точки световой сетки. Построим конечное множество точек, которые являются возможными центрами для интерполяционных сфер. Для этого каждую сторону куба разобьем на т равных отрезков - мы получили подсетку с шагом И/т (см. рис. 18). Для каждой точки подсетки построим интерполяционное множество, определим смещения

индексов для каждой точки множества относительно LM0 и запишем результат в файл. Если выполнить описанные действия для некоторых стандартных соотношений r/h (например, r/h = 1.1,1.2,..., 4.1), мы получим библиотеку файлов-шаблонов для быстрого построения интерполяционного множества. В процессе расчета для точки P определяется ближайшая точка подсетки, для этой точки из шаблона извлекаются смещения индексов световых точек, что дает интерполяционное множество, для которого остается выполнить проверки локальной видимости.

9.3. МУ3 - оптимизация по «граничным» и «внутренним» точкам. Количество проверок локальной видимости в свою очередь также может быть уменьшено. Идея состоит в том, что тест видимости первоначально проводится для точек b1,...,b6 (рис. 19), являющихся «граничными» для множества точек интерполяционной сферы. Если, например, точки b1 и b2 видны из точки P, то видна и точка r1. Если все граничные точки видны точкой P, то видны и все внутренние. В итоге для примера, изображенного на рис. 19, вместо 12 тестов видимости необходимы только 6. Эта идея интегрируется в предложенные шаблоны: граничные точки записываются в отдельный массив в шаблоне.

Рис. 19. «Граничные» точки

9.4. МУ4 - сеточная функция локальной видимости. Дополним описание пространственной сцены требованием телесности (solid) всех объектов. Заметим, что в реальном мире это требование выполняется всегда, в том числе и в большинстве модельных трехмерных сцен.

Рис. 20. «Внутренние» точки: а - попадание точки внутрь объекта; б - проверка попадания точки внутрь объекта

б

а

Будем исходить из предположения, что наиболее частый случай появления протечек света - это случай, когда в интерполяционную сферу попадают световые точки, находящиеся внутри какого-либо объекта сцены (рис. 20, а). Тест локальной видимости используется, чтобы отбраковать такие точки. Но попадание световой точки внутрь объекта достаточно определить один раз, только для одного источника. Далее эта информация может храниться вместе со световой точкой и использоваться во всех последующих расчетах.

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

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

Подход является нечувствительным к небольшим объектам, которые значительно меньше имитируемых объемных источников света. Действительно, свет от таких источников имеет свойство «огибать» объекты, поэтому можно считать, что данное свойство подхода не нарушает реалистичности изображения. В природе также можно наблюдать, что протяженные источники дают почти неразличимые тени для небольших объектов, например, тени от отдельных листьев дерева.

9.5. Результаты численных экспериментов. В табл. 1 и 2 представлены времена расчета для сцен «Gazebo» (см. рис. 15) и «Child park» (см. рис. 17) соответственно. Обе сцены освещены двумя источниками освещения. «Gazebo» содержит 300 треугольников, габариты сцены по трем координатным осям: 350 х 250 х 400. «Child park» содержит 27 тыс. треугольников, габариты сцены по трем координатным осям: 400 х 200 х 350. В ходе расчетов варьировались: разрешение изображения NCam хMCam, шаг световой сетки h и радиус интерполяционной сферы (приведен в шагах световой сетки r / h). Представлены времена расчета изображений по ОРЛТ, а также по МСС с ускорениями МУ1 - МУ4, описанными выше.

Таблица 1

Времена расчета сцены «Gazebo» (с)

NCam Х MCam h r / h ОРЛТ МУ1 МУ2 МУ3 МУ4

2,0 2,1 15,3 11,2 10,5 6,0

1024 х 1024 3,1 7,1 37,1 28,5 22,7 9,6

1,0 2,1 17,2 13,2 12,4 8,6

3,1 38,3 29,8 24,4 13,4

2,0 2,1 58,2 42,2 39,1 21,1

2048 х 2048 3,1 28,3 143,8 109,4 86,4 32,0

1,0 2,1 58,6 42,8 39,6 23,9

3,1 136,9 103,0 81,7 36,5

Таблица 2

Времена расчета сцены «Child park» (с)

NCam Х MCm h r / h ОРЛТ МУ1 МУ2 МУ3 МУ4

2,0 2,1 39,4 36,3 35,0 22,5

1024 х 1024 3,1 30,4 97,2 90,5 83,2 32,3

1,0 2,1 53,1 49,7 48,1 44,1

3,1 116,0 109,3 100,7 75,9

2,0 2,1 130,1 118,3 112,9 53,4

2048 х 2048 3,1 121,6 342,2 316,0 286,6 68,1

1,0 2,1 137,4 125,1 119,1 80,2

3,1 326,9 301,9 267,7 118,9

Для сцены «Gazebo» ускорение МУ2 позволяет сократить время расчета в среднем на 25 %, ускорение МУ3 - на 13 %, ускорение МУ4 - на 48 %. Применение всех ускорений суммарно дает в среднем уменьшение времени расчета на 65 %.

Для сцены «Child park» ускорение МУ2 позволяет сократить время расчета в среднем на 8 %, ускорение МУ3 - на 7 %, ускорение МУ4 - на 43 %. Применение всех ускорений суммарно дает в среднем уменьшение времени расчета на 50 %.

Таким образом, предложенные ускорения позволяют рассчитывать изображения по МСС в среднем не менее чем в два раза быстрее в сравнении с оригинальным МСС. Отметим следующие свойства ускорений МУ1-МУ4.

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

2. С увеличением радиуса интерполяционной сферы ускорения дают больший выигрыш по времени.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

3. С уменьшением шага световой сетки ускорения дают меньший выигрыш по времени.

Увеличение разрешения изображения и / или радиуса интерполяционной сферы приводит

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

Заключение

Генерация мягких теней - актуальная задача, которой посвящено множество исследований. Существует более 30 алгоритмов генерации мягких теней, которые мы не стали воспроизводить в данной работе в полном объеме. Область применения большинства алгоритмов генерации мягких теней ограничена: они не работают с полупрозрачными поверхностями, не предназначены для рекурсивной лучевой трассировки, страдают от графических артефактов или вычислительно трудоемки. Метод световых сеток специально создан для генерации мягких теней в рамках рекурсивного ОРЛТ, позволяет получать изображения, свободные от артефактов (в том числе для сцен, содержащих полупрозрачные объекты), и, кроме того, показывает асимптотически лучшие оценки по скорости расчета изображения в сравнении с ОРЛТ. Данная характеристика позволяет заключить, что МСС занимает промежуточное положение между группой очень быстрых методов, но страдающих от артефактов на рассчитанных изображениях, и методов, дающих точное решение, но производящих расчет очень медленно. Таким образом, МСС - это обогащение палитры методов расчета реалистических изображений.

* * *

Авторы благодарят Л. Ф. Васильеву за постоянное участие в обсуждениях и внимание к работе и В. А. Елагина, разработавшего древовидную организацию памяти для хранения фактически используемых световых точек, на поддержку которой тратится не более 1 % времени расчета, и которая уменьшает затраты памяти под хранение световой сетки на один-два порядка [Елагин, 2008].

Список литературы

Васильева Л. Ф., Дебелов В. А., Смирнова Г. Г. Расширение метода световых сеток для пространственных сцен с полупрозрачными поверхностями // Программирование. 2008. Т. 34. № 5. С. 1-10.

Дебелов В. А., Васильева Л. Ф., Новиков И. Е. Развитие метода световых сеток для алгоритма лучевой трассировки: аппроксимация решения, реализация на графическом акселераторе // Тр. 15-й междунар. конф. по компьютерной графике и ее приложениям Графикон'2005. Новосибирск: ИВМиМГ СО РАН. 2005. С. 355-359.

Елагин В. А. Экономия памяти при расчете изображений методом световых сеток // Материалы конференции-конкурса «Технологии Microsoft в теории и практике программирования». Новосибирск. 2008. С. 37-39.

Новиков И. Е. Сравнение двух алгоритмов генерации мягких теней // Программа и тез. докл. IX Всерос. конф. молодых ученых по мат. моделированию и информ. технологиям. Кемерово, 28-30 октября 2008 г. Новосибирск: ИВТ СО РАН. 2008. С. 87-88.

Роджерс Д. Алгоритмические основы машинной графики. М.: Мир. 1989. 504 с. Assarsson U., Akenine-Moller T. A Geometry-Based Soft Shadow Volume Algorithm Using Graphics Hardware // ACM Transactions on Graphics. 2003. Vol. 22. No. 3. P. 511-520.

Brabec S., Seidel H.-P. Single Sample Soft Shadows Using Depth Maps // Proc. Graphics Interface. Calgary, Alberta. 2002. P. 219-228.

Chan E., Durand F. An Efficient Hybrid Shadow Rendering Algorithm // Proc. 15th Eurographics Workshop on Rendering (Rendering Techniques'04). 2004. P. 185-196.

Cohen M. F., Wallace J. R. Radiosity and Realistic Image Synthesis. N.Y.: Academic Press. 1993.381 p.

Crow F. Shadow Algorithms for Computer Graphics // Computer Graphics. 1977. Vol. 11. No. 2. P. 242-247.

Debelov V. A., Sevastyanov I. M. Soft Shadows as Interpolation of Visibility // Future Generation Computer Systems. 2004. Vol. 20. No. 8. P. 1299-1315.

Drettakis G., Fiume E. A Fast Shadow Algorithm for Area Light Sources Using Backprojection. // Computer Graphics. 1994. P. 223-230.

Foley J., Van Dam A. et al. Computer Graphics Principles and Practice. 2nd ed. Addison Wesley. 1990.1175 p.

Glassner A. S. Space Subdivision for Fast Ray Tracing // IEEE Computer Graphics & Applications. 1984. Vol. 4. No. 10. P. 15-22.

Guennebaud G., Barthe L., Paulin M. Real-Time Soft Shadow Mapping by Backprojection // Proc. of Eurographics Symposium on Rendering. 2006. P. 227-234.

Guennebaud G., Barthe L., Paulin M. High-Quality Adaptive Soft Shadow Mapping // Computer graphics forum. 2007. Vol. 26. No. 3. P. 525-533.

Hasenfratz J.-M., Lapierre M., Holzschuch N., Sillion F. A Survey of Real-Time Soft Shadows Algorithms // Eurographics'03 State-of-The-Art Reports. 2003. P. 1-20.

Whitted T. An Improved Illumination Model for Shaded Display // Commun. ACM. 1980. Vol. 23. No. 6. P. 343-349.

Williams L. Casting Curved Shadows on Curved Surfaces // Computer Graphics. 1978. Vol. 10. No. 2. P. 270-274.

Woo A., Poulin P., Fournier A. A Survey of Shadow Algorithms // IEEE Computer Graphics and Applications. 1990. Vol. 10. No. 6. P. 13-32.

Материал поступил в редколлегию 10.03.2009

V. A. Debelov, I E. Novikov SOFT SHADOW GENERATION VIA RECURSIVE RAY TRACING

The problem of computational complexity for a calculation of hard shadows and generation of soft shadows via the light backwards recursive ray tracing algorithm is considered. Basing on exact formulations advantages and drawbacks of popular algorithms for hard shadow generation are demonstrated. Along with basic «shadow map» and «shadow volume» algorithms their modifications that allow to produce soft shadows are considered too. The light meshes method (LMM) is formulated, and algorithms developed for its acceleration are described. Also in the paper are defined the place and value of LMM in the whole palette of Whitted-like algorithms.

Keywords: photorealistic rendering, ray tracing, soft shadows, shadow map, shadow volume, light meshes method.

i Надоели баннеры? Вы всегда можете отключить рекламу.