Метод определения областей проявления ступенчатого эффекта цветовых переходов на изображении при визуализации трехмерной сцены
Проблема возникновения ступенчатого эффекта цветовых переходов на изображении известна практически всем разработчикам систем визуализации, различные варианты ее решения предлагались начиная со времени появления первых графических приложений. Для устранения этого нежелательного эффекта прибегают к фильтрации изображения, носящей англоязычное название antialiasing (антиалиасинг), которую далее в данной статье мы будем называть сглаживанием. Также в этой статье будем использовать термин текстуры, или текстурные карты, в качестве синонима растрового изображения, наложенного на одну из поверхностей в трехмерной сцене.
Способы сглаживания, применяемые в современных САПР (AutoCAD, ArchiCAD, Autodesk Inventor, REALVIZ Image Modeler, КОМПАС, SolidWorks и др.), основываются на информации, получаемой из экранной плоскости. Такой подход используется в методах адаптивной дополнительной трассировки лучей, в трассировке лучей, распределенных регулярно по площади изображения, в методе случайного выбора точек дополнительной трассировки. Подходы эти различаются по размеру фильтра, его форме и алгоритму оперирования со входным подмножеством пикселов. Пример адаптивного разбиения изображения на области, подлежащие сглаживанию, приведен рис. 1, расчет выполнен программой Mental Ray.
Рис. 1. Пример определения областей на изображении алгоритмом, работающим в экранной плоскости
Красными точками показаны углы пикселов, куда трассируются лучи при определении областей на изображении, подлежащих сглаживанию. Как показано на рис. 1, недостатком алгоритмов сглаживания, работающих в экранной плоскости, является риск обнаружить не все области на изображении, которые необходимо сгладить.
Первые методы сглаживания были предложены в 1977 году Фрэнклином Кроувом. Различные методы сглаживания применяются до сих пор в большинстве приложений, где используется компьютерная графика. При сглаживании часто применяют дополнительную трассировку лучей в трехмерную сцену, чтобы получить более точную информацию о цвете в данной точке, повысив тем самым гладкость цветовых переходов в этой точке изображения. Такая операция называется суперсэмплированием.
Известные проблемы многих методов сглаживания заключаются в падении скорости визуализации и ухудшении качества картинки, выражающейся либо в ее размывании, либо в появлении дефектов на отдельных гранях объектов в сцене.
Рис. 2. Исходная сцена без сглаживания
Спектр применения тех или иных методов сглаживания довольно широк — от компьютерных игр до профессиональных пакетов трехмерной графики и САПР. При включении алгоритмов сглаживания время, требуемое для получения конечного результата, может возрасти на величину от 15% (современные графические видеоускорители) до нескольких раз (профессиональные пакеты трехмерной графики и САПР). Данный подход нацелен прежде всего на сокращение количества пикселов, подвергающихся обработке. По субъективным оценкам, он позволяет меньше размывать текстуры на объектах, а также отказаться от дополнительной трассировки поверхностей сцены в тех местах, где это не требуется. Вместо трассировки дополнительных лучей «вслепую» предлагается определять положение грани полигона в данном пикселе и в соответствии с величиной перекрытия ею площади пиксела выносить решение о вкладе данного полигона в цвет результирующего пиксела.
В этом подходе входное подмножество пикселов для фильтрации ограничено площадью видимых граней, вокруг которых необходимо провести дополнительную трассировку лучей в сцену, и площадью участков на текстурах, где были обнаружены цветовые разрывы. Это позволяет сглаживать только те области изображения, которые необходимо обработать. В отличие от традиционных подходов, где фильтр сглаживания работает в плоскости изображения и определяется размером, формой и внутренним алгоритмом усреднения цвета между рассматриваемыми пикселами, в предлагаемом подходе за счет использования дополнительной информации о геометрии сцены становится возможным:
- выделить только те области на изображении, где необходимо устранить ступенчатый эффект цветовых переходов;
- сократить объем данных, подаваемых на вход фильтра сглаживания.
Новизна предлагаемого подхода состоит в способе определения пикселов на изображении, позволяющем выделить только нужные пикселы для фильтра сглаживания.
В классических подходах (адаптивное распределение дополнительных лучей, распределение по регулярной сетке на изображении, случайное распределение, распределение по диску Пуассона, jittered-распределение) используется дополнительная трассировка лучей в сцену, основанная на предположении, что удастся найти все области на изображении, подлежащие сглаживанию, но на практике так получается далеко не всегда, что приводит к необходимости повышать настройки фильтра сглаживания, а это, в свою очередь, снижает производительность и в некоторых случаях вызывает нежелательное размытие изображения. Недостатком данных методов является риск не обработать некоторый участок на изображении фильтром сглаживания в том случае, если изображение делится на слишком большие участки и часть изображения, требующая обработки, может оказаться внутри данного участка и не будет замечена алгоритмом.
В отличие от большинства алгоритмов реализации сглаживания, к примеру, в компьютерных играх или в САПР, предлагается применять устранение ступенчатого эффекта лишь там, где это необходимо, вместо использования полноэкранного сглаживания. Благодаря заведомо меньшему числу пикселов, подвергающихся обработке, становится возможным уже при сравнительно небольшом количестве дополнительных лучей получить качество, на глаз идентичное классическим подходам с высокими настройками.
Обнаружение участков, которые необходимо сгладить, осуществляется по следующим критериям:
- контуры объектов;
- места цветового разрыва на текстурах;
- грани, вокруг которых есть цветовые разрывы.
Контуры объектов получаются непосредственно при рендеринге путем снятия черно-белых масок каждого объекта. Черный цвет — объект, белый — всё остальное пространство. Те области изображения, где цвет меняется с одного на другой, указывают на области, в которых производится сглаживание.
Для текстур применяется метод проверки на наличие цветовых разрывов, чтобы сгладить ступенчатый эффект там, где он может появиться, и оставить без изменений остальные части текстуры.
В сцене также могут быть такие объекты, в сетке которых одна или несколько граней являются разделителями по цвету, что может дать нежелательный ступенчатый эффект. Для устранения подобных артефактов предлагается брать черно-белую маску граней всей сцены, получая таким образом отпечаток всех граней видимой части сцены в экранной плоскости. Маска всех граней сцены в экранной плоскости представляет собой всю совокупность граней, которые могли бы стать местом наблюдения ступенчатого эффекта на изображении.
В результате общая площадь, подвергаемая обработке, состоит из:
- границ объектов;
- мест цветовых разрывов на текстурах, для которых включена фильтрация;
- некоторых граней в сцене, вокруг которых обнаружены цветовые разрывы.
В качестве примера рассмотрим некоторую тестовую сцену. Она представлена на рис. 2 без применения сглаживания.
Очевидно наличие ступенчатого эффекта. На рис. 3 показаны области, где проявляется ступенчатый эффект.
Рис. 3. Области, требующие обработки
Границы объектов определяются по индивидуальной маске для каждого объекта. На рис. 4 в качестве примера представлены маски двух объектов.
Ступенчатый эффект также может наблюдаться вокруг некоторых граней, и для этого нужно использовать маску всех граней, пример которой показан на рис. 5.
Рис. 4. Маски объектов
Можно заметить, что площадь черных линий на рис. 5 суммарно занимает лишь некоторую часть пикселов изображения. Таким образом, сокращается число пикселов, необходимых для перебора при сглаживании.
Рис. 5. Маска граней сцены в плоскости изображения
Рис. 6. Области применения фильтра сглаживания
Рис. 7. Результат сглаживания
На рис. 6 показана суммарная маска в плоскости изображения, по которой было произведено сглаживание.
Жирными линиями указаны области, подлежащие сглаживанию в любом случае. Серыми — сглаживание вдоль граней, если пользователь счел его необходимым. Следует заметить, что при трассировке лучей информация о видимости той или иной грани известна автоматически. На вход процедуры фильтрации попадают области лишь тех граней, которые видны наблюдателю, включая учет прозрачных материалов.
На рис. 7 представлен результат сглаживания. Текстурная карта не размылась и сохранила четкость, границы объектов стали более гладкими, цветовые разрывы между поверхностями разного цвета на сфере справа также были скорректированы.
Алгоритм работы предлагаемого подхода выглядит следующим образом:
- Трассировка первичного луча из глаза наблюдателя в сцену.
- Если есть попадание, тогда для каждой трехмерной сетки сохраняем индивидуальный контур путем получения маски объекта с последующим удалением внутренних областей маски.
- Если есть пересечение с гранью (с некоторой погрешностью ε), тогда для ближайшего к наблюдателю пересечения со сценой сохраняем маску этой грани. Сохраняем величину перекрытия площади пиксела.
- При фильтрации текстуры сравниваем цвет ближайших пикселов. Если разница в цвете превышает некоторую заранее заданную погрешность Rε, Gε, Bε, тогда данная область подлежит фильтрации.
- Осуществляется проход фильтром сглаживания по полученной маске сглаживания с возможным дополнительным сэмплированием. Для текстур дополнительное сэмплирование применяется в обязательном порядке.
***
В настоящей статье был рассмотрен подход, позволяющий за счет получения дополнительных данных из трехмерной сцены сократить подмножество пикселов, подлежащих обработке фильтром сглаживания. Как следствие, обработка фильтром сглаживания производится только в тех местах, где это необходимо, и не происходит принудительного размытия изображения там, где сглаживание проводить не требуется.