- •Содержание
- •Товарищи
- •Общие вопросы компьютерной графики
- •1. Понятие компьютерной графики. Связь с другими науками
- •2. Физические аспекты восприятия
- •3. Основные цветовые модели
- •6. Основные подходы к кодированию цвета и хранению растровых изображений
- •4. Векторная графика
- •Хранение и обработка растровых изображений
- •5. Растровые изображения и их характеристики
- •7. Сжатие изображений на основе дкп (алгоритм jpeg)
- •8. Фрактальное сжатие изображений. Алгоритм Малла
- •9. Сжатие изображений без потерь (алгоритм jpeg-ls)
- •10. Формат цифровой фотографии (raw)
- •11. Подавление шумов изображений
- •12. Интерполяция растровых изображений (масштабирование, поворот, изгиб)
- •13. Бинаризация изображений. Метод Оцу
- •14. Алгоритм Флойда-Стейнберга
- •15. Метод упорядоченных возбуждений
- •16. Имитация цветов за счёт увеличения разрешения растра (маскирование)
- •17. Равномерное выравнивание гистограммы
- •18. Неравномерное выравнивание гистограммы. Тональная и цветовая коррекция. Работа со светами и тенями
- •19. Работа с резкостью изображений. Метод нерезкой маски
- •20. Выделение границ на основе дифференциальных масок
- •21. Детектор краёв Кенни
- •22. Векторизация растровых изображений. Метод Хафа
- •23. Определитель прямых Барнса
- •24. Методы сегментации изображений. Модели описания сегментов
- •Двумерная растровая графика
- •25. Алгоритм Брезенхема для рисования отрезков
- •26. Алгоритм Брезенхема для рисования окружностей
- •27. Кривые Безье. Алгоритм де Костельжо
- •28. Алгоритмы рисования закрашенного многоугольника
- •Алгоритм со списком активных рёбер.
- •29. Алгоритмы заполнения произвольных областей
- •30. Рисование стилизованных примитивов (толщина и начертание линий, текстуры)
- •31. Растеризация текста. Шрифты
- •32. Важность и постановка задачи двумерного отсечения
- •33. Алгоритм Сазерленда-Коэна
- •34. Алгоритм разбиения средней точкой
- •35. FastClip алгоритм (быстрого отсечения)
- •36. Алгоритм Лианга-Барски
- •37. Алгоритм Кируса-Бека
- •38. Алгоритм Сазерленда-Ходжмена
- •39. Фрактальная графика
- •Трёхмерная графика
- •40. Координатный метод описания объектов. Обобщённые координаты. Матрицы преобразования координат
- •41. Проецирование. Виды координат (модельные, видовые, проекционные, экранные)
- •42. Аналитическая модель описания поверхностей
- •43. Векторная модель описания поверхностей
- •44. Воксельная модель описания поверхностей
- •45. Классификация способов визуализации (рендеринга) трёхмерных сцен
- •46. Алгоритм Робертса для многогранников
- •47. Алгоритм плавающего горизонта для отрисовки поверхностей
- •48. Алгоритм с сортировкой по глубине
- •49. Алгоритм z-буфера и построчного сканирования
- •50. Алгоритм Варнока
- •51. Алгоритм Вейлера-Айзертона
- •52. Модели отражения света и их использование при закраске
- •53. Методы закраски: монотонная закраска, метод Гуро и метод Фонга. Имитация микрорельефа (карты нормалей)
- •54. Моделирование теней
- •55. Метод трассировки лучей
- •Трудоёмкая операция нахождения ближайшей грани.
- •Возможная оптимизация метода:
- •Современные технологии компьютерной графики
- •56. Основные идеи OpenGl и DirectX. Расширения OpenGl
- •Очистка буферов id3dDevice::Clear
- •Задание сцены
- •57. Аппаратная архитектура графических ускорителей. Графический конвейер
- •58. Особенности скоростной обработки данных в графических ускорителях
- •59. Шейдеры
- •Нефотореалистичная компьютерная графика
- •60. Цели и задачи нефотореалистичной компьютерной графики. Артефакты и их классификация
- •61. Методы маскирования изображений
- •62. Маскирование образами (текст, точка, линия)
- •63. Построение мозаик
- •64. Построение штриховых иллюстраций и текстур
- •65. Рисование реалистичных отрезков
53. Методы закраски: монотонная закраска, метод Гуро и метод Фонга. Имитация микрорельефа (карты нормалей)
Методы закраски:
Монотонная закраска
Алгоритм:
Вычисляем нормаль к полигону
Вычисляем цвет
Рисуем закрашенный полигон полученным цветом
Достоинства:
Простой, как палка, не требует дополнительных вычислений.
Недостатки — связаны с вычислением нормали:
Невозможно моделировать тела вращения.
Метод себя плохо ведет
(наказать!), если источник освещения слишком близко расположен к поверхности. Это связано с тем, что угол падения и отражения — разный, а нормали одинаковые.
Закраска методом Гуро (немонотонная)
Алгоритм:
Вычисляется нормаль к грани
Вычисляется нормаль к каждой вершине путем усреднения нормалей для соответствующих граней.
Согласно закону освещения, для каждой вершины [треугольника] вычисляется интенсивность (цвет).
Используется модифицированный алгоритм рисования закрашенного многоугольника. В каждом пикселе значение цвета определяется как средневзвешенное значений на ребрах, точнее, в местах пересечения рёбер со сканирующей строкой. Интенсивность на ребрах получается путём усреднения интенсивности на вершинах.
Недостатки:
Баг метода: подносим источник света к центру прямоугольника, тогда весь прямоугольник будет залит одним цветом (поскольку в углах интенсивность освещения одинаковая), хотя центр должен быть освещён сильнее.
Закраска методом Фонга
Алгоритм
Отличается тем, что путем усреднения вычисляется нормаль к каждому пикселю полигона, а уже потом вычисляется освещение. Теперь все будет честно нарисовано, но дорогой ценой (N=(Nx,Ny,Nz) — вещественный вектор).
Достоинства:
Более качественная картинка.
Недостатки:
Ресурсоёмкость и понижение скорости
Оптимизация метода Фонга
Алгоритм
У тел вращения угол нормали меняется не сильно. Считаем (α, β) — насколько сильно отклоняется нормаль в точке отклонения от нормали ко всему полигону.
Создаем “карту” (матрицу), позволяющую из (α, β) получить N
Имитация микрорельефа:
Честное задание шершавой поверхности в виде множества полигонов
Недостаток: низкая скорость
Bump Mapping. Используется карта высот — аналог текстур, но хранящая не цвета, а поправки к координатам поверхностей (в перпендикулярном направлении).
Normal Mapping. Аналогично BM, но хранятся поправки к нормалям.
Displacement Mapping. Аналогично BM, но хранятся смещения в произвольном направлении.
Чем сложнее задаётся карта нормалей, тем тоньше получается рисунок, но и тем больше требуется ресурсов.
54. Моделирование теней
Методы:
Построение теней на землю. Перед основной отрисовкой все грани проецируются на землю и рисуются тёмным цветом.
Достоинства: простота
Недостатки: тень не падает на предметы и может оказаться “под” ними.
Использование расстояний
Размещаем камеру в точке освещения и делаем проекцию сцены. Получаем Z — расстояние от камеры до любой освещённой точки.
Помещаем камеру в её нормальное положение и запускаем алгоритм отрисовки. Для каждой точки по проекционной координате вычисляются мировые координаты, потом они переводятся в координаты с точки зрения источника, и проводится анализ освещённости: если Zпроекц. > Zбуфера, то точка находится в тени, иначе — освещена.
Метод теневых объёмов
Теневой объём — это фигура, образованная конечным числом усеченных трапеций, которая находится в тени. Всё, что внутри него — в тени. Для каждого пикселя можно посчитать количество объемов, в которые он попадает. Для каждого пикселя сцены можно проанализировать луч, идущий от камеры до объекта. Для него вычисляется, сколько раз он входит в теневой объём и сколько раз он выходит оттуда. Если количество входов равно количеству выходов, то точка освещена, иначе — в тени.
Алгоритм:
Отрисовка всей сцены, как будто она вся в тени. Используется Z-буфер.
Рисуются грани теневого объёма и для каждой из них определяется, она повёрнута к камере или от неё.
Заводится дополнительный буфер, где для каждого пикселя хранится число N теневых объёмов, в которые он попадает. Изначально N=0.
Если Z пикселя (из Z-буфера) больше, чем Z грани:
Если грань повёрнута к камере, то N++
Если грань повёрнута от камеры, то N--
Иначе N не изменяется.
Пиксели, у которых N == 0, рисуются без учета теней, поверх изображения
Недостатки:
Громоздкий метод со всех точек зрения
Использование информации о глубине (дополнительный буфер, много памяти)
