Введение
Метод рендеринга компьютерной графики с использованием диффузного отражения
В 3D компьютерной графике радиосити – это применение метода конечных элементов для решения уравнения рендеринга для сцен с поверхностями, которые диффузно отражают свет. В отличие от методов рендеринга, использующих алгоритмы Монте-Карло (таких как трассировка пути), которые обрабатывают все типы световых путей, типичный радиосити учитывает только пути (представленные кодом "LD*E"), которые исходят из источника света и диффузно отражаются некоторое количество раз (возможно, ноль), прежде чем достичь глаза. Радиосити является алгоритмом глобального освещения в том смысле, что освещение, достигающее поверхности, поступает не только непосредственно от источников света, но и от других отражающих свет поверхностей. Радиосити не зависит от точки обзора, что увеличивает объем вычислений, но делает их полезными для любых точек обзора. Методы радиосити были впервые разработаны примерно в 1950 году в области теплопередачи. Позже они были усовершенствованы специально для задачи рендеринга компьютерной графики в 1984 году исследователями из Корнелльского университета и Университета Хиросимы. Известные коммерческие движки радиосити включают Enlighten от Geomerics (используется в играх, таких как Battlefield 3 и Need for Speed: The Run); 3ds Max; form•Z; LightWave 3D и Electric Image Animation System.
Визуальные характеристики
Включение расчетов радиозности в процесс рендеринга часто придает дополнительный элемент реализма готовой сцене, поскольку она имитирует явления реального мира. Рассмотрим простую сцену с комнатой. Изображение слева было отрисовано с помощью типичного рендерера прямого освещения. В этой сцене использованы три типа освещения, которые художник специально выбрал и разместил, чтобы добиться реалистичного эффекта: точечное освещение с тенями (размещено за окном для создания света, падающего на пол), окружающее освещение (без которого любая часть комнаты, не освещенная напрямую, была бы полностью темной) и всенаправленное освещение без теней (для уменьшения плоскостности окружающего освещения). Изображение справа было отрисовано с использованием алгоритма радиозности. Источником света является только одно изображение – небо за окном. Разница очевидна. Комната наполнена светом. На полу видны мягкие тени, а вокруг комнаты заметны тонкие световые эффекты. Более того, красный цвет ковра отразился от серых стен, придавая им слегка теплый оттенок. Ни один из этих эффектов не был специально выбран или разработан художником.
Обзор алгоритма радиозности
Каждая из поверхностей сцены, подлежащей рендерингу, разделяется на одну или несколько меньших поверхностей (патчей). Для каждой пары патчей вычисляется коэффициент видимости (также известный как форм-фактор) – коэффициент, описывающий, насколько хорошо патчи видят друг друга. Патчи, находящиеся далеко друг от друга или ориентированные под острым углом относительно друг друга, будут иметь меньшие коэффициенты видимости. Если другие патчи загораживают обзор, коэффициент видимости уменьшается или становится равным нулю, в зависимости от того, является ли перекрытие частичным или полным. Коэффициенты видимости используются в качестве коэффициентов в линейной системе уравнений рендеринга. Решение этой системы позволяет получить радиозность, или яркость, каждого патча, учитывая диффузные взаимные отражения и мягкие тени. Прогрессивная радиозность решает систему итеративно, используя промежуточные значения радиозности для патчей, соответствующие уровням отражений. То есть, после каждой итерации мы видим, как выглядит сцена после одного отражения света, после двух проходов – после двух отражений и так далее. Это полезно для получения интерактивного предварительного просмотра сцены. Кроме того, пользователь может остановить итерации, как только изображение станет достаточно качественным, вместо того чтобы ждать численной сходимости вычислений. Другой распространенный метод решения уравнения радиозности – метод "стрельбы радиозностью", который итеративно решает уравнение, "испуская" свет из патча с наибольшей энергией на каждом шаге. После первого прохода освещаются только те патчи, которые находятся в прямой видимости от излучающего света патча. После второго прохода освещается больше патчей, поскольку свет начинает отражаться по сцене. Сцена постепенно становится ярче и в конечном итоге достигает стабильного состояния.
on whether the occlusion is partial or total. The view factors are used as coefficients in a linear system of rendering equations. Solving this system yields the radiosity, or brightness, of each patch, taking into account diffuse interreflections and soft shadows. Progressive radiosity solves the system iteratively with intermediate radiosity values for the patch, corresponding to bounce levels. That is, after each iteration, we know how the scene looks after one light bounce, after two passes, two bounces, and so forth. This is useful for getting an interactive preview of the scene. Also, the user can stop the iterations once the image looks good enough, rather than wait for the computation to numerically converge. Another common method for solving the radiosity equation is "shooting radiosity," which iteratively solves the radiosity equation by "shooting" light from the patch with the most energy at each step. After the first pass, only those patches which are in direct line of sight of a light emitting patch will be illuminated. After the second pass, more patches will become illuminated as the light begins to bounce around the scene. The scene continues to grow brighter and eventually reaches a steady state.
Подходы к выборе образцов
Фактически, сами форм-факторы Fij не требуются ни в одном из уравнений обновления: ни для оценки общей интенсивности Σj Fij Bj, собранной со всей видимой поверхности, ни для оценки распределения излучаемой мощности Aj Bj. Вместо этого эти обновления можно оценить методами Монте-Карло, без необходимости явного вычисления форм-факторов. С середины 1990-х годов такие методы выборки стали наиболее распространенными при практических расчетах радиозности. Собранную интенсивность можно оценить, генерируя набор случайных точек в единичном круге, проецируя их на полусферу и определяя радиозность элемента, с которого пришел бы луч в данном направлении. Оценка общей собранной интенсивности – это просто среднее значение радиозностей, полученных для каждого луча. Аналогично, в формулировке мощности, мощность можно распределить, генерируя набор лучей из излучающего элемента тем же способом и распределяя мощность равномерно между всеми элементами, в которые попадает луч. По сути, это то же самое распределение, которое программа трассировки лучей использует при трассировке одного шага диффузного отражения назад, или которое программа двунаправленной трассировки лучей использует для выполнения одного шага диффузного отражения вперед при отображении источников света. Таким образом, метод Монте-Карло в некоторой степени объединяет оба подхода, ключевое различие заключается в том, что метод радиозности стремится создать достаточно точную карту освещенности всех поверхностей в сцене, а не только представление текущего вида.
Сокращение времени вычислений
Хотя в своей базовой форме предполагается, что время вычислений радиосити увеличивается квадратично с добавлением геометрии (поверхностей и патчей), это не обязательно так. Задачу радиосити можно переформулировать как задачу рендеринга сцены с текстурированием. В этом случае время вычислений увеличивается только линейно с количеством патчей (не учитывая сложные вопросы, такие как использование кэша). После коммерческого интереса к изображениям, улучшенным с помощью радиосити, но до стандартизации быстрого вычисления радиосити, многие архитекторы и графические художники использовали технику, неформально называемую "псевдо-радиосити". Затемняя области текстурных карт, соответствующие углам, стыкам и углублениям, и применяя их посредством самоизлучения или диффузного отображения, можно было создать эффект взаимодействия патчей, подобный радиосити, с помощью стандартного сканирующего рендерера (ср. с окклюзией окружающей среды). Статическая, предварительно вычисленная радиосити может отображаться в реальном времени с помощью Lightmaps на современных настольных компьютерах со стандартным графическим ускорением.
Преимущества
Одним из преимуществ алгоритма Radiosity является то, что его относительно просто объяснить и реализовать. Это делает его полезным алгоритмом для обучения студентов основам глобального освещения. Типичный рендерер прямого освещения уже содержит почти все алгоритмы (перспективные преобразования, текстурирование, отсечение невидимых поверхностей), необходимые для реализации радиосити. Для понимания или реализации этого алгоритма не требуется глубоких математических знаний.
Ограничения
Типичные методы радиозности учитывают только световые пути вида LD*E, то есть пути, начинающиеся от источника света и совершающие несколько диффузных отражений, прежде чем достичь глаза. Хотя существуют различные подходы к интеграции других эффектов освещения, таких как зеркальные и глянцевые отражения, методы, основанные на радиозности, как правило, не используются для решения полного уравнения рендеринга. Базовая радиозность также испытывает трудности при обработке резких изменений видимости (например, чётких теней), поскольку грубая, регулярная дискретизация на кусочно-постоянные элементы эквивалентна фильтру нижних частот в пространственной области. Дискретизация по разрывам использует информацию о событиях видимости для создания более разумной дискретизации.
Смущение в терминологии
Радиозити, возможно, был первым широко используемым алгоритмом рендеринга, учитывающим диффузное непрямое освещение. Более ранние алгоритмы рендеринга, такие как трассировка лучей в стиле Уиттеда, могли вычислять эффекты, такие как отражения, преломления и тени, но, несмотря на то, что это глобальные явления, эти эффекты обычно не назывались «глобальным освещением». В результате термины «диффузное межотражение» и «радиозити» стали смешиваться с понятием «глобальное освещение» в обиходе. Однако, это три различных понятия. Метод радиозити в контексте компьютерной графики происходит от (и по сути является тем же самым, что) метод радиозити в теплопередаче. В этом контексте радиозити – это общий радиационный поток (как отраженный, так и переизлученный), покидающий поверхность; это также иногда называют излучательной способностью. Вычисление радиозити, а не температуры поверхности, является ключевым аспектом метода радиозити, позволяющим применять линейные матричные методы для решения этой задачи.