37. Построение реалистических изображений. Метод Гуро закраски поверхностей (получение сглаженного изображения). - p1xelse/CG GitHub Wiki

Информация, рассказанная Куровым на консультации 09.06.2020

Модели закраски

Три способа закрашивания:

  1. Простая закраска
  2. Закраска по Гуро
  3. Закраска по Фонгу

1. Простая закраска

Мы всю грань закрашиваем одним уровнем интенсивности, одним цветом. Минимум вычислений, невысокое качество.

Простая закраска используется при выполнении трех условий:

  1. Предполагается, что источник находится в бесконечности. Падающие лучи параллельны друг другу. Это повлияет на расчёт диффузной составляющей, так как она зависит от угла падения. Для всех точек угол падения одинаков, значит диффузная составляющая одинакова. Всё прекрасно.
  2. Наблюдатель находится в бесконечности. Вектор, образованный вектором наблюдения взгляда и вектора зеркального отражения будет для всех точек одинаков, значит везде будет одинаковая зеркальная составляющая (интенсивность).
  3. Закрашиваемая грань является реально существующей, а не полученной в результате аппроксимации поверхности. Самое главное требование. Если мы (например, сферу) аппроксимировали гранями, и каждую грань закрашивали своим уровнем интенсивности, то одна грань одним цветом, а соседняя другим. Глаз видит резкий переход, который будет выглядеть, как ребро. Какие ребра могут быть у сферической поверхности? Использование простого подхода модели закрашивания приведет к тому, что изображение в корне не будет соответствовать исходному изображению. Исходное изображение - гладкая поверхность, а мы получаем многогранник.

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

2. Закраска по Гуро

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

Линейную - чтобы минимизировать вычисления. Если полученное качество изображения не устраивает, придется использовать другую функцию.

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

Вычисление нормали к грани: два подхода

Закраска по Гуро не предусматривает учет кривизны поверхности. При применении закраски по Гуро мы можем потерять рёбра и получить плоское изображение. Это может произойти, когда мы каждую смежную грань закрасим одним уровнем интенсивность (когда углы, образованные гранями, одинаковые).

Пример - детская книжка-раскладушка. Нормали получатся одинаковыми, интенсивности одинаковые, и каждая из трёх граней будет закрашена одним уровнем. Рёбер мы не увидим (а должны). Как решить эту проблему? Либо случайно внести изменения в полученные значения нормали (чтобы разные интенсивности получились), либо, если речь идет об аппроксимации поверхности, разбить на более мелкие грани - еще один шаг аппроксимации.

img

Закраска по Гуро хорошо сочетается с диффузной составляющей поверхности (матовой).

3. Закраска по Фонгу

Следующий шаг сделал Фонг. Он предложил таким же образом интерполировать не интенсивность, а нормали. Получится, что от точки к точке в пределах грани у нас нормали изменяются (учитывается криволинейный характер поверхности). Изображение получается более качественное, но трудоёмкость закраски по Фонгу будет в три с лишним раза выше. В Гуро, интерполируя интенсивность, мы сразу получаем нужны уровень интенсивности, а в Фонге, после того как получили нормаль в точке, нам еще только предстоит вычислить интенсивность.

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

Далее идет информация, нарытая Shlyapic до консультации.

Построение реалистических изображений

Включает как физические, так и психологические процессы.

При построении реалистического изображения необходимо:

  1. Учитывать оптические свойства поверхностей

  2. Воспроизводить рисунок на поверхности

  3. Воспроизводить неровности

  4. Учитывать, что поверхности отбрасывают тени.

  5. Учитывать восприятие окружающего мира человеческим глазом.

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

  1. Простая (на гранях резкий переход оттенков).

  2. По Гуро (сглаживание на основе интерполяции интенсивности).

  3. По Фонгу (сглаживание на основе интерполяции нормалей)

Однотонной закраской можно пользоваться при выполнении трёх условий:

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

Билинейная интерполяция интенсивностей - это определение значений ф-ции в точке, лежащей внутри какого-то интервала.

Экстерполяция - для точки вне интервала

Закраска Гуро - теория из шпор предшественников

Если при построении полигональной поверхности для каждой грани используется по одной нормали, то модель освещения создаёт изображение, состоящее из отдельных многоугольников.

Методом Гуро можно получить сглаженное изображение.

  1. Вычисление векторов нормалей к каждой грани.

  2. Вычисление векторов нормалей к каждой вершине грани (путём усреднения нормалей к граням).

  3. Вычисление интенсивностей в вершинах грани.

  4. Интерполяция интенсивности вдоль рёбер грани:

  1. Линейная интерполяция интенсивности вдоль скан. строки.

Закраска по Гуро хорошо сочетается с диффузным отражением.

Данный метод интерполяции обеспечивает лишь непрерывность значений интенсивности вдоль границ многоугольников, но не обеспечивает непрерывности изменения интенсивности.

Значит, возможно проявление полос Маха (см. ниже).

Недостаток: усреднение нормалей.

Поверхность закрашивается с одной интенсивностью. Будет выглядеть плоской.

Решение: если нужно сохранить острый переход, то не делается усреднение. Если нужно, чтобы ребро сгладилось, вводят доп. многоугольники.

Инкрементальное вычисление вдоль скан. строки

Закраска Гуро - теория из хайпового Роджерса (upd: Роджерс сосать, слил балл студенту (но я исправил, сейчас ок))

Если при построении полигональной поверхности для каждой грани используется по одной нормали, то модель освещения создаёт изображение, состоящее из отдельных многоугольников.

Методом Гуро можно получить слаженное изображение. Для того чтобы изобразить объект методом построчного сканирования, нужно в соответствии с моделью освещения рассчитать интенсивность каждого пиксела вдоль скан. строки. Нормали к поверхности аппроксимируются в вершинах многоугольников. Однако скан. строка не обязательно проходит через вершины многоугольника (см. рис. 5.11).

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

Рассмотрим, например, участок полигональной поверхности на след. рисунке.

Значение интенсивности в точке P определяется линейной интерполяцией интенсивности в точках Q и R. Для получения интенсивности в точке Q - пересечении ребра многоугольника со скан. строкой - нужно линейной интерполяцией интенсивностей A и B найти

где u = BQ/BA. Аналогично для получения интенсивности R линейно интерполируются интенсивности в вершинах B и C, т.е.

где w = CR/CB. Наконец, линейной интерполяцией по строке между Q и R находится интенсивность P, т.е.

где t = RP/RQ.

Значения интенсивности вдоль скан. строки можно вычислять инкрементально. Для двух пикселов в t1 и t2 на скан. строке

Вычитая, получим, что вдоль строки

В результате применения метода Гуро, можно увидеть проявление эффекта полос Маха. Это происходит потому, что такой метод интерполяции обеспечивает лишь непрерывность значений интенсивности вдоль границ многоугольников, но не обеспечивает непрерывности изменения интенсивности.

Ещё одна проблема метода Гуро иллюстрируется на рисунке (рис. a). Если нормали к вершинам B, C, D вычислить усреднением нормалей к многоугольникам, то они будут одинаково ориентированы, т.е. интенсивность в этих точках будет равной. При линейной интерполяции от B до D значение интенсивности получится постоянным, и поверхность на данном участке будет выглядеть плоской.

Для изображения плавного перехода в B, C и D необходимы дополнительные многоугольники (рис. b). Если же нужно сохранить резкие складки, то для предотвращения сглаживания требуется выборочное усреднение нормалей к поверхности.

Закраска Гуро лучше всего выглядит в сочетании с простой моделью с диффузным отражением.

Доп. контент (ну чисто на всякий случай)

Эффект полос Маха

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

Наблюдается, когда резко изменяется наклон кривой интенсивности. Если кривая интенсивности вогнута, то в этом месте поверхность кажется светлее, если выпукла - темнее.

Fan Fact (ну чисто так, поржать)