Закраска методом Гуро
Если при построении полигональной поверхности для каждой грани используется по одной нормали, то модель освещения создает изображение, состоящее из отдельных многоугольников (рис. 25.1a).

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

Рассмотрим, например, участок полигональной поверхности на рис. 25.2. Значение интенсивности в точке P определяется линейной интерполяцией интенсивности в точках Q и R. Для получения интенсивности в точке Q — пересечении ребра многоугольника со сканирующей строкой — нужно линейной интерполяцией интенсивностей A и B найти IQ = uIA + (1 - u)IB, 0 <= u <= 1, где u = AQ/AB. Аналогично для получения интенсивности R линейно интерполируются интенсивности в вершинах B и C, то есть IR = wIB + (1 - w)Ic, 0 <= w <= 1, где w = BR/BC. Наконец, линейной интерполяцией по строке между Q и R находится интенсивность Р, то есть IP = tIQ + (1 - t)IR, 0 <= w <= 1, где t = QP/QR.
Значения интенсивности вдоль сканирующей строки можно вычислять инкрементально. Для двух пикселов в t1 и t2 на сканирующей строке IP2 = t2IQ + (1 - t2)IR IP1 = t1IQ + (1 - t1)IR.
Вычитая, получим, что вдоль строки IP2 = IP1 + (IQ - IR)(t2 - t1) = IP1 + It.
На рис. 25.1b показан результат применения закраски Гуро к полигональной аппроксимации лица, изображенного на рис. 25.1a. Видно, что качество изображения намного улучшилось, но при внимательном рассмотрении на рис. 25.1b заметно проявление эффекта полос Маха, например на скулах, вокруг глаз и на подбородке. Это происходит потому, что такой метод интерполяции обеспечивает лишь непрерывность значений интенсивности вдоль границ многоугольников, но не обеспечивает непрерывности изменения интенсивности. Обратите внимание также на то, что контуры лица, например глаз и носа, — многоугольники.
Еще одна проблема метода Гуро иллюстрируется на рис. 25.3a. Если нормали к вершинам B, C, D вычислить усреднением нормалей к многоугольникам, то они будут одинаково ориентированы, то есть интенсивность в этих точках будет равной. При линейной интерполяции от B до D значение интенсивности получится постоянным, и поверхность на данном участке будет выглядеть плоской.

Для изображения плавного перехода в B, C и D необходимы дополнительные многоугольники (рис. 25.3b). Если же нужно сохранить резкие складки, то для предотвращения сглаживания требуется выборочное усреднение нормалей к поверхности. В примере, показанном на рис. 25.3c, nB1вычисляется только для одной грани справа от B, аналогично получается nD1 и nD2. В то же время nC вычисляется как среднее для граней слева и справа от C. В этом случае в B и D получается острое ребро, а в C — плавный переход, как видно, например, на губах на рис. 25.1b.
Закраска Гуро лучше всего выглядит в сочетании с простой моделью с диффузным отражением, так как форма бликов при зеркальном отражении сильно зависит от выбора многоугольников, представляющих объект или поверхность.
Теоретическая часть
Понятия «рендеринг» и «моделинг» - одни из более употребляемых терминов компьютерной графики. Render в переводе с английского языка означает формировать изображения, визуалировать. Основной задачей любой программы рендеринга является вычисление освещенности и цвета произвольной точки трехмерной сцены. Задача эта очень непроста. Вычислительные методы компьютерной графики проделали довольно длинный путь эволюционного развития, прежде чем достигли современного уровня фотореалистичности синтезированных на компьютере изображений. Но прежде чем говорить о моделях освещенности, необходимо вкратце осветить физические основы самого процесса визуализации. Теоретические основы рендеринга заложены более 300 лет назад Исааком Ньютоном, предложившим корпусулярную теорию света и обосновавшем с помощью этой теории такие ключевые для рендеринга явления, как отражения (reflection) , преломление (refraction), рассеяние (diffusion, scattering). Другим «краеугольным камнем» в рендеринге является закон сохранения энергии (в данном случае энергии света). По сути дела рендеринга -это попытка решения (с разной степенью точности) некоего уравнения ,описывающего распространение света в трехмерной сцене, причем уравнение это учитывает только корпускулярные свойства света. Уравнения так и называются - уравнение рендеринга. В математическом представлении оно выглядит так:
L0(x, ) = Lc(x,) + ,Li(x,)( • )d
где L0 - свет, излучаемый поверхностью в точке х в направлении вектора w, Le - собственные «излучательные способности» поверхности в той же точке и в том же направлении, а выражение под знаком интеграла - это бесконечная сумма излучений, пришедших в точку поверхностей из пространственной полусферы и отраженных поверхностью в соответствии с ее «отражательной способностью», описываемой с помощью функции fr - функция эта настолько важна, что получила в теории рендеринга собственное название - bidirectional reflectance distribution function (BRDF) , что в переводе означает « двунаправленная функция распределения отражений». BRDF описывает отражательные оптические свойства поверхности, но, будучи математической абстракцией, не имеет физических измерений. В словесной интерпретации уравнение рендеринга выглядит так: освещенность в точке поверхности складывается из энергии лучей, пришедших напрямую от источника света и энергии лучей от тех же источников, но претерпевших отражения ( бесконечное число отражений) от других поверхностей в трехмерной сцене. Плюс собственные свойства поверхности, как источника света в- 3D- программах ( их рендерах) последнего поколения источником света может быть не только специальный объект ( как правило, или совсем не имеющий, или имеющий очень простую «геометрию»), но вообще любой объект в сцене.
визуализация гуро закраска графика
X2D = X3D - Ч
X3D Y2D = Y3D - Ч Y3D
Таким образом, мы получили образ создаваемого объекта. Далее решается проблема видимости ( или удаление невидимых поверхностей), которая заключается в следующем: объекты располагаются в виртуальном пространстве сцены на разном удалении от визуальной камеры. Наконец, все предварительные стадии завершены и настал черед самой трудоемкой с вычислительной точки зрения стадии рендеринга ( прослеживание распространения всех лучей света в трехмерной сцене) практически невозможно ( или целесообразно, так как потребует бесконечного времени) , все существующие методы - приближение с той или иной погрешностью к точному решению. Вот в этом и заключается математический аппарат и логическая последовательность процесса ренднринга.
Заполнение контура грани
Интерполированная интенсивность I в точке (X,Y) определяется исходя из пропорции
(I-I1)/(X-X1) = (I2-I1)/(X2-X1).
Отсюда
I = I1+(I2-I1) (X-X1)/ (X2-X1).
Значения интенсивностей I2 и I1 на концах горизонтального отрезка представляют собой интерполяцию интенсивности в вершинах:
(I1-Ib) / (Y-Yb) = (Ic-Ib) / (Yc-Yb) (I2-Ib) / (Y-Yb) = (Ia-Ib) / (Ya-Yb) Или I1= Ib+ (Ic-Ib) (Y-Yb) / (Yc-Yb) I2= Ib+(Ia-Ib) (Y-Yb) / (Ya-Yb)
При закраске Гуро сначала определяется интенсивность вершин многоугольника, а затем с помощью билинейной интерполяции вычисляется интенсивность каждого пиксела на сканирующей строке. Для того чтобы изобразить объект методом построчного сканирования, нужно в соответствии с моделью освещения рассчитать интенсивность каждого пиксела вдоль сканирующей строки. Нормали к поверхности аппроксимируются в вершинах многоугольников так. Однако сканирующая строка не обязательно проходит через вершины многоугольника (рис. 11.10).
О методе Гуро и его недостатках
Итак, Метод Гуро сочетает приличное качество картинки с относительно маленьким количеством вычислений и компактным набором данных, который суть есть простое расширении основной полигональной модели. Однако, имеется важных недостатков. Качество освещения с использованием метода Гуро сильно зависит от размера рисуемых многоугольников. Используется линейная интерполяция , так что световые пятна, такие, какими каждой стороны полигона, что выглядит весьма нереалистично. Еще одна проблема - Метод Гуро не является корректным с точки зрения перспективы, т.е. в некоторых случаях можно получить результат, зависящий от положения наблюдателя.
