Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Компьютерная графика.docx
Скачиваний:
5
Добавлен:
01.05.2025
Размер:
4 Мб
Скачать
☆

53. Методы закраски: монотонная закраска, метод Гуро и метод Фонга. Имитация микрорельефа (карты нормалей)

Методы закраски:

  • Монотонная закраска

    • Алгоритм:

  1. Вычисляем нормаль к полигону

  2. Вычисляем цвет

  3. Рисуем закрашенный полигон полученным цветом

    • Достоинства:

  • Простой, как палка, не требует дополнительных вычислений.

    • Недостатки — связаны с вычислением нормали:

  • Невозможно моделировать тела вращения.

  • Метод себя плохо ведет (наказать!), если источник освещения слишком близко расположен к поверхности. Это связано с тем, что угол падения и отражения — разный, а нормали одинаковые.

  • Закраска методом Гуро (немонотонная)

    • Алгоритм:

  1. Вычисляется нормаль к грани

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

  3. Согласно закону освещения, для каждой вершины [треугольника] вычисляется интенсивность (цвет).

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

    • Недостатки:

  • Баг метода: подносим источник света к центру прямоугольника, тогда весь прямоугольник будет залит одним цветом (поскольку в углах интенсивность освещения одинаковая), хотя центр должен быть освещён сильнее.

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

    • Алгоритм

  • Отличается тем, что путем усреднения вычисляется нормаль к каждому пикселю полигона, а уже потом вычисляется освещение. Теперь все будет честно нарисовано, но дорогой ценой (N=(Nx,Ny,Nz) — вещественный вектор).

    • Достоинства:

  • Более качественная картинка.

    • Недостатки:

  • Ресурсоёмкость и понижение скорости

  • Оптимизация метода Фонга

    • Алгоритм

  • У тел вращения угол нормали меняется не сильно. Считаем (α, β) — насколько сильно отклоняется нормаль в точке отклонения от нормали ко всему полигону.

  • Создаем “карту” (матрицу), позволяющую из (α, β) получить N

Имитация микрорельефа:

  • Честное задание шершавой поверхности в виде множества полигонов

    • Недостаток: низкая скорость

  • Bump Mapping. Используется карта высот — аналог текстур, но хранящая не цвета, а поправки к координатам поверхностей (в перпендикулярном направлении).

  • Normal Mapping. Аналогично BM, но хранятся поправки к нормалям.

  • Displacement Mapping. Аналогично BM, но хранятся смещения в произвольном направлении.

Чем сложнее задаётся карта нормалей, тем тоньше получается рисунок, но и тем больше требуется ресурсов.

54. Моделирование теней

Методы:

  • Построение теней на землю. Перед основной отрисовкой все грани проецируются на землю и рисуются тёмным цветом.

    • Достоинства: простота

    • Недостатки: тень не падает на предметы и может оказаться “под” ними.

  • Использование расстояний

    • Размещаем камеру в точке освещения и делаем проекцию сцены. Получаем Z — расстояние от камеры до любой освещённой точки.

    • Помещаем камеру в её нормальное положение и запускаем алгоритм отрисовки. Для каждой точки по проекционной координате вычисляются мировые координаты, потом они переводятся в координаты с точки зрения источника, и проводится анализ освещённости: если Zпроекц. > Zбуфера, то точка находится в тени, иначе — освещена.

  • Метод теневых объёмов

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

Алгоритм:

        1. Отрисовка всей сцены, как будто она вся в тени. Используется Z-буфер.

        2. Рисуются грани теневого объёма и для каждой из них определяется, она повёрнута к камере или от неё.

        3. Заводится дополнительный буфер, где для каждого пикселя хранится число N теневых объёмов, в которые он попадает. Изначально N=0.

          • Если Z пикселя (из Z-буфера) больше, чем Z грани:

            • Если грань повёрнута к камере, то N++

            • Если грань повёрнута от камеры, то N--

          • Иначе N не изменяется.

        4. Пиксели, у которых N == 0, рисуются без учета теней, поверх изображения

Недостатки:

  • Громоздкий метод со всех точек зрения

  • Использование информации о глубине (дополнительный буфер, много памяти)