Exit

Уроки онлайн

Уровень

Закраска методом Фонга.

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

При закраске Фонга аппроксимация кривизны поверхности производится сначала в вершинах многоугольников путем аппроксимации нормали в вершине. После этого билинейной интерполяцией вычисляется нормаль в каждом пикселе. Например, снова обращаясь к рис. 11.10, получаем нормаль в линейной интерполяцией между A и B, в R - между B и C и, наконец, в P - между Q и R. Таким образом:

где

u=AQ/AB, w=BR/BC, t=QP/QR.

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

<p">

 

где индексы 1 и 2 указывают на расположение пискелов на строке.

На рис. 11.12 сравниваются однотонная закраска (слева), закраска Гуро (в центре), Фонга (справа). Модель освещения для левого и среднего торов включает рассеянный свет и диффузное отражение (уравнение (11.1)), а для правого - также зеркальное отражение, благодаря которому появляются блики (уравнение (11.5) с d=0, K=1). На рис. 11.13 сравниваются зеркальные блики при закраске Гуро и более реалистичной закраске Фонга.

Рис. 11.12. Сравнение методов закраски: слева - однотонная, в центре - Гуро, справа - Фонга.

       

 

         a                                                    b

 

Рис. 11.13. Сравнение зеркальных бликов: (а) закраска Гуро, (b) Фонга.

Хотя метод Фонга устраняет большинство недостатков метода Гуро, он тоже основывается на линейной интерполяции. Поэтому в местах разрыва первой производной интенсивности заметен эффект полос Маха, хотя и не такой сильный, как при закраске Гуро. Однако, как показал Дафф, иногда этот эффект проявляется сильнее у метода Фонга, например для сфер. Кроме того, оба метода могут привести к ошибкам при изображении невыпуклых многоугольников, например, таких, как на рис. 11.14. Первая сканирующая строка использует данные из вершин QRS, а вторая, лежащая ниже, берет также данные вершины P. Это может нарушить непрерывность закраски.

Рис. 11.14. Нарушение непрерывности закраски для невыпуклого многоугольника.

Также возникают трудности, когда любой из этих методов применяется при создании последовательности кинокадров. Например, закраска может значительно изменяться от кадра к кадру. Это происходит из-за того, что правило закраски зависит от поворотов, а обработка ведется в пространстве изображения. Поэтому, когда от кадра к кадру меняется ориентация объекта, его закраска (цвет) тоже изменяется, причем достаточно заметно. Дафф предлагает метод закраски Гуро и Фонга, инвариантный относительно поворота.

Рассмотрим отличия трех методов закраски - однотонной, Гуро и Фонга - на примере.

Пример 11.2. Закраска

Рассмотрим участок поверхности, изображенный на рис. 11.10. Уравнения четырех плоскостей:

где ось z - перпендикуляр к плоскости страницы, x направлена вправо, а y - вверх. Координаты точек В: (0.366, 1.366, 2).

Пусть вектор к точке наблюдения есть S(1, 1, 1) и единственный точечный источник расположен в бесконечности на положительной полуоси z, т. е. вектор падающего света равен L(0, 0, 1). Модель освещения задана уравнением (11.7), где d = 0, K = 1, Id = 1, Il = 10, n = 2, kS = 0.8,k= ka = 0.15. Свет падает вдоль оси z, поэтому направление отраженного света можно найти методом Фонга.

Рассмотрим однотонную закраску. Точка P лежит в многоугольнике 3. Из уравнения плоскости многоугольника 3 находим нормаль

Угол между нормалью и вектором падающего света есть

откуда следует, что угол паления составляет примерно 24.2°.

Из уравнении (11.9) - (11.11) имеем:

Единичный вектор наблюдения есть

С помощью этого значения найдем угол между вектором отражения и вектором наблюдения:

что приблизительно дает 57°.

Модель освещения (11.7) для точки Р дает

Для закраски Гуро необходимы векторы нормали в А, В и С на рис. 11.10. Аппроксимируя их усреднением нормалей к окружающим плоскостям, получаем

где n1, n2, n3, n4 выведены из уравнений соответствующих плоскостей. Единичные нормали суть

Единичные векторы отражения:

Интенсивности в А, В и С равны

На заданной сканирующей строке имеем u = AQ/AB = 0.4 и BR/BC = 0.7. Интерполируя, находим интенсивность в и R:

 

Точка Р на сканирующей строке расположена в = QP/QK = 0.5Интерполируя, определим интенсивность в Р:

 

При закраске Фонга нормаль в Р получается путем интерполяции нормалей в А. В, С. Затем эта нормаль используется для вычисления интенсивности Р. Единичные нормали в и суть

 

Интерполируя нормаль вдоль сканирующей строки, находим

 

Тогда единичный вектор отражения в Р есть

 

Интенсивность в Р равна

 

Сравним различные методы закраски:

однотонная: IP = 3.93

Гуро:         IP = 4.54

Фонга:       IP = 4.65