Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску
Треугольная сетка с заливкой Гуро с использованием модели отражения Фонга

Затенение Гуро , названное в честь Анри Гуро , представляет собой метод интерполяции, используемый в компьютерной графике для создания непрерывного затенения поверхностей, представленных полигональными сетками . На практике затенение по Гуро чаще всего используется для достижения непрерывного освещения на сетках треугольников путем вычисления освещения в углах каждого треугольника и линейной интерполяции полученных цветов для каждого пикселя, покрытого треугольником. Гуро впервые опубликовал эту технику в 1971 году. [1] [2] [3]

Описание [ править ]

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

Сравнение с другими методами затенения [ править ]

Сравнение плоской штриховки и штриховки Гуро.

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

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

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

  • Сферическая сетка с заливкой Гуро - обратите внимание на плохое поведение зеркального блика.

  • Еще одна сферическая сетка с очень большим количеством полигонов.

Затенение по Гуро использует линейную интерполяцию [ править ]

Сравнение затенения по Гуро (линейная интерполяция) и затенения не по Гуро (интерполяция с правильной перспективой)

Распространенное заблуждение, что затенение по Гуро - это любая интерполяция цветов между вершинами, включая, например, интерполяцию с правильной перспективой; исходная статья проясняет, что затенение Гуро - это, в частности, линейная интерполяция цвета между вершинами. [1] По умолчанию большинство современных графических процессоров используют интерполяцию с правильной перспективой между вершинами, которая дает другой результат, чем затенение по Гуро. Различия будут особенно заметны на полигонах, уходящих глубоко в вид, где различия между линейной интерполяцией и интерполяцией с правильной перспективой будут более заметными.

Полосы Маха [ править ]

Любая линейная интерполяция интенсивности вызывает производные разрывы, которые запускают полосы Маха , общий визуальный артефакт затенения Гуро.

См. Также [ править ]

  • Список распространенных алгоритмов затенения
  • Модель отражения Блинна – Фонга
  • Затенение по Фонгу

Ссылки [ править ]

  1. ^ a b Гуро, Анри (1971). Компьютерное отображение криволинейных поверхностей, докторская диссертация. Университет Юты.
  2. Гуро, Анри (1971). «Непрерывное затенение криволинейных поверхностей» (PDF) . Транзакции IEEE на компьютерах . С-20 (6): 623–629. DOI : 10.1109 / TC.1971.223313 .
  3. ^ Гуро, Анри (1998). «Непрерывное затемнение криволинейных поверхностей». В Розали Вулф (ред.). Семенная графика: новаторские усилия, которые сформировали поле . ACM Press. ISBN 1-58113-052-X.