4. Методы построения реалистичных трехмерных изображений

4.6. Рендеринг Гуро и Фонга

 

 

Процесс воспроизведения (визуализации) объекта или сцены называется рендерингом (от английского “rendering воспроизведение, передача визуализации).  

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

 

Рис.4.20. Примеры синтеза объемныхфигур: а) однотоновое заполнение; б) закраска методом Гуро; в,г) закраска методом Фонга   

Для выполнения закраски методом Гуро необходимо провести разбиение объекта на полигоны. Если при построении полигональной поверхности для каждой грани используется по одной нормали, то создается изображение, состоящее из отдельных многоугольников (см.рис.4.20а). Методом Гуро можно получить сглаженное изображение (рис.4.20б). Нормали к поверхности аппроксимируются в вершинах многоугольников. По выбранной модели освещения определяется интенсивность цвета вершин многоугольника, а затем, с помощью интерполяционных формул, вычисляется интенсивность каждого пиксела внутри многоугольника. 

 

Рис. 4.21. Эффект полос Маха  

При внимательном рассмотрении объекта, закрашенного по методу Гуро, заметно проявление эффекта полос Маха (рис.4.21). Метод Гуро не всегда позволяет избежать резкого изменения интенсивности на граничных ребрах многоугольников, где и видны полосы Маха. Эффект полос Маха обусловлен латеральным торможением рецепторов глаза, реакция на свет которых подвергается воздействию соседних рецепторов. Рецепторы, расположенные непосредственно на границе перепада интенсивностей с более яркой стороны, подвергаются более сильному раздражению, чем те, которые находятся дальше от границы. Это объясняется тем, что они меньше затормаживаются своими соседями, находящимися со стороны, которая темнее. Аналогично, рецепторы, расположенные непосредственно на границе перепада интенсивности с более темной ее стороны, будут подвергаться меньшему воздействию, чем те, которые находятся в той же области дальше от границы.  

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

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

 

Рис. 4.22. Закраска методом Гуро   

Основной недостаток рендеринга Фонга – большие вычислительные затраты, так как для каждого пиксела, по известному вектору нормали, вычисляется значение интенсивности. Один из возможных подходов к сокращению количества вычислений предполагает использование так называемой карты отражений. Она представляет собой набор предварительно рассчитанных интенсивностей для определенного диапазона значений вектора нормали. В этом случае достаточно один раз вычислить карту отражений, а затем, по известному вектору нормали, лишь извлекать из нее значения интенсивности, не пересчитывая их.  

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

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

Рассмотрим более детально процесс закраски области ограниченной одним треугольником. Треугольник задается координатами своих вершин (А, В и С) (рис.4.22), по значениям которых определяют приращение координат для каждой стороны треугольника. Для метода Гуро задаются значения интенсивности в вершинах Ia, Ib, Ic. Необходимо вычислить интенсивность всех остальных точек внутри данного треугольника и на его ребрах. Для этого найдем интенсивность произвольно выбранной точки D внутри полигона.  

Определим приращения интенсивности света на один пиксел вдоль ребер треугольника:

Проведем через точку D сканирующую линию, параллельную горизонтальной оси. Она пересечет ребра треугольника в точках L и M. По приращениям интенсивности вдоль ребер определим интенсивность точек, принадлежащих этим ребрам.   

IM = IA+DIAB ·БПAM  интенсивность точки M

IL = IA+DIAC ·БПAL    интенсивность точки L  

Далее по аналогии с предыдущими действиями определим приращение интенсивности вдоль сканирующей прямой LM.  

DILM = (IL–IM)/LM приращение интенсивности вдоль прямой LM ( в данном случае LM=БПLM);  

Интенсивность света в точке D определим таким образом:

ID = IL+DILM ·LD интенсивность искомой точки.  

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

Наименьшая погрешность достигается при разбивке поверхности на прямоугольные треугольники с катетами, параллельными координатной оси, поскольку в этом случае большее приращение (БП) катета совпадает с его длинной.  

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

Например: IQ = IL+DILM+DILM+DILM  (см.рис.4.22)  

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

На рисунке 4.23а приведен пример попиксельной закраски прямоугольного треугольника при Ia=5, Ib=9, Ic=1. Значения интенсивностей света, полученных согласно описанным выше формулам, приведены на рис.4.23б.   

 

Рис.4.23. Пример реализации рендеринга Гуро   

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

Существует два основных подхода к параллельному рендерингу:  

*  композиция изображений, при которой каждый процесс рендеринга генерирует полноэкранное изображение части сложной сцены, а полное изображение получается наложением частичных изображений;  

*  разделение экрана, когда каждый процесс рендеринга генерирует полное изображение части экрана, а изображение всего экрана получается «склейкой» всех частичных изображений.  

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

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

Использование параллельного рендеринга позволяет реализовывать закраску трехмерных изображений в реальном времени.

Контрольные  вопросы.

1.  В чем состоит процедура рендеринга?  

2.  В каких случаях используют рендиринг Гуро и Фонга?  

3.  Какие вычислительные действия включает в себя рендеринг Гуро?  

4.  Как вычисляется интенсивность цвета точек согласно редеринга Фонга?

     Содержание