Метод Гуро

Этот метод предназначен для создания иллюзии гладкой криволинейной поверхности, которая описана в виде многогранников или полигональной сетки с плоскими гранями. Ес­ли каждая плоская грань имеет один постоянный цвет, который определен в соответствии с учетом отражения, то разные цвета соседних граней очень заметны, и поверхность выгля­дит именно как многогранник. Казалось, этот дефект можно замаскировать за счет увеличе­ния количества граней при аппроксимации поверхности. Но зрение человека имеет способ­ность подчеркивать перепады яркости на границах смежных граней — такой эффект назы­вается эффектом полос Маха. Вследствие этого, для создания иллюзии гладкости нужно намного увеличить количество граней, что приводит к существенному замедлению визуа­лизации — чем больше граней, тем меньше скорость рисования объектов.

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

• Вычисляются нормали к каждой грани.

• Определяются нормали в вершинах. Нормаль в вершине определяется усреднением нормалей прилегающих граней (рис. 8.6).

 

 

Рис. 8.6. Нормаль в вершине а

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

Вектор нормали в вершине (а) равняется

 

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

 

 

Рис. 8.7. Заполнение полигона грани

 

Интерполированная интенсивность I в точке (X, У) определяется, исходя из пропорции

откуда

Значение интенсивности I1 и I2 на концах горизонтального отрезка вычислим путем интерполяции интенсивности в вершинах