Читайте также:
|
|
Метод Гуро: Данный метод обеспечивает некоторую сглаженность освещённости в пределах одной грани и визуально смотрится лучше метода постоянной закраски при несущественном увеличении сложности вычислений. Для реализации метода освещённость вычисляется для каждой вершины грани, используя, например, модель освещённости, описанную в методе постоянной закраски. Для вычисления значения каждого пикселя грани используется билинейная интерполяция: значение освещённости сначала интерполируется по рёбрам грани, а затем между рёбрами грани. Пусть требуется вычислить значение освещённости в точке A (рис. 1). Пусть вершине v1 соответствует значение освещённости I1, а вершине v2 - значение освещённости I2. Обозначим искомую освещённость в точке A через IA. Тогда значение освещённости в точке A вычисляется по следующей формуле: IA = I1 + (I2 - I1) · (A - v1) / (v2 - v1) Если для этой формулы записать рекуррентное соотношение с учётом растеризации грани на плоскость проектирования, то вычисления значения освещённости можно значительно сократить, используя инкрементальные методы: IA+1 = IA + C, C = (I2 - I1) / N, где
IA+1 - значение освещённости в точке, следующей после точки A по вертикали; N - значение, которое вычисляется после выполнения перспективного преобразования по отношению к вершинам v1 и v2 как модуль разности между вертикальными координатами (Y) векторов v2 и v1. Для вычисления освещённости в точке C используется точно такая же формула, но вместо вершин v1 и v2 используются координаты точек A и B, а вместо значений освещённостей I1 и I2 используются значения освещённостей в точках A и B. Такой подход позволяет получить плавное изменение значения освещённости в пределах одной грани. Однако, метод Гуро имеет тот недостаток, что на границах граней значение освещённости терпит разрыв и визуально не обеспечивается плавного изменения значения освещённости на границах граней.
Метод Фонга: Для построения модели с гладкой функцией освещённости требуется, чтобы для этой модели было задано непрерывное поле единичных векторов нормали, но, так как модель состоит из граней, такое поле не может быть задано явным образом. Однако, это поле можно искуственно смоделировать, опираясь на нормали к каждой грани. Суть метода Фонга состоит в том, что для каждой точки грани вычисляется значение вектора нормали, используя билинейную интерполяцию. Таким образом, в методе Фонга интерполируются значения векторов нормалей, а не значения освещённостей, как в методе Гуро. Для реализации метода Фонга требуется иметь значения векторов нормалей для каждой вершины грани. Для вычисления значения вектора нормали n для произвольной вершины может использоваться следующая формула: n = (n1 + n2 +... + nk) / || n1 + n2 +... + nk ||, где nk - значение вектора нормали к k-й грани, которой принадлежит вершина с вычисляемой нормалью n. После того, как вычислено значение нормали для конкретной точки грани, можно вычислить освещённость для этой точки, используя, например, модель освещённости, описанную в методе постоянной закраски. Метод Фонга требует гораздо больше вычислений для каждого пикселя, чем метод Гуро (три сложения на пиксель), однако обеспечивает значительно лучшее качество изображения по сравнению с методом Гуро. Метод Фонга также устраняет недостаток метода Гуро - зависимость освещённости грани от её положения относительно наблюдателя.
Дата добавления: 2015-08-05; просмотров: 198 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Алгоритм отсечения Коэна-Сазерленда | | | Моделирование глобального освещения методом трассировки лучей (прямая и обратная трассировки) |